summaryrefslogtreecommitdiffstats
path: root/lib/strings.nix
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2018-03-09 17:21:12 -0500
committerShea Levy <shea@shealevy.com>2018-03-09 17:21:31 -0500
commitb66d7dc0ce684197181a2a8ec0859470137507aa (patch)
tree5c2f9e4eb8f750dc7f6611ac8d30fe9da06bdd90 /lib/strings.nix
parentd3570a1e219b6aad2447e5e4eb4830369637ce55 (diff)
lib.isStorePath: Fix derivation detection
Diffstat (limited to 'lib/strings.nix')
-rw-r--r--lib/strings.nix9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/strings.nix b/lib/strings.nix
index 9cbd1494a2b5..e6df7d99cb2e 100644
--- a/lib/strings.nix
+++ b/lib/strings.nix
@@ -437,6 +437,13 @@ rec {
*/
fixedWidthNumber = width: n: fixedWidthString width "0" (toString n);
+ /* Check whether a value can be coerced to a string */
+ isCoercibleToString = x:
+ builtins.elem (builtins.typeOf x) [ "path" "string" "null" "int" "float" "bool" ] ||
+ (builtins.isList x && lib.all isCoercibleToString x) ||
+ x ? outPath ||
+ x ? __toString;
+
/* Check whether a value is a store path.
Example:
@@ -450,7 +457,7 @@ rec {
=> false
*/
isStorePath = x:
- builtins.isString x
+ isCoercibleToString x
&& builtins.substring 0 1 (toString x) == "/"
&& dirOf (builtins.toPath x) == builtins.storeDir;