diff options
Diffstat (limited to 'lib/types.nix')
-rw-r--r-- | lib/types.nix | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/types.nix b/lib/types.nix index ac84ef296110..77957a7763ba 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -176,7 +176,7 @@ rec { getSubOptions = elemType.getSubOptions; }; - submodule = opts: + submoduleWithExtraArgs = extraArgs: opts: let opts' = toList opts; inherit (import ./modules.nix) evalModules; @@ -188,13 +188,16 @@ rec { let coerce = def: if isFunction def then def else { config = def; }; modules = opts' ++ map (def: { _file = def.file; imports = [(coerce def.value)]; }) defs; - in (evalModules { inherit modules; args.name = last loc; prefix = loc; }).config; + args = extraArgs // { name = last loc; }; + in (evalModules { inherit modules args; prefix = loc; }).config; getSubOptions = prefix: (evalModules { modules = opts'; inherit prefix; # FIXME: hack to get shit to evaluate. - args = { name = ""; }; }).options; + args = extraArgs // { name = ""; }; }).options; }; + submodule = submoduleWithExtraArgs {}; + nixosSubmodule = nixos: args: mkOptionType rec { name = "submodule containing a NixOS config"; check = x: isAttrs x || isFunction x; |