Bootstrappable builds: how and why
8 points by pushcx
8 points by pushcx
I thought I understood Guix to use hex0 as the seed but still need a large bootstrap blob because driving hex0 in Guix still needs a Guile interpreter from the start...
Nix has the benefit of doing a basic exec to get started (although it doesn't and suffers the same problem), the basic builder in Guix is Guile so it needs that to even launch the hex0.
How will Guix get around this ?
Also curious about Germ vs https://github.com/jart/sectorlisp
Guix can do a "basic exec" just like Nix. All of the higher-level packaging machinery assumes that Guile is available, but you could use a different Scheme interpreter (like Germ) or even a completely different language (like kaem) for the first packages. You don't want to do that for too many packages, though, because it's much nicer to use said machinery.
The bootstrap version of Germ is a lot like SectorLISP, but without the more extreme limitations. For instance, Germ has integers while SectorLISP needs to represent numbers using cons or lambda (e.g., Church numerals). Both SectorLISP and Ribbit were big inspirations for Germ.
(I'm the goofy-looking guy in the picture from the article, BTW.)
Nice to meet you! I gave a talk about Guix + Nix (https://www.youtube.com/watch?v=oTsXNxMapj8) so I'm a big fan of the stage0 stuff. You can quote me by saying Jeremiah Orians probably deserves a nobel prize.