handle /nix/store edge case

Workaround for this error:

    error: access to absolute path '/nix/store' is forbidden in restricted mode
This commit is contained in:
zimbatm 2022-08-22 22:05:11 +02:00
parent 3d50f761b2
commit 0f4a3f5059
No known key found for this signature in database
GPG Key ID: 71BAF6D40C1D63D7

View File

@ -155,7 +155,14 @@ rec {
let
parent = builtins.dirOf p;
base = builtins.unsafeDiscardStringContext (builtins.baseNameOf p);
inNixStore = builtins.storeDir == toString parent;
in
builtins.pathExists p &&
(builtins.readDir parent).${builtins.unsafeDiscardStringContext base} == "directory";
# If the parent folder is /nix/store, we assume p is a directory. Because
# reading /nix/store is very slow, and not allowed in every environments.
inNixStore ||
(
builtins.pathExists p &&
(builtins.readDir parent).${builtins.unsafeDiscardStringContext base} == "directory"
);
}