diff options
Diffstat (limited to 'gnu/bootloader/grub.scm')
-rw-r--r-- | gnu/bootloader/grub.scm | 53 |
1 files changed, 22 insertions, 31 deletions
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index b99f5fa4f4..28e6cb1f5f 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,6 +36,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-2) #:export (grub-image grub-image? grub-image-aspect-ratio @@ -148,37 +150,26 @@ STORE-MOUNT-POINT is its mount point; these are used to determine where the background image and fonts must be searched for. SYSTEM must be the target system string---e.g., \"x86_64-linux\"." (define setup-gfxterm-body - ;; Intel and EFI systems need to be switched into graphics mode, whereas - ;; most other modern architectures have no other mode and therefore don't - ;; need to be switched. - (if (string-match "^(x86_64|i[3-6]86)-" system) - (string-append - " -" - (let ((gfxmode (and=> - (and=> config bootloader-configuration-theme) - grub-gfxmode))) - (if gfxmode - (string-append "set gfxmode=" (string-join gfxmode ";")) - "# Leave 'gfxmode' to 'auto'.")) - " - insmod video_bochs - insmod video_cirrus - insmod gfxterm - - if [ \"${grub_platform}\" == efi ]; then - # This is for (U)EFI systems (these modules are unavailable in the - # non-EFI GRUB.) If we don't load them, GRUB boots in \"blind mode\", - # which isn't convenient. - insmod efi_gop - insmod efi_uga - else - # These are specific to non-EFI Intel machines. - insmod vbe - insmod vga - fi -") - "")) + (let ((gfxmode + (or (and-let* ((theme (bootloader-configuration-theme config)) + (gfxmode (grub-gfxmode theme))) + (string-join gfxmode ";")) + "auto"))) + + ;; Intel and EFI systems need to be switched into graphics mode, whereas + ;; most other modern architectures have no other mode and therefore + ;; don't need to be switched. + + ;; XXX: Do we really need to restrict to x86 systems? We could imitate + ;; what the GRUB default configuration does and decide based on whether + ;; a user provided 'gfxterm' in the terminal-outputs field of their + ;; bootloader-configuration record. + (if (string-match "^(x86_64|i[3-6]86)-" system) + (format #f " + set gfxmode=~a + insmod all_video + insmod gfxterm~%" gfxmode) + ""))) (define (setup-gfxterm config font-file) (if (memq 'gfxterm (bootloader-configuration-terminal-outputs config)) |