summary refs log tree commit diff
path: root/pkgs/lib/modules.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/lib/modules.nix')
-rw-r--r--pkgs/lib/modules.nix10
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