about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authormatthewcroughan <matt@croughan.sh>2021-11-14 23:14:09 +0000
committermatthewcroughan <matt@croughan.sh>2022-05-06 15:42:52 +0100
commit4d9801a78fff121703c4ea4dcef8b6746973165c (patch)
treee4a917a0f6e0404e54d2fadf464885ba440355f8 /lib
parent70b3cbff57169566a22fb8df6a0fd3c3b9b21b6b (diff)
lib: add inPureEvalMode
This makes a value that is true if builtins does not contain the
currentSystem function, but false if it does.
Diffstat (limited to 'lib')
-rw-r--r--lib/default.nix2
-rw-r--r--lib/trivial.nix7
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/default.nix b/lib/default.nix
index 22eb5440c2824..e9d54e476d964 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -74,7 +74,7 @@ let
       info showWarnings nixpkgsVersion version isInOldestRelease
       mod compare splitByAndCompare
       functionArgs setFunctionArgs isFunction toFunction
-      toHexString toBaseDigits;
+      toHexString toBaseDigits inPureEvalMode;
     inherit (self.fixedPoints) fix fix' converge extends composeExtensions
       composeManyExtensions makeExtensible makeExtensibleWithCustomName;
     inherit (self.attrsets) attrByPath hasAttrByPath setAttrByPath
diff --git a/lib/trivial.nix b/lib/trivial.nix
index 18616a189c269..902c56a2d0aad 100644
--- a/lib/trivial.nix
+++ b/lib/trivial.nix
@@ -229,6 +229,13 @@ rec {
   */
   inNixShell = builtins.getEnv "IN_NIX_SHELL" != "";
 
+  /* Determine whether the function is being called from inside pure-eval mode
+     by seeing whether `builtins` contains `currentSystem`. If not, we must be in
+     pure-eval mode.
+
+     Type: inPureEvalMode :: bool
+  */
+  inPureEvalMode = ! builtins ? currentSystem;
 
   ## Integer operations