diff options
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/lib/modules.nix | 11 | ||||
-rw-r--r-- | pkgs/lib/trivial.nix | 10 | ||||
-rw-r--r-- | pkgs/lib/types.nix | 3 |
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; |