diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 7a8a751df9..0d54d453db 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -447,8 +447,14 @@ (define println (if (eq? 'init action) '() (previous-grub-entries))))) - (drvs -> (if (and grub? (memq action '(init reconfigure))) - (list sys grub grub.cfg) + + ;; For 'init' and 'reconfigure', always build GRUB.CFG, even if + ;; --no-grub is passed, because GRUB.CFG because we then use it as a GC + ;; root. See . + (drvs -> (if (memq action '(init reconfigure)) + (if grub? + (list sys grub.cfg grub) + (list sys grub.cfg)) (list sys))) (% (if derivations-only? (return (for-each (compose println derivation-file-name)