| 28 Oct 2025 |
somasis | what's the correct way to get pure evaluation when using nix repl? when not evaluating a flake, specifically. using --option pure-eval true doesn't seem to have an effect as builtins.currentSystem still returns "x86_64-linux" | 14:14:11 |
somasis | what's the correct way to get pure evaluation when using nix repl? when not evaluating a flake, specifically. using --option pure-eval true doesn't seem to have an effect as, builtins.currentSystem still returns "x86_64-linux" | 14:14:24 |
hexa | --pure-eval? | 14:23:07 |
somasis | didn't know that flag exists, but same result, builtins.currentSystem gives "x86_64-linux" :/ | 14:23:44 |
somasis | didn't know that flag existed, but same result, builtins.currentSystem gives "x86_64-linux" :/ | 14:23:49 |
jappie | $> nix repl --pure-eval
Lix 2.93.3
Type :? for help.
nix-repl> builtins.currentSystem
error: attribute 'currentSystem' missing
at «string»:1:10:
1| builtins.currentSystem
| ^
nix-repl>
| 14:24:21 |
somasis | huh... | 14:24:32 |
somasis | hmm okay that's not good | 14:24:39 |
somasis | hmm okay that's not good lol | 14:24:41 |
somasis | I didn't think nix repl -f . would cause that to differ, yet it does | 14:25:17 |
somasis | I didn't think nix repl -f . while in my config directory would cause that to differ, yet it does | 14:25:24 |
hexa | I suppose accessing the filesystem like that is impure, that's why nix copies flake repos to the store before evaling 😄 | 14:26:44 |
hexa | * I suppose accessing the filesystem like that is impure, and that's why nix copies flake repos to the store before evaling 😄 | 14:26:54 |
somasis | ah, yeah I guess it would have to do with that | 14:27:15 |
hexa | can you say why you need a pure repl? | 14:27:37 |
ekler | • --file ⟨#opt-file⟩ / -f file Interpret installables ⟨../../command-ref/new-cli/nix.md#installables⟩ as attribute paths relative to the Nix expression stored in file. If file is the character -, then a Nix expression will be read from standard input. Implies --impure.
| 14:27:41 |
hexa |
Implies --impure.
| 14:27:56 |
hexa | right at the very end | 14:28:01 |
ekler | yes, that's my point
| 14:28:14 |
somasis | oops :) | 14:28:35 |
somasis | today I've been playing around with trying to eliminate impurities from my config without using flakes. I've gotten there by trying nix flake check into doing its thing with a minimal flake.nix ({ outputs = import ./ {}; } and a well-written default.nix), but I wanted to poke around at it some more in nix repl | 14:29:47 |
somasis | today I've been playing around with trying to eliminate impurities from my config without using flakes. I've gotten there and eliminated impurities by tricking nix flake check into doing its thing with a minimal flake.nix ({ outputs = import ./ {}; } and a well-written default.nix), but I wanted to poke around at it some more in nix repl | 14:30:04 |
somasis | I guess there's still not reallly a way to actually do pure evaluation on a path from within the repl without flakes then... doing nix store add-path ~/src/puter and trying nix repl --pure-eval and import /nix/store/jldwja0ddd64hawb7qahhgknws11i1iy-puter, despite being a store path, gives the "access to absolute path ... is forbidden in pure eval mode" error | 14:52:11 |
somasis | I guess there's still not reallly a way to actually do pure evaluation on a path from within the repl without flakes then... doing nix store add-path ~/src/puter and trying nix repl --pure-eval and :l /nix/store/jldwja0ddd64hawb7qahhgknws11i1iy-puter, despite being a store path, gives the "access to absolute path ... is forbidden in pure eval mode" error | 14:52:33 |
Yureka (she/her) | you can do builtins.fetchGit | 15:05:24 |
Yureka (she/her) | with a rev | 15:05:26 |
Yureka (she/her) | on a local repo | 15:05:47 |
somasis | aha, that does work :) | 15:07:41 |
Yureka (she/her) | for example:
nix repl --pure-eval --expr "import (builtins.fetchGit { url = ./.; rev = \"$(git rev-parse HEAD)\"; } + "/flake.nix")"
| 15:09:43 |
Yureka (she/her) | * for example:
nix repl --pure-eval --expr "import (builtins.fetchGit { url = ./.; rev = \"$(git rev-parse HEAD)\"; } + \"/flake.nix\")"
| 15:10:02 |