From 8764758044b0425de54228d87cc68a4ed6d4d414 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 11 Feb 2014 14:39:46 -0500 Subject: [PATCH] Add option type for a submodule with extra arguments --- lib/types.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/types.nix b/lib/types.nix index ac84ef29611..77957a7763b 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;