about summary refs log tree commit diff
path: root/lib/trivial.nix
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2022-03-21 23:06:01 +0100
committerRobert Hensing <robert@roberthensing.nl>2022-03-21 23:14:10 +0100
commit84274cbc95b370bf8e38430453b48b7017671a8a (patch)
tree75ded95befa762cf6733c8895b50e490035ec488 /lib/trivial.nix
parent6a0b24b27675d03a7f24c124e6c145076104e869 (diff)
lib: Add toFunction
Diffstat (limited to 'lib/trivial.nix')
-rw-r--r--lib/trivial.nix19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/trivial.nix b/lib/trivial.nix
index c68bac902e913..52648125059d0 100644
--- a/lib/trivial.nix
+++ b/lib/trivial.nix
@@ -403,6 +403,25 @@ rec {
   isFunction = f: builtins.isFunction f ||
     (f ? __functor && isFunction (f.__functor f));
 
+  /*
+    Turns any non-callable values into constant functions.
+    Returns callable values as is.
+
+    Example:
+
+      nix-repl> lib.toFunction 1 2
+      1
+
+      nix-repl> lib.toFunction (x: x + 1) 2
+      3
+  */
+  toFunction =
+    # Any value
+    v:
+    if isFunction v
+    then v
+    else k: v;
+
   /* Convert the given positive integer to a string of its hexadecimal
      representation. For example: