Hi! Chris Marusich skribis: > Thank you very much for taking the time to respond! Now I have a better > idea of how to proceed. Sorry for the delay! That’s what you get for asking difficult questions. ;-) > ludo@gnu.org (Ludovic Courtès) writes: > >> Chris Marusich skribis: >> >>> I've noticed that the GuixSD mechanism is different from the NixOS >>> mechanism. In particular, NixOS uses an "install-grub" script (which is >>> specific to each system generation) to install grub, but GuixSD does >>> not. Is this difference intentional? >> >> Looking at >> , >> part of it seems to be concerned with the generation of grub.cfg, which >> is what (gnu system grub) does. >> >> It also does a couple more things, such as providing proper EFI support, >> and avoiding reinstalling GRUB when possible (whereas ‘guix system >> reconfigure’ currently reruns ‘grub-install’ each time, even when it’s >> not strictly needed.) >> >> So I don’t think it’s very different, after all. Or am I missing >> something? > > Yes, they both install grub, but the mechanism seems different. NixOS > generates a script for each system generation, which installs exactly > the right grub for that generation. Unless I'm mistaken, GuixSD does > not do that. Instead, the existing GuixSD mechanism seems to require an > operating system configuration file. GuixSD uses that to determine the > correct grub, which it then installs. Sure, but it seems to be equivalent in the end. >> Switching to a generations primarily means: (1) running the target’s >> activation script, (2) updating Shepherd services, and (3) updating >> grub.cfg. > > In addition to (3), don't we also need to install the grub software > itself? In general yes (there are cases where this is not needed, but let’s ignore them.) >> Of these (1) and (3) are currently easy to do on GuixSD. (Right? :-)) > > For both (1) and (3), the current GuixSD mechanism appears to require an > operating system configuration file. The output of ‘guix system build’ contains the ‘parameters’ file, which is enough to generate grub.cfg (see ‘previous-grub-entries’ in (guix scripts system)). However, the activation script is indeed missing. We can add it to the output of ‘guix system build’ by extending ‘system-service-type’: