* bug#55806: [PATCH] gnu: install: Add uvesafb service only on targets that support v86d.
2022-06-06 13:28 ` Josselin Poiret via Bug reports for GNU Guix
@ 2022-06-06 14:16 ` Josselin Poiret via Bug reports for GNU Guix
2022-06-06 16:09 ` pelzflorian (Florian Pelz)
0 siblings, 1 reply; 7+ messages in thread
From: Josselin Poiret via Bug reports for GNU Guix @ 2022-06-06 14:16 UTC (permalink / raw)
To: Josselin Poiret, Pavel Shlyak, 55806
* gnu/system/install.scm (%installation-services): Refactor into a
procedure, so that it can capture the system it's installing for.
Conditionally add uvesafb-service-type based on whether v86d is
supported by the target architecture.
(installation-os)[services]: Use the %installation-service procedure.
---
gnu/system/install.scm | 245 +++++++++++++++++++++--------------------
1 file changed, 128 insertions(+), 117 deletions(-)
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index e46c1d34dd..5e4215864e 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -31,8 +31,10 @@ (define-module (gnu system install)
#:use-module (guix store)
#:use-module (guix monads)
#:use-module (guix modules)
- #:use-module ((guix packages) #:select (package-version))
+ #:use-module ((guix packages) #:select (package-version supported-package?))
+ #:use-module (guix platform)
#:use-module ((guix store) #:select (%store-prefix))
+ #:use-module (guix utils)
#:use-module (gnu installer)
#:use-module (gnu system locale)
#:use-module (gnu services avahi)
@@ -305,7 +307,10 @@ (define uvesafb-service-type
"Load the @code{uvesafb} kernel module with the right options.")
(default-value #t)))
-(define %installation-services
+(define* (%installation-services #:key (system (or (and=>
+ (%current-target-system)
+ platform-target->system)
+ (%current-system))))
;; List of services of the installation system.
(let ((motd (plain-file "motd" "
\x1b[1;37mWelcome to the installation of GNU Guix!\x1b[0m
@@ -322,120 +327,126 @@ (define (normal-tty tty)
(define bare-bones-os
(load "examples/bare-bones.tmpl"))
- (list (service virtual-terminal-service-type)
-
- (service kmscon-service-type
- (kmscon-configuration
- (virtual-terminal "tty1")
- (login-program (installer-program))))
-
- (login-service (login-configuration
- (motd motd)))
-
- ;; Documentation. The manual is in UTF-8, but
- ;; 'console-font-service' sets up Unicode support and loads a font
- ;; with all the useful glyphs like em dash and quotation marks.
- (service documentation-service-type "tty2")
-
- ;; Documentation add-on.
- %configuration-template-service
-
- ;; A bunch of 'root' ttys.
- (normal-tty "tty3")
- (normal-tty "tty4")
- (normal-tty "tty5")
- (normal-tty "tty6")
-
- ;; The usual services.
- (syslog-service)
-
- ;; Use the Avahi daemon to discover substitute servers on the local
- ;; network. It can be faster than fetching from remote servers.
- (service avahi-service-type)
-
- ;; The build daemon. Register the default substitute server key(s)
- ;; as trusted to allow the installation process to use substitutes by
- ;; default.
- (service guix-service-type
- (guix-configuration (authorize-key? #t)
- (guix (current-guix))))
-
- ;; Start udev so that useful device nodes are available.
- ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for
- ;; regulations-compliant WiFi access.
- (udev-service #:rules (list lvm2 crda))
-
- ;; Add the 'cow-store' service, which users have to start manually
- ;; since it takes the installation directory as an argument.
- (cow-store-service)
-
- ;; Install Unicode support and a suitable font.
- (service console-font-service-type
- (map (match-lambda
- ("tty2"
- ;; Use a font that contains characters such as
- ;; curly quotes as found in the manual.
- '("tty2" . "LatGrkCyr-8x16"))
- (tty
- ;; Use a font that doesn't have more than 256
- ;; glyphs so that we can use colors with varying
- ;; brightness levels (see note in setfont(8)).
- `(,tty . "lat9u-16")))
- '("tty1" "tty2" "tty3" "tty4" "tty5" "tty6")))
-
- ;; To facilitate copy/paste.
- (service gpm-service-type)
-
- ;; Add an SSH server to facilitate remote installs.
- (service openssh-service-type
- (openssh-configuration
- (port-number 22)
- (permit-root-login #t)
- ;; The root account is passwordless, so make sure
- ;; a password is set before allowing logins.
- (allow-empty-passwords? #f)
- (password-authentication? #t)
-
- ;; Don't start it upfront.
- (%auto-start? #f)))
-
- ;; Since this is running on a USB stick with a overlayfs as the root
- ;; file system, use an appropriate cache configuration.
- (nscd-service (nscd-configuration
- (caches %nscd-minimal-caches)))
-
- ;; Having /bin/sh is a good idea. In particular it allows Tramp
- ;; connections to this system to work.
- (service special-files-service-type
- `(("/bin/sh" ,(file-append bash "/bin/sh"))))
-
- ;; Loopback device, needed by OpenSSH notably.
- (service static-networking-service-type
- (list %loopback-static-networking))
-
- (service wpa-supplicant-service-type)
- (dbus-service)
- (service connman-service-type
- (connman-configuration
- (disable-vpn? #t)))
-
- ;; Keep a reference to BARE-BONES-OS to make sure it can be
- ;; installed without downloading/building anything. Also keep the
- ;; things needed by 'profile-derivation' to minimize the amount of
- ;; download.
- (service gc-root-service-type
- (append
- (list bare-bones-os
- glibc-utf8-locales
- texinfo
- guile-3.0)
- %default-locale-libcs))
-
- ;; Machines without Kernel Mode Setting (those with many old and
- ;; current AMD GPUs, SiS GPUs, ...) need uvesafb to show the GUI
- ;; installer. Some may also need a kernel parameter like nomodeset
- ;; or vga=793, but we leave that for the user to specify in GRUB.
- (service uvesafb-service-type))))
+ (append
+ ;; Generic services
+ (list (service virtual-terminal-service-type)
+
+ (service kmscon-service-type
+ (kmscon-configuration
+ (virtual-terminal "tty1")
+ (login-program (installer-program))))
+
+ (login-service (login-configuration
+ (motd motd)))
+
+ ;; Documentation. The manual is in UTF-8, but
+ ;; 'console-font-service' sets up Unicode support and loads a font
+ ;; with all the useful glyphs like em dash and quotation marks.
+ (service documentation-service-type "tty2")
+
+ ;; Documentation add-on.
+ %configuration-template-service
+
+ ;; A bunch of 'root' ttys.
+ (normal-tty "tty3")
+ (normal-tty "tty4")
+ (normal-tty "tty5")
+ (normal-tty "tty6")
+
+ ;; The usual services.
+ (syslog-service)
+
+ ;; Use the Avahi daemon to discover substitute servers on the local
+ ;; network. It can be faster than fetching from remote servers.
+ (service avahi-service-type)
+
+ ;; The build daemon. Register the default substitute server key(s)
+ ;; as trusted to allow the installation process to use substitutes by
+ ;; default.
+ (service guix-service-type
+ (guix-configuration (authorize-key? #t)
+ (guix (current-guix))))
+
+ ;; Start udev so that useful device nodes are available.
+ ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for
+ ;; regulations-compliant WiFi access.
+ (udev-service #:rules (list lvm2 crda))
+
+ ;; Add the 'cow-store' service, which users have to start manually
+ ;; since it takes the installation directory as an argument.
+ (cow-store-service)
+
+ ;; Install Unicode support and a suitable font.
+ (service console-font-service-type
+ (map (match-lambda
+ ("tty2"
+ ;; Use a font that contains characters such as
+ ;; curly quotes as found in the manual.
+ '("tty2" . "LatGrkCyr-8x16"))
+ (tty
+ ;; Use a font that doesn't have more than 256
+ ;; glyphs so that we can use colors with varying
+ ;; brightness levels (see note in setfont(8)).
+ `(,tty . "lat9u-16")))
+ '("tty1" "tty2" "tty3" "tty4" "tty5" "tty6")))
+
+ ;; To facilitate copy/paste.
+ (service gpm-service-type)
+
+ ;; Add an SSH server to facilitate remote installs.
+ (service openssh-service-type
+ (openssh-configuration
+ (port-number 22)
+ (permit-root-login #t)
+ ;; The root account is passwordless, so make sure
+ ;; a password is set before allowing logins.
+ (allow-empty-passwords? #f)
+ (password-authentication? #t)
+
+ ;; Don't start it upfront.
+ (%auto-start? #f)))
+
+ ;; Since this is running on a USB stick with a overlayfs as the root
+ ;; file system, use an appropriate cache configuration.
+ (nscd-service (nscd-configuration
+ (caches %nscd-minimal-caches)))
+
+ ;; Having /bin/sh is a good idea. In particular it allows Tramp
+ ;; connections to this system to work.
+ (service special-files-service-type
+ `(("/bin/sh" ,(file-append bash "/bin/sh"))))
+
+ ;; Loopback device, needed by OpenSSH notably.
+ (service static-networking-service-type
+ (list %loopback-static-networking))
+
+ (service wpa-supplicant-service-type)
+ (dbus-service)
+ (service connman-service-type
+ (connman-configuration
+ (disable-vpn? #t)))
+
+ ;; Keep a reference to BARE-BONES-OS to make sure it can be
+ ;; installed without downloading/building anything. Also keep the
+ ;; things needed by 'profile-derivation' to minimize the amount of
+ ;; download.
+ (service gc-root-service-type
+ (append
+ (list bare-bones-os
+ glibc-utf8-locales
+ texinfo
+ guile-3.0)
+ %default-locale-libcs)))
+
+ ;; Specific system services
+
+ ;; Machines without Kernel Mode Setting (those with many old and
+ ;; current AMD GPUs, SiS GPUs, ...) need uvesafb to show the GUI
+ ;; installer. Some may also need a kernel parameter like nomodeset
+ ;; or vga=793, but we leave that for the user to specify in GRUB.
+ `(,@(if (supported-package? v86d system)
+ (list (service uvesafb-service-type))
+ '())))))
(define %issue
;; Greeting.
@@ -499,7 +510,7 @@ (define installation-os
(comment "Guest of GNU"))))
(issue %issue)
- (services %installation-services)
+ (services (%installation-services))
;; We don't need setuid programs, except for 'passwd', which can be handy
;; if one is to allow remote SSH login to the machine being installed.
--
2.36.1
^ permalink raw reply related [flat|nested] 7+ messages in thread