diff options
Diffstat (limited to 'pkgs/lib/modules.nix')
-rw-r--r-- | pkgs/lib/modules.nix | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/pkgs/lib/modules.nix b/pkgs/lib/modules.nix index aeabf640cc2..6626812076e 100644 --- a/pkgs/lib/modules.nix +++ b/pkgs/lib/modules.nix @@ -113,9 +113,17 @@ rec { value ) module; + delayModule = module: moduleApply { config = delayProperties; } module; + evalDefinitions = opt: values: + if opt ? type && opt.type.delayProperties then + map (delayPropertiesWithIter opt.type.iter opt.name) values + else + evalProperties values; + + selectModule = name: m: { inherit (m) key; } // ( @@ -243,7 +251,7 @@ rec { opt.extraConfigs; in if hasOpt && isOption opt then - let defs = evalProperties values; in + let defs = evalDefinitions opt values; in lib.addErrorContext "${eol }while evaluating the option '${addName name}'.${eol }${errorSource (modulesOf name)}${eol |