summary refs log tree commit diff
path: root/lib/options.nix
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2021-11-01 12:01:00 +0000
committerGitHub <noreply@github.com>2021-11-01 12:01:00 +0000
commitcc41bb585179fca8d8443e0ffb58c3a24458564d (patch)
tree51d1967cfd81307013894b4126ba8fdd5cee3946 /lib/options.nix
parent2b9973012c1d1f7f3e3457f2569f0517a97b1b81 (diff)
parent4559160c4f4eb55f9eee0cb6015e2a0f3fa80462 (diff)
downloadnixpkgs-cc41bb585179fca8d8443e0ffb58c3a24458564d.tar
nixpkgs-cc41bb585179fca8d8443e0ffb58c3a24458564d.tar.gz
nixpkgs-cc41bb585179fca8d8443e0ffb58c3a24458564d.tar.bz2
nixpkgs-cc41bb585179fca8d8443e0ffb58c3a24458564d.tar.lz
nixpkgs-cc41bb585179fca8d8443e0ffb58c3a24458564d.tar.xz
nixpkgs-cc41bb585179fca8d8443e0ffb58c3a24458564d.tar.zst
nixpkgs-cc41bb585179fca8d8443e0ffb58c3a24458564d.zip
Merge master into staging-next
Diffstat (limited to 'lib/options.nix')
-rw-r--r--lib/options.nix10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/options.nix b/lib/options.nix
index b3164181312..5d52f065af0 100644
--- a/lib/options.nix
+++ b/lib/options.nix
@@ -74,7 +74,7 @@ rec {
     apply ? null,
     # Whether the option is for NixOS developers only.
     internal ? null,
-    # Whether the option shows up in the manual.
+    # Whether the option shows up in the manual. Default: true. Use false to hide the option and any sub-options from submodules. Use "shallow" to hide only sub-options.
     visible ? null,
     # Whether the option can be set only once
     readOnly ? null,
@@ -180,7 +180,10 @@ rec {
           description = opt.description or (lib.warn "Option `${name}' has no description." "This option has no description.");
           declarations = filter (x: x != unknownModule) opt.declarations;
           internal = opt.internal or false;
-          visible = opt.visible or true;
+          visible =
+            if (opt?visible && opt.visible == "shallow")
+            then true
+            else opt.visible or true;
           readOnly = opt.readOnly or false;
           type = opt.type.description or null;
         }
@@ -192,8 +195,9 @@ rec {
         subOptions =
           let ss = opt.type.getSubOptions opt.loc;
           in if ss != {} then optionAttrSetToDocList' opt.loc ss else [];
+        subOptionsVisible = docOption.visible && opt.visible or null != "shallow";
       in
-        [ docOption ] ++ optionals docOption.visible subOptions) (collect isOption options);
+        [ docOption ] ++ optionals subOptionsVisible subOptions) (collect isOption options);
 
 
   /* This function recursively removes all derivation attributes from