Archived
1
0
Fork 0

bootloader: grub: Refactor eye-candy a bit.

* gnu/bootloader/grub.scm (eye-candy)[setup-gfxterm-body]: Define the GFXMODE
binding using AND-LET* instead of chained AND=>.  Add a comment about
supporting graphical mode on other systems than x86.  Generate configuration
string using FORMAT rather than STRING-APPEND.
This commit is contained in:
Maxim Cournoyer 2020-02-19 15:59:06 -05:00
parent aaffde38b5
commit 6794653e1b
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -36,6 +36,7 @@
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-2)
#:export (grub-image #:export (grub-image
grub-image? grub-image?
grub-image-aspect-ratio grub-image-aspect-ratio
@ -149,24 +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 background image and fonts must be searched for. SYSTEM must be the target
system string---e.g., \"x86_64-linux\"." system string---e.g., \"x86_64-linux\"."
(define setup-gfxterm-body (define setup-gfxterm-body
(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 ;; Intel and EFI systems need to be switched into graphics mode, whereas
;; most other modern architectures have no other mode and therefore don't ;; most other modern architectures have no other mode and therefore
;; need to be switched. ;; 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) (if (string-match "^(x86_64|i[3-6]86)-" system)
(string-append (format #f "
" set gfxmode=~a
"
(let ((gfxmode (and=>
(and=> config bootloader-configuration-theme)
grub-gfxmode)))
(if gfxmode
(string-append "set gfxmode=" (string-join gfxmode ";"))
"# Leave 'gfxmode' to 'auto'."))
"
insmod all_video insmod all_video
insmod gfxterm insmod gfxterm~%" gfxmode)
") "")))
""))
(define (setup-gfxterm config font-file) (define (setup-gfxterm config font-file)
(if (memq 'gfxterm (bootloader-configuration-terminal-outputs config)) (if (memq 'gfxterm (bootloader-configuration-terminal-outputs config))