about summary refs log tree commit diff
path: root/lib/modules.nix
diff options
context:
space:
mode:
authorSilvan Mosberger <contact@infinisil.com>2020-09-02 18:01:10 +0200
committerSilvan Mosberger <contact@infinisil.com>2020-11-30 23:51:23 +0100
commit3759a77fcda2e33f89023b8c6b1476e8fa413a8e (patch)
treeb2975b83a2b2aa30131f8963ca6def1bbf344cbc /lib/modules.nix
parent1e6a84b7af71f579f2467619f504d1cfe43bb3e9 (diff)
nixos/modules: Expose the internal module in the top-level documentation
Diffstat (limited to 'lib/modules.nix')
-rw-r--r--lib/modules.nix15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/modules.nix b/lib/modules.nix
index 9ff8f4701bb37..e3f7ca3581ca6 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -77,10 +77,15 @@ rec {
       # attribute.  These options are fragile, as they are used by the
       # module system to change the interpretation of modules.
       internalModule = rec {
-        _file = ./modules.nix;
+        # FIXME: Using ./modules.nix directly breaks the doc for some reason
+        _file = "lib/modules.nix";
 
         key = _file;
 
+        # These options are set to be internal only for prefix != [], aka it's
+        # a submodule evaluation. This way their docs are displayed only once
+        # as a top-level NixOS option, but will be hidden for all submodules,
+        # even though they are available there too
         options = {
           _module.args = mkOption {
             # Because things like `mkIf` are entirely useless for
@@ -90,13 +95,13 @@ rec {
             # a `_module.args.pkgs = import (fetchTarball { ... }) {}` won't
             # start a download when `pkgs` wasn't evaluated.
             type = types.lazyAttrsOf types.unspecified;
-            internal = true;
+            internal = prefix != [];
             description = "Arguments passed to each module.";
           };
 
           _module.check = mkOption {
             type = types.bool;
-            internal = true;
+            internal = prefix != [];
             default = check;
             description = "Whether to check whether all option definitions have matching declarations.";
           };
@@ -104,7 +109,7 @@ rec {
           _module.freeformType = mkOption {
             # Disallow merging for now, but could be implemented nicely with a `types.optionType`
             type = types.nullOr (types.uniq types.attrs);
-            internal = true;
+            internal = prefix != [];
             default = null;
             description = ''
               If set, merge all definitions that don't have an associated option
@@ -141,7 +146,7 @@ rec {
               }
             '';
             default = {};
-            internal = true;
+            internal = prefix != [];
             type = types.attrsOf (types.submodule {
               # TODO: Rename to assertion? Or allow also setting assertion?
               options.enable = mkOption {