diff --git a/lib/modules.nix b/lib/modules.nix index 92ddc8c5bc70..2468b6fbdd22 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -62,6 +62,8 @@ rec { ‘type’: A module system type representing the module set as a submodule, to be extended by configuration from the containing module set. + This is also available as the module argument ‘moduleType’. + ‘extendModules’: A function similar to ‘evalModules’ but building on top of the module set. Its arguments, ‘modules’ and ‘specialArgs’ are added to the existing values. @@ -74,6 +76,8 @@ rec { override existing configuration fundamentally requires a new fixpoint to be constructed. + This is also available as a module argument. + ‘_module’: A portion of the configuration tree which is elided from ‘config’. It contains some values that are mostly internal to the module system implementation. @@ -146,6 +150,7 @@ rec { config = { _module.args = { inherit extendModules; + moduleType = type; } // args; }; }; diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index aba3f08122f5..2f36d6107ca4 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -281,6 +281,11 @@ checkConfigError 'A definition for option .fun.\[function body\]. is not of type checkConfigOutput "b a" config.result ./functionTo/list-order.nix checkConfigOutput "a c" config.result ./functionTo/merging-attrs.nix +# moduleType +checkConfigOutput "a b" config.resultFoo ./declare-variants.nix ./define-variant.nix +checkConfigOutput "a y z" config.resultFooBar ./declare-variants.nix ./define-variant.nix +checkConfigOutput "a b c" config.resultFooFoo ./declare-variants.nix ./define-variant.nix + cat <