summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMikael Voss <mvs@nyantec.com>2025-03-05 13:08:41 +0100
committerMikael Voss <mvs@nyantec.com>2025-03-05 13:08:41 +0100
commit7a07cc0da9787e936a6b4099c1109906088d3868 (patch)
tree8624dca2143ca1a048231696862de7d2857a89d2 /lib
parentelectron-{24,27,28,29,30,31}-bin: remove (#384809) (diff)
downloadnixpkgs-7a07cc0da9787e936a6b4099c1109906088d3868.tar.gz
lib/strings: allow CA paths in isStorePath
Diffstat (limited to 'lib')
-rw-r--r--lib/strings.nix8
-rw-r--r--lib/tests/misc.nix10
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/strings.nix b/lib/strings.nix
index bcaaab9af4fb..7ee459f5b443 100644
--- a/lib/strings.nix
+++ b/lib/strings.nix
@@ -2434,7 +2434,13 @@ rec {
if isStringLike x then
let str = toString x; in
substring 0 1 str == "/"
- && dirOf str == storeDir
+ && (dirOf str == storeDir
+ # Match content‐addressed derivations, which _currently_ do not have a
+ # store directory prefix.
+ # This is a workaround for https://github.com/NixOS/nix/issues/12361
+ # which was needed during the experimental phase of ca-derivations and
+ # should be removed once the issue has been resolved.
+ || builtins.match "/[0-9a-z]{52}" str != null)
else
false;
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix
index e86c366d4ce4..fde2d44e3efe 100644
--- a/lib/tests/misc.nix
+++ b/lib/tests/misc.nix
@@ -537,6 +537,7 @@ runTests {
expr =
let goodPath =
"${builtins.storeDir}/d945ibfx9x185xf04b890y4f9g3cbb63-python-2.7.11";
+ goodCAPath = "/1121rp0gvr1qya7hvy925g5kjwg66acz6sn1ra1hca09f1z5dsab";
in {
storePath = isStorePath goodPath;
storePathDerivation = isStorePath (import ../.. { system = "x86_64-linux"; }).hello;
@@ -545,6 +546,12 @@ runTests {
nonAbsolute = isStorePath (concatStrings (tail (stringToCharacters goodPath)));
asPath = isStorePath (/. + goodPath);
otherPath = isStorePath "/something/else";
+
+ caPath = isStorePath goodCAPath;
+ caPathAppendix = isStorePath
+ "${goodCAPath}/bin/python";
+ caAsPath = isStorePath (/. + goodCAPath);
+
otherVals = {
attrset = isStorePath {};
list = isStorePath [];
@@ -557,6 +564,9 @@ runTests {
storePathAppendix = false;
nonAbsolute = false;
asPath = true;
+ caPath = true;
+ caPathAppendix = false;
+ caAsPath = true;
otherPath = false;
otherVals = {
attrset = false;