Repository navigation
Conversation
`--overlay <EXPR>` (repeatable) appends a Nix expression to the nixpkgs `overlays` argument on both sides of the comparison (#4). npb never parses it: the config and overlays together are one `config = …; overlays = …;` string spliced into the eval expression, and the eval key is now `<sha256 of that string>/<system>`. That is sound because every evaluator call now runs with `pure-eval = true`, so the string, tree and system are all an eval can depend on. The repro command echoes each overlay as a shell-quoted word. Pure mode also fixes an existing leak: npb never passed `overlays`, so nixpkgs applied any found in `~/.config/nixpkgs/overlays` or `<nixpkgs-overlays>` under a key that didn't account for them. It replaces `scrub_env`, which only covered `$SHELL`. Since pure mode won't read npb's temp expression file directly, nix-eval-jobs now imports it through a `fetchurl` locked to its SHA-256. Across a full eval of x86_64-linux, aarch64-linux and aarch64-darwin, the only drv that changes is `tests.fetchPypiLegacy.fetchSimple` (it branches on `inPureEvalMode`). The old three-character profile directories are never read again and age out under `--clean`, so no eval-cache format bump. The README section and `--help` text for `--overlay` are placeholders, since neither may contain AI-generated text. Assisted-by: Claude:opus-5.5
|
@me-and could you try this out and let me know if it works for your use case? I stopped short of adding a fully general evaluation config string argument because there were a couple tricky bits there, although I believe we could definitely add it later. And then the other deviation here is that, since we do still construct such a string internally, we just hash that string instead of normalizing it in some way (which would have had its own issues). |
|
I'm having a play now; it might take a few days before I can do some comprehensive testing. |
|
Although I've just done a relatively minimal test and, checking the build logs, it appears to be doing exactly what I'm after!
|
|
...and having spotted the error in my previous command ( Looking in the So that's all exactly what I'd expect in this scenario 🎉 |
|
Amazing! :) Hopefully I'll have some time in the next couple days to get this PR ready to merge and then make a v1.2.0 release. |
Resolves #4.