From fe6e3fe2a56aede1d5e04bab3281515c8df86ff8 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 25 Jun 2014 22:54:52 +0200 Subject: system: Support the addition of old entries in the GRUB menu. * gnu/system.scm (operating-system-grub.cfg): Add 'old-entries' parameter. Pass it to 'grub-configuration-file'. * gnu/system/grub.scm (grub-configuration-file): Add #:old-entries parameter. Honor it. --- gnu/system/grub.scm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'gnu/system') diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm index e789e4c591..85a9fca9ff 100644 --- a/gnu/system/grub.scm +++ b/gnu/system/grub.scm @@ -63,9 +63,12 @@ (define-record-type* (initrd menu-entry-initrd)) ; file name of the initrd as a gexp (define* (grub-configuration-file config entries - #:key (system (%current-system))) + #:key + (system (%current-system)) + (old-entries '())) "Return the GRUB configuration file corresponding to CONFIG, a - object." + object. OLD-ENTRIES is taken to be a list of menu +entries corresponding to old generations of the system." (define all-entries (append entries (grub-configuration-menu-entries config))) @@ -93,7 +96,14 @@ (define builder (($ _ linux) linux)) all-entries)) - #$@(map entry->gexp all-entries)))) + #$@(map entry->gexp all-entries) + + #$@(if (pair? old-entries) + #~((format port " +submenu \"GNU system, old configurations...\" {~%") + #$@(map entry->gexp old-entries) + (format port "}~%")) + #~())))) (gexp->derivation "grub.cfg" builder)) -- cgit v1.2.3