diff --git a/pkgs/lib/modules.nix b/pkgs/lib/modules.nix index 286178a0fa7..4c00728a9a5 100644 --- a/pkgs/lib/modules.nix +++ b/pkgs/lib/modules.nix @@ -11,17 +11,6 @@ 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 8af3474f2a6..b2304ff7a17 100644 --- a/pkgs/lib/trivial.nix +++ b/pkgs/lib/trivial.nix @@ -35,4 +35,14 @@ 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 6ddac61d91b..eac76917c2d 100644 --- a/pkgs/lib/types.nix +++ b/pkgs/lib/types.nix @@ -96,8 +96,7 @@ rec { path = mkOptionType { name = "path"; - # Hacky: there is no ‘isPath’ primop. - check = lib.traceValIfNot (x: builtins.unsafeDiscardStringContext (builtins.substring 0 1 (toString x)) == "/"); + check = lib.traceValIfNot isPath; }; listOf = types.list;