| 7 Apr 2026 |
zoë (she/her) | here's the nix.conf part | 17:39:44 |
zoë (she/her) | * | 17:39:55 |
llakala | repl-overlays was actually originally proposed as a cppnix feature and got bikeshedded by roberth and others for not being flakey enough | 17:40:04 |
zoë (she/her) | (and next release, nix repl --help will also have a section about them :p) | 17:40:38 |
llakala | In reply to @llakala:matrix.org repl-overlays was actually originally proposed as a cppnix feature and got bikeshedded by roberth and others for not being flakey enough see https://github.com/NixOS/nix/pull/10203 | 17:41:05 |
llakala | a very depressing issue to read through | 17:41:27 |
| @vigress9:matrix.org removed their display name V. 🏳️⚧️. | 17:46:14 |
| @vigress9:matrix.org left the room. | 17:47:05 |
kfiz | Fair enough. | 18:30:30 |
maralorn | Huh, hydra was running on lix for a while now? Any lessons learned from that? | 21:52:45 |
raitobezarius | what lesson? | 21:59:01 |
maralorn | Something between "the evaluator regularly crashed" and we saved tons of money because we could switch to a machine with much less ram. 😆 | 22:01:51 |
raitobezarius | i surmise that lix is currently less interesting at scale than cppnix given there's still optimizations we are not doing | 22:02:53 |
delroth | the builders run on lix, not the coordinator | 22:03:19 |
raitobezarius | the last time lix was used for a long time on the hydra build farm, i remember it was in response of a consistently crashing cppnix interpreter | 22:03:22 |
Jules Lamur | Hey, I don't understand why a nix-store -qR --include-outputs on a deriver does not include the outputs of dependencies. Could you help me understand what's happening and if that's the expected behavior?
Basically, the question is why does the last command not contains the output of bison (only the deriver)?
$ nix-instantiate --eval https://releases.nixos.org/nixos/25.11-small/nixos-25.11.8880.5a035534a428/nixexprs.tar.xz -A hello.drvPath --raw
/nix/store/0a8f9vx5sdwdx4a27axfkkjznj5navrq-hello-2.12.2.drv
$ nix-store -q -R --include-outputs /nix/store/0a8f9vx5sdwdx4a27axfkkjznj5navrq-hello-2.12.2.drv | grep bison
/nix/store/vgjfnqbxgxa8a5575bhq07nm35b2l31m-bison-3.8.2.tar.gz.drv
/nix/store/i7miyh7832lkyy229nipb5h6zg5n32rc-bison-3.8.2.drv
Does that even make sense to have a dependency on a deriver but not on its output?
| 22:14:44 |
raitobezarius | the recipe depends on the recipes of others, but not the outputs of others except if the recipe depends on the actual output to build itself | 22:19:16 |
raitobezarius | the output depends on the outputs of others, including the recipes | 22:19:22 |
raitobezarius | i'm not sure there's "one" good model of dependencies for .drv files | 22:20:56 |
raitobezarius | .drv files in the store are already an hack somewhat | 22:21:03 |
raitobezarius | one advantage i see not to make the bison output appear in that list is that this probably has consequences for nix copy | 22:21:36 |
raitobezarius | if you nix copy only the derivers, you may not want to copy the outputs of the dependencies of the derivers | 22:21:54 |
raitobezarius | but this could have been designed completely differently i guess? | 22:22:08 |
raitobezarius | ("copy as many prebuilt things as possible and the recipes for what is missing", etc.) | 22:22:19 |
Jules Lamur | I tried to write a small reproducer (with no dependencies on nixpkgs), but I failed to reproduce:
let
system = "x86_64-linux";
# just a basic C program that outputs whatever is in $myRefs env var to $out env var
builder = ./basic_builder;
in rec {
a = derivation {
inherit system builder;
name = "a";
};
b = derivation {
inherit system builder;
name = "b";
myRefs = [ a ]; # $myRefs is written by the builder in the output (so they are run-time deps only?)
};
c = derivation {
inherit system builder;
name = "c";
myFakeRefs = [ b ]; #myFakeRefs are not used by the builder, (so they are build-time deps only?)
};
}
And I get that result:
$ nix-store -q -R --include-outputs "$(nix-instantiate --eval --raw -A c.drvPath)"
/nix/store/bdv4b4s9wryp2cd951x276z17s7v1pi3-basic_builder
/nix/store/1rai7c3259jzzc9qj8jbs0yfwk1c6amx-a.drv
/nix/store/c4f5rm2pchf5b1vri68rpa2in03rnlwg-a
/nix/store/whfq9h0h0blyawwq0nd1qnsyagzm3nli-b.drv
/nix/store/gfs6f7kxal5a52ikndfq8fvfpmx0vz08-c.drv
/nix/store/ircx9amlbg2wlxycrcnsv76cv95fx8g1-b
/nix/store/m6gaqy1fh5hkmlippb5cxjx4l6a7ha98-c
| 22:24:45 |
raitobezarius | what if you use __structuredAttrs? | 22:26:20 |
raitobezarius | do you also reproduce with stdenv.mkDerivation ? | 22:26:35 |
Jules Lamur | I did not try stdenv.mkDerivation yet | 22:26:52 |
raitobezarius | it's possible that mkDerivation is doing a lot of work | 22:27:05 |
Jules Lamur | (still trying to process your previous comments 😁) | 22:27:06 |