On Tue, Jul 30, 2024 at 01:56:28PM -0400, Zack Weinberg wrote: > Is there a good way to investigate _why_ each of these packages is > considered necessary to build the system generation [...]
Yes, the source code of Guix is available here: https://git.savannah.gnu.org/cgit/guix.git/ ... and it's totally self-contained in that Git repo. As for specifics, I recommend asking on the #guix IRC channel or here. Generally, consider that building and making effective a Guix System generation requires diverse work to be performed. For example, file-systems and partitions may be created or changed. The bootloader will be changed. The initial ram disk will be built and installed. Networking configuration may be altered. User accounts and groups may be created, deleted, or changed. And so on. There are a lot of programs involved and most of them have run-time dependencies too. > [...] and, equally importantly, why they are _not_ considered > necessary by "guix gc"? The short answer is "to save disk space at the potential cost of increased network usage". First, read the brief documentation to learn about the garbage collector works, at a high level: https://guix.gnu.org/manual/devel/en/html_node/Invoking-guix-gc.html If you just want to stop these things from being garbage collected, you can run the guix-daemon with the argument "--gc-keep-outputs=yes", and maybe also "--gc-keep-derivations=yes": https://guix.gnu.org/manual/devel/en/html_node/Invoking-guix_002ddaemon.html Of course your space usage will increase. Your general question is frequently asked, here is a good discussion of the subject and the trade-offs involved in configuring the garbage collector: https://lists.gnu.org/archive/html/guix-devel/2018-07/msg00287.html https://lists.gnu.org/archive/html/help-guix/2018-09/msg00028.html I hope that helps!
