Screenshot of QEMU VM showing an ASCII Gentoo Logo + system info
I followed Mental Outlaw’s 2019 guide and followed the official handbook to get up-to-date instructions and tailored instructions for my system, the process took about 4 hours however I did go out for a nice walk while my kernel was compiling. Overall I enjoyed the process and learnt a lot about the Linux kernel while doing it.
I’m planning on installing it to my hardware soon, this was to get a feel for the process in a non-destructive way.
Interesting, looked at the Gentoo docs to understand USE flags. Nix has similar capabilities, where some packages expose configuration options that apply to the build, but it’s not a overtly named feature consistently applies across all packages. It seems that something like USE flags could be implemented rather easily by Nix but was either deemed not necessary or was an oversight. You can still change the build for any package but it might involve introspecting the package definition to figure out what to change so not meant as a first class mechanism like USE flags.
Edit: found this: https://github.com/NixOS/nixpkgs/issues/12877
USE flags have some inherent “issues” or rather downsides that make them non-options for some distributions.
First, they create a much larger number of package variants, simplified 2^(number of USE flags applicable to package). This is fine if you don’t want to supply binaries to your users. Second, the gain they bring to the average workstation is rather insignificant today. Users usually want all functionality available and not save 30 kb of RAM and then suddenly have to rebuild world because they find out they’re missing a USE flag that they suddenly need. Also, providing any kind of support for a system where the user doesn’t run the binaries you provided and maybe even changed dependencies (e.g. libressl instead of openssl) is probably impossible.
It’s very cool stuff if you want to build a system very specific to your needs and hardware, and I do believe that NixOS could have profited in some parts from it, but I don’t have specific ideas.
Yeah that thread i linked does talk about combinatorial explosion that would result in either a unmaintainable cache size or basically no caching at all of binaries. Your point about premature optimization is good. It makes me think that the seeming ignorance of USE flags by Nix was intentional.