My understanding of :guix: and :nixos: are that they explicitly pin the versions of absolutely everything & their transitive dependency graphs, all the way down to the compiler versions used to build a specific software commit. But how do they handle bootstrapping compilers?