summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/lib/modules.nix11
-rw-r--r--pkgs/lib/trivial.nix10
-rw-r--r--pkgs/lib/types.nix3
3 files changed, 13 insertions, 11 deletions
diff --git a/pkgs/lib/modules.nix b/pkgs/lib/modules.nix
index 4c00728a9a58..286178a0fa70 100644
--- a/pkgs/lib/modules.nix
+++ b/pkgs/lib/modules.nix
@@ -11,6 +11,17 @@ with import ./options.nix;
 with import ./properties.nix;
 
 rec {
+
+  # Unfortunately this can also be a string.
+  isPath = x: !(
+     builtins.isFunction x
+  || builtins.isAttrs x
+  || builtins.isInt x
+  || builtins.isBool x
+  || builtins.isList x
+  );
+
+
   importIfPath = path:
     if isPath path then
       import path
diff --git a/pkgs/lib/trivial.nix b/pkgs/lib/trivial.nix
index b2304ff7a17e..8af3474f2a67 100644
--- a/pkgs/lib/trivial.nix
+++ b/pkgs/lib/trivial.nix
@@ -35,14 +35,4 @@ rec {
     else if builtins.isAttrs x
       then deepSeqAttrs x y
       else seq x y;
-
-  isPath = val: with builtins; !(
-      isAttrs val
-   || isList val
-   || isInt val
-   || isString val
-   || isFunction val
-   || isBool val
-   || val == null
-  );
 }
diff --git a/pkgs/lib/types.nix b/pkgs/lib/types.nix
index eac76917c2d2..6ddac61d91bf 100644
--- a/pkgs/lib/types.nix
+++ b/pkgs/lib/types.nix
@@ -96,7 +96,8 @@ rec {
 
     path = mkOptionType {
       name = "path";
-      check = lib.traceValIfNot isPath;
+      # Hacky: there is no ‘isPath’ primop.
+      check = lib.traceValIfNot (x: builtins.unsafeDiscardStringContext (builtins.substring 0 1 (toString x)) == "/");
     };
 
     listOf = types.list;