diff options
author | Shea Levy <shea@shealevy.com> | 2014-02-11 14:39:46 -0500 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2014-02-11 14:39:46 -0500 |
commit | 8764758044b0425de54228d87cc68a4ed6d4d414 (patch) | |
tree | ddd80a68433ae15fed4390b6d75dfc7cd30a3505 | |
parent | ca1c5cfa8fff055c74786dbe0d2ca889ae462365 (diff) |
Add option type for a submodule with extra arguments
-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; |