-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Passing store paths into functions from other flakes causes errors in pure evaluation mode #11030
Comments
This issue has been mentioned on NixOS Discourse. There might be relevant details there: https://discourse.nixos.org/t/2024-07-03-nix-team-meeting-minutes-158/49097/1 |
Triaged 2024-07-03: This may be an IFD-related problem, considering this import in Could also be caused by recent-ish changes in Maybe it's only allowing the direct references to the imported outputs; should be allowing whole closures. Or maybe we should require
Two flakes is not necessary. One flake is enough to reproduce. Call chain is
This was not previously discovered because a lot of IFD only looks at the output, ignoring references. |
|
on newer nix versions (> 2.18) the "path:" settings will lead to evaluation errors when the flake uses symbolic links. a typical error message would be: `error: access to absolute path '/lib' is forbidden in pure evaluation mode (use '--impure' to override)` when `/lib` actually is `./lib`. When "path:" is replaced by just using the flake's path no evaluation error is shown. As per the man page of `nix flake` the "path" attribute reffers to the local path of the flake. This can just be removed (AFAIK) by referencing to the path as a positional argument. Possible related issues: NixOS/nix#11030 original PR introducing the error message NixOS/nix#9497 Signed-off-by: Florian Brandes <[email protected]>
Affected releases (non-exhaustive): Nix 2.20.6, Nix 2.21.2, Nix 2.22.1
Last unaffected release: Nix 2.19.4
It appears that recent versions of Nix have tightened pure evaluation mode. In the flake below, I pass a store path to a function from another flake, which used to work in older versions of Nix.
To reproduce, run
nix build
on the following flake:You should see
error: access to absolute path '/nix/store/bhgy1rz0hi7b9anbnyr6zjgp0jh5dwrg-step1' is forbidden in pure evaluation mode (use '--impure' to override)
.The text was updated successfully, but these errors were encountered: