!LemuOOvbWqRXodtSsw:nixos.org

NixOS Reproducible Builds

513 Members
Report: https://reproducible.nixos.org Project progress: https://github.com/orgs/NixOS/projects/30117 Servers

Load older messages


SenderMessageTime
9 Jun 2025
@raboof:matrix.orgraboofIIRC it was also not super easy to trigger10:50:07
@grimmauld:grapevine.grimmauld.deGrimmauld (any/all)i mean, ibus triggers it10:51:28
@grimmauld:grapevine.grimmauld.deGrimmauld (any/all)the goal is to find something minimal that triggers it10:51:40
@grimmauld:grapevine.grimmauld.deGrimmauld (any/all)and this was just a naive blind guess to see if it was easy, and turns out that no it isn't10:52:00
@raboof:matrix.orgraboofright, but iirc ibus needs a fair number of rebuilds to actually hit the problem11:15:47
@fricklerhandwerk:matrix.orgfricklerhandwerkThe main chunk of work happened in 2023 here: https://github.com/NixOS/nixpkgs/pull/227914 All of this stuff works now except cross-compiling GCC to 64 bit, which should merely involve setting the right flags11:39:05
@raboof:matrix.orgraboofI'll admit it's not clear to me how all that works in practice ;) - would that allow us to create, say, a qemu disk image with only sources (and those 256b) on it that'd when 'booted' bootstrap itself to a functional shell? or is that not the idea?13:42:14
@julienmalka:matrix.orgJulienI think the assumptions are: Nix + a running kernel + those 256b allows you to build all nixpkgs13:53:23
@julienmalka:matrix.orgJulienObviously the assumptions are broken at multiple places in nixpkgs when other binary blobs are downloaded13:53:50
@emilazy:matrix.orgemilyin particular I believe the goal is to produce a bootstrap tools tarball from those13:59:01
@emilazy:matrix.orgemilythat can replace the current "mystery meat" one13:59:11
@emilazy:matrix.orgemilyso that the bootstrap tools could be audited more easily13:59:22
@raboof:matrix.orgraboof wrt 'other binary blobs', ideally allowNonSource = false should help with that (assuming all such cases are properly marked, which is probably not fully the case ;) ) 14:00:09
@emilazy:matrix.orgemilybtw, there is non-Nix work on solving the "running kernel" part that goes through tiny bare metal kernels and something called "Fiwix" :) https://lwn.net/Articles/983340/14:00:15
@julienmalka:matrix.orgJulieninteresting thanks !14:00:32
@emilazy:matrix.orgemily(which makes me happy, since I always felt like the "running kernel" part made the whole exercise a little absurd)14:00:35
@emilazy:matrix.orgemily("an existing Nix binary" has the same problem for our minimal bootstrap. it's still an improvement over the bootstrap status quo though, don't get me wrong)14:01:05
@emilazy:matrix.orgemily (but a true bootstrap starts before you have any fancy build coordinator to hand) 14:01:20
@emilazy:matrix.orgemily(ofc ideally you get Nix going as soon as possible in that process :) )14:01:29
@emilazy:matrix.orgemilyanyway, yeah, the fundamental idea is that you have a tiny and auditable trusted binary seed, and then you can reproduce anything by "only" auditing that binary seed and a few millions of lines of code14:02:06
@emilazy:matrix.orgemilyincluding, like, several patched old versions of GCC and stuff like that14:02:14
@emilazy:matrix.orgemilyand really the distinction between 256 bytes of hand-written machine code and the next stage where they get to write it in hex with comments instead is not very "source vs. binary" IMO14:02:42
@emilazy:matrix.orgemilybut the general principle is good, even if the bootstrap chain needs heavily trimming down to be practically auditable14:02:56
@raboof:matrix.orgraboofI see guix similarly requires an existing kernel and guile for their bootstrap, so no opportunity to build nix from their bootstrap đŸ˜†14:05:17
@emilazy:matrix.orgemilyyeah, though the Guix community has a lot of overlap with the work on things like ^ I think14:05:55
@emilazy:matrix.orgemilyIMO, the ideal is that you get a nice purely-functional package manager running on something "simple" – say that Fiwix kernel14:06:18
@emilazy:matrix.orgemilythat way you can optimize the more manual chain to get to Nix/Guix/whatever as short as possible and then the rest of the way you get to use the nice tool14:06:39
@julienmalka:matrix.orgJulienThen we can go and bootstrap the hardware đŸ˜‡14:24:31
@emilazy:matrix.orgemilyfirst start with 256 transistors…14:25:58
@emilazy:matrix.orgemilyeventually you'll get an automated chip factory that processes purely functional specifications14:26:27

Show newer messages


Back to Room ListRoom Version: 6