mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-11 13:49:23 -05:00
system: grub: Adjust eye-candy to work on non-Intel systems.
* gnu/system/grub.scm (eye-candy): Accept additional 'system' argument. Add local 'setup-gfxterm-body' variable. Replace the 'load_video' grub function with 'setup_gfxterm', which includes everything in the 'if loadfont' form on Intel systems, but is empty on non-Intel. (grub-configuration-file): Pass 'system' to 'eye-candy.
This commit is contained in:
parent
c448bf7443
commit
6b173ac004
1 changed files with 28 additions and 17 deletions
|
@ -30,6 +30,7 @@ (define-module (gnu system grub)
|
|||
#:autoload (gnu packages imagemagick) (imagemagick)
|
||||
#:autoload (gnu packages compression) (gzip)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:export (grub-image
|
||||
grub-image?
|
||||
|
@ -152,10 +153,26 @@ (define* (grub-background-image config #:key (width 640) (height 480))
|
|||
(with-monad %store-monad
|
||||
(return #f)))))
|
||||
|
||||
(define (eye-candy config port)
|
||||
(define (eye-candy config system port)
|
||||
"Return in %STORE-MONAD a gexp that writes to PORT (a port-valued gexp) the
|
||||
'grub.cfg' part concerned with graphics mode, background images, colors, and
|
||||
all that."
|
||||
(define setup-gfxterm-body
|
||||
;; Intel 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)
|
||||
"
|
||||
set gfxmode=640x480
|
||||
insmod vbe
|
||||
insmod vga
|
||||
insmod video_bochs
|
||||
insmod video_cirrus
|
||||
insmod gfxterm
|
||||
terminal_output gfxterm
|
||||
"
|
||||
""))
|
||||
|
||||
(define (theme-colors type)
|
||||
(let* ((theme (grub-configuration-theme config))
|
||||
(colors (type theme)))
|
||||
|
@ -163,22 +180,15 @@ (define (theme-colors type)
|
|||
(symbol->string (assoc-ref colors 'bg)))))
|
||||
|
||||
(mlet* %store-monad ((image (grub-background-image config)))
|
||||
(return (and image #~(format #$port "
|
||||
function load_video {
|
||||
insmod vbe
|
||||
insmod vga
|
||||
insmod video_bochs
|
||||
insmod video_cirrus
|
||||
}
|
||||
(return (and image
|
||||
#~(format #$port "
|
||||
function setup_gfxterm {~a}
|
||||
|
||||
# Set 'root' to the partition that contains /gnu/store.
|
||||
search --file --set ~a/share/grub/unicode.pf2
|
||||
|
||||
if loadfont ~a/share/grub/unicode.pf2; then
|
||||
set gfxmode=640x480
|
||||
load_video
|
||||
insmod gfxterm
|
||||
terminal_output gfxterm
|
||||
setup_gfxterm
|
||||
fi
|
||||
|
||||
insmod png
|
||||
|
@ -189,10 +199,11 @@ (define (theme-colors type)
|
|||
set menu_color_normal=cyan/blue
|
||||
set menu_color_highlight=white/blue
|
||||
fi~%"
|
||||
#$grub #$grub
|
||||
#$image
|
||||
#$(theme-colors grub-theme-color-normal)
|
||||
#$(theme-colors grub-theme-color-highlight))))))
|
||||
#$setup-gfxterm-body
|
||||
#$grub #$grub
|
||||
#$image
|
||||
#$(theme-colors grub-theme-color-normal)
|
||||
#$(theme-colors grub-theme-color-highlight))))))
|
||||
|
||||
|
||||
;;;
|
||||
|
@ -229,7 +240,7 @@ (define entry->gexp
|
|||
#$linux #$linux-image-name (string-join (list #$@arguments))
|
||||
#$initrd))))
|
||||
|
||||
(mlet %store-monad ((sugar (eye-candy config #~port)))
|
||||
(mlet %store-monad ((sugar (eye-candy config system #~port)))
|
||||
(define builder
|
||||
#~(call-with-output-file #$output
|
||||
(lambda (port)
|
||||
|
|
Loading…
Reference in a new issue