diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-05-18 21:58:01 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-05-18 22:27:23 +0200 |
commit | d5b429abda948c21a61032a1da9d472410edaa90 (patch) | |
tree | 26387e555d386b9b565644e14acae73434daf47e /gnu/system | |
parent | 72b9d60df4723541e1a65f7a3d14abb757fbed97 (diff) |
system: Add 'grub-configuration' record.
* gnu/system/grub.scm (<grub-configuration>): New record type.
(grub-configuration-file): Add 'config' parameter; remove
#:default-entry and #:timeout. Honor CONFIG.
* gnu/system.scm (<operating-system>): Remove 'bootloader-entries'
field; remove default value for 'bootloader' field.
(operating-system-grub.cfg): Pass the 'bootloader' field to
'grub-configuration-file'.
* build-aux/hydra/demo-os.scm (bootloader): New field.
Diffstat (limited to 'gnu/system')
-rw-r--r-- | gnu/system/grub.scm | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm index 1893672a2a..e789e4c591 100644 --- a/gnu/system/grub.scm +++ b/gnu/system/grub.scm @@ -25,8 +25,13 @@ #:use-module (guix gexp) #:use-module (ice-9 match) #:use-module (srfi srfi-1) - #:export (menu-entry + #:export (grub-configuration + grub-configuration? + grub-configuration-device + + menu-entry menu-entry? + grub-configuration-file)) ;;; Commentary: @@ -35,6 +40,19 @@ ;;; ;;; Code: +(define-record-type* <grub-configuration> + grub-configuration make-grub-configuration + grub-configuration? + (grub grub-configuration-grub ; package + (default (@ (gnu packages grub) grub))) + (device grub-configuration-device) ; string + (menu-entries grub-configuration-menu-entries ; list + (default '())) + (default-entry grub-configuration-default-entry ; integer + (default 1)) + (timeout grub-configuration-timeout ; integer + (default 5))) + (define-record-type* <menu-entry> menu-entry make-menu-entry menu-entry? @@ -44,11 +62,13 @@ (default '())) ; list of string-valued gexps (initrd menu-entry-initrd)) ; file name of the initrd as a gexp -(define* (grub-configuration-file entries - #:key (default-entry 1) (timeout 5) - (system (%current-system))) - "Return the GRUB configuration file for ENTRIES, a list of -<menu-entry> objects, defaulting to DEFAULT-ENTRY and with the given TIMEOUT." +(define* (grub-configuration-file config entries + #:key (system (%current-system))) + "Return the GRUB configuration file corresponding to CONFIG, a +<grub-configuration> object." + (define all-entries + (append entries (grub-configuration-menu-entries config))) + (define entry->gexp (match-lambda (($ <menu-entry> label linux arguments initrd) @@ -67,12 +87,13 @@ set default=~a set timeout=~a search.file ~a/bzImage~%" - #$default-entry #$timeout + #$(grub-configuration-default-entry config) + #$(grub-configuration-timeout config) #$(any (match-lambda (($ <menu-entry> _ linux) linux)) - entries)) - #$@(map entry->gexp entries)))) + all-entries)) + #$@(map entry->gexp all-entries)))) (gexp->derivation "grub.cfg" builder)) |