From 4d9801a78fff121703c4ea4dcef8b6746973165c Mon Sep 17 00:00:00 2001 From: matthewcroughan Date: Sun, 14 Nov 2021 23:14:09 +0000 Subject: lib: add inPureEvalMode This makes a value that is true if builtins does not contain the currentSystem function, but false if it does. --- lib/default.nix | 2 +- lib/trivial.nix | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'lib') 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 -- cgit 1.4.1