summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/modules.nix10
-rw-r--r--lib/types.nix25
2 files changed, 20 insertions, 15 deletions
diff --git a/lib/modules.nix b/lib/modules.nix
index 040ccf68214..071809daa58 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -1,5 +1,9 @@
-with import ./.. {};
-with lib;
+with import ./lists.nix;
+with import ./trivial.nix;
+with import ./attrsets.nix;
+with import ./options.nix;
+with import ./debug.nix;
+with import ./types.nix;
 
 rec {
 
@@ -244,7 +248,7 @@ rec {
     let
       defaultPrio = 100;
       getPrio = def: if def.value._type or "" == "override" then def.value.priority else defaultPrio;
-      min = x: y: if x < y then x else y;
+      min = x: y: if builtins.lessThan x y then x else y;
       highestPrio = fold (def: prio: min (getPrio def) prio) 9999 defs;
       strip = def: if def.value._type or "" == "override" then def // { value = def.value.content; } else def;
     in concatMap (def: if getPrio def == highestPrio then [(strip def)] else []) defs;
diff --git a/lib/types.nix b/lib/types.nix
index 2b3aa23df2f..09b29a762e1 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -1,13 +1,11 @@
 # Definitions related to run-time type checking.  Used in particular
 # to type-check NixOS configurations.
 
-let lib = import ./default.nix; in
-
-with lib.lists;
-with lib.attrsets;
-with lib.options;
-with lib.trivial;
-with lib.modules;
+with import ./lists.nix;
+with import ./attrsets.nix;
+with import ./options.nix;
+with import ./trivial.nix;
+with import ./strings.nix;
 
 rec {
 
@@ -51,7 +49,7 @@ rec {
     bool = mkOptionType {
       name = "boolean";
       check = builtins.isBool;
-      merge = loc: fold (x: lib.or x.value) false;
+      merge = loc: fold (x: y: x.value || y) false;
     };
 
     int = mkOptionType {
@@ -71,7 +69,7 @@ rec {
     separatedString = sep: mkOptionType {
       name = "string";
       check = builtins.isString;
-      merge = loc: defs: lib.concatStringsSep sep (getValues defs);
+      merge = loc: defs: concatStringsSep sep (getValues defs);
     };
 
     lines = separatedString "\n";
@@ -85,7 +83,7 @@ rec {
     attrs = mkOptionType {
       name = "attribute set";
       check = isAttrs;
-      merge = loc: fold (def: lib.mergeAttrs def.value) {};
+      merge = loc: fold (def: mergeAttrs def.value) {};
     };
 
     # derivation is a reserved keyword.
@@ -117,7 +115,7 @@ rec {
 
     attrsOf = elemType: mkOptionType {
       name = "attribute set of ${elemType.name}s";
-      check = x: isAttrs x && all elemType.check (lib.attrValues x);
+      check = x: isAttrs x && all elemType.check (attrValues x);
       merge = loc: defs:
         zipAttrsWith (name: elemType.merge (loc ++ [name]))
           # Push down position info.
@@ -179,7 +177,10 @@ rec {
     };
 
     submodule = opts:
-      let opts' = toList opts; in
+      let
+        opts' = toList opts;
+        inherit (import ./modules.nix) evalModules;
+      in
       mkOptionType rec {
         name = "submodule";
         check = x: isAttrs x || builtins.isFunction x;