summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorRutherther <rutherther@ditigal.xyz>2026-01-22 13:27:13 +0100
committerRutherther <rutherther@ditigal.xyz>2026-01-22 13:27:13 +0100
commit7c0cd7e45b0240b842b4f3e767599501eac42ee1 (patch)
tree3f5aab4b08d0fdfe1728be24f3250384ab44f9d2 /gnu
parent4e2de18be2c7f7701c00877e05c0b587d03ac4d1 (diff)
parentd58da8a56b75af73a7b5466f7ef8a81679713aa3 (diff)
Merge branch 'version-1.5.0'
Change-Id: Id73c0c74600a3da3373b3a37236b505af65bfe31
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/linux-boot.scm73
-rw-r--r--gnu/installer/kernel.scm3
-rw-r--r--gnu/installer/newt/kernel.scm2
-rw-r--r--gnu/installer/newt/network.scm24
-rw-r--r--gnu/installer/newt/partition.scm29
-rw-r--r--gnu/installer/newt/services.scm18
-rw-r--r--gnu/local.mk8
-rw-r--r--gnu/packages/jemalloc.scm2
-rw-r--r--gnu/packages/llvm.scm6
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/patches/emacs-gnus-desktop-notify-fix-notifications.patch76
-rw-r--r--gnu/packages/patches/emacs-gnus-desktop-notify-rescan.patch37
-rw-r--r--gnu/services/base.scm21
-rw-r--r--gnu/services/desktop.scm9
-rw-r--r--gnu/services/xorg.scm10
-rw-r--r--gnu/system/examples/desktop.tmpl18
-rw-r--r--gnu/system/install.scm446
17 files changed, 475 insertions, 313 deletions
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 61fa6716dba..e0743eae55a 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -46,7 +46,26 @@
46 make-static-device-nodes 46 make-static-device-nodes
47 configure-qemu-networking 47 configure-qemu-networking
48 48
49 boot-system)) 49 boot-system
50
51 linux-console
52
53 linux-console?
54 linux-console-device
55 linux-console-can-read?
56 linux-console-can-write?
57 linux-console-can-unblank?
58 linux-console-enabled?
59 linux-console-preferred?
60 linux-console-primary?
61 linux-console-printk?
62 linux-console-braille?
63 linux-console-safe-when-cpu-offline?
64 linux-console-major
65 linux-console-minor
66 linux-console-virtual?
67
68 read-linux-consoles))
50 69
51;;; Commentary: 70;;; Commentary:
52;;; 71;;;
@@ -675,4 +694,56 @@ the root file system...\n" root-delay)
675 (start-repl))))) 694 (start-repl)))))
676 #:on-error on-error)) 695 #:on-error on-error))
677 696
697(define-record-type <linux-console>
698 (make-linux-console device can-read? can-write? can-unblank?
699 enabled? preferred? primary? printk? braille?
700 safe-when-cpu-offline? major minor virtual?)
701 linux-console?
702 (device linux-console-device)
703 (can-read? linux-console-can-read?)
704 (can-write? linux-console-can-write?)
705 (can-unblank? linux-console-can-unblank?)
706 (enabled? linux-console-enabled?)
707 (preferred? linux-console-preferred?)
708 (primary? linux-console-primary?)
709 (printk? linux-console-printk?)
710 (braille? linux-console-braille?)
711 (safe-when-cpu-offline? linux-console-safe-when-cpu-offline?)
712 (major linux-console-major)
713 (minor linux-console-minor)
714 (virtual? linux-console-virtual?))
715
716(define* (read-linux-consoles #:optional (consoles-file "/proc/consoles"))
717 "Parses CONSOLES-FILE and returns a list of <linux-console> records."
718 (if (not (file-exists? consoles-file))
719 '()
720 (with-input-from-file consoles-file
721 (lambda ()
722 (let ((line-regex (make-regexp
723 "^([^ ]+)[ ]+(.+)[ ]+([0-9]+):([0-9]+)$"))
724 (virt-regex (make-regexp "^tty[0-9]+$")))
725 (let loop ((line (read-line))
726 (results '()))
727 (cond
728 ((eof-object? line)
729 (reverse results))
730 ((regexp-exec line-regex line)
731 => (lambda (m)
732 (let* ((dev (match:substring m 1))
733 (flags (match:substring m 2))
734 (major (string->number (match:substring m 3)))
735 (minor (string->number (match:substring m 4)))
736 (virtual? (regexp-exec virt-regex dev))
737 (has? (lambda (c)
738 (string-any (lambda (f) (char=? f c)) flags))))
739 (loop (read-line)
740 (cons (make-linux-console
741 dev
742 (has? #\R) (has? #\W) (has? #\U) (has? #\E)
743 (has? #\C) (has? #\B) (has? #\p) (has? #\b)
744 (has? #\a)
745 major minor virtual?)
746 results)))))
747 (else (loop (read-line) results)))))))))
748
678;;; linux-boot.scm ends here 749;;; linux-boot.scm ends here
diff --git a/gnu/installer/kernel.scm b/gnu/installer/kernel.scm
index a07d24d09a6..2700931d402 100644
--- a/gnu/installer/kernel.scm
+++ b/gnu/installer/kernel.scm
@@ -27,7 +27,8 @@
27 str) 27 str)
28 28
29(define (kernel->configuration kernel dry-run?) 29(define (kernel->configuration kernel dry-run?)
30 (if (string-prefix? "Hurd" kernel) 30 (if (and (string? kernel)
31 (string-prefix? "Hurd" kernel))
31 `((kernel %hurd-default-operating-system-kernel) 32 `((kernel %hurd-default-operating-system-kernel)
32 ,(comment (G_ ";; \"noide\" disables the gnumach IDE driver, enabling rumpdisk.\n")) 33 ,(comment (G_ ";; \"noide\" disables the gnumach IDE driver, enabling rumpdisk.\n"))
33 (kernel-arguments '("noide")) 34 (kernel-arguments '("noide"))
diff --git a/gnu/installer/newt/kernel.scm b/gnu/installer/newt/kernel.scm
index abf39c6aebd..4570544c519 100644
--- a/gnu/installer/newt/kernel.scm
+++ b/gnu/installer/newt/kernel.scm
@@ -48,12 +48,14 @@
48 ;; TRANSLATORS: "Hurd" is a proper noun and must not be translated. 48 ;; TRANSLATORS: "Hurd" is a proper noun and must not be translated.
49 ;; TRANSLATORS: "Linux Libre" is a literal and must not be translated. 49 ;; TRANSLATORS: "Linux Libre" is a literal and must not be translated.
50 (G_ "Please select a kernel. When in doubt, choose \"Linux Libre\". 50 (G_ "Please select a kernel. When in doubt, choose \"Linux Libre\".
51
51The Hurd is offered as a technology preview and development aid; many packages \ 52The Hurd is offered as a technology preview and development aid; many packages \
52are not yet available in Guix, such as a desktop environment or even a \ 53are not yet available in Guix, such as a desktop environment or even a \
53windowing system (X, Wayland).") 54windowing system (X, Wayland).")
54 #:listbox-items kernels 55 #:listbox-items kernels
55 #:listbox-item->text identity 56 #:listbox-item->text identity
56 #:listbox-default-item default 57 #:listbox-default-item default
58 #:sort-listbox-items? #f ;keep Linux first
57 #:button-text (G_ "Back") 59 #:button-text (G_ "Back")
58 #:button-callback-procedure 60 #:button-callback-procedure
59 (lambda _ 61 (lambda _
diff --git a/gnu/installer/newt/network.scm b/gnu/installer/newt/network.scm
index c78a7c54612..08e22b8e26c 100644
--- a/gnu/installer/newt/network.scm
+++ b/gnu/installer/newt/network.scm
@@ -27,6 +27,7 @@
27 #:use-module (guix i18n) 27 #:use-module (guix i18n)
28 #:use-module (srfi srfi-1) 28 #:use-module (srfi srfi-1)
29 #:use-module (srfi srfi-11) 29 #:use-module (srfi srfi-11)
30 #:use-module (srfi srfi-26)
30 #:use-module (srfi srfi-34) 31 #:use-module (srfi srfi-34)
31 #:use-module (srfi srfi-35) 32 #:use-module (srfi srfi-35)
32 #:use-module (ice-9 match) 33 #:use-module (ice-9 match)
@@ -112,20 +113,24 @@ network devices were found. Do you want to continue anyway?"))
112 full-value 113 full-value
113 (+ value 1))))))) 114 (+ value 1)))))))
114 115
115(define (url-alive? url) 116(define* (url-alive? url #:key (ensure-ok-status? #f))
116 (false-if-exception 117 (false-if-exception
117 (begin 118 (let ((response (http-request url)))
118 (http-request url) 119 (or (not ensure-ok-status?)
119 #t))) 120 (= (response-code response)
121 200)))))
120 122
121(define (common-urls-alive? urls) 123(define* (common-urls-alive? urls #:key (ensure-ok-status? #f))
124 "Return #t if at least some of the given URLS are alive,
125meaning that they do respond to a HTTP request. If ENSURE-OK-STATUS? is
126#t, return #t only if the code is 200."
122 (dynamic-wind 127 (dynamic-wind
123 (lambda () 128 (lambda ()
124 (sigaction SIGALRM 129 (sigaction SIGALRM
125 (lambda _ #f)) 130 (lambda _ #f))
126 (alarm 3)) 131 (alarm 3))
127 (lambda () 132 (lambda ()
128 (any url-alive? 133 (any (cut url-alive? <> #:ensure-ok-status? ensure-ok-status?)
129 urls)) 134 urls))
130 (lambda () 135 (lambda ()
131 (alarm 0)))) 136 (alarm 0))))
@@ -140,7 +145,9 @@ FULL-VALUE tentatives, spaced by 1 second."
140 "https://bordeaux.guix.gnu.org" 145 "https://bordeaux.guix.gnu.org"
141 "https://ci.guix.gnu.org" 146 "https://ci.guix.gnu.org"
142 "https://guix.gnu.org" 147 "https://guix.gnu.org"
143 "https://gnu.org"))) 148 "https://gnu.org")
149 ;; Any HTTP response means the users is online.
150 #:ensure-ok-status? #f))
144 (file-exists? "/tmp/installer-assume-online"))) 151 (file-exists? "/tmp/installer-assume-online")))
145 152
146 (let* ((full-value 5)) 153 (let* ((full-value 5))
@@ -173,7 +180,8 @@ Do you want to continue anyway?"))
173 (common-urls-alive? 180 (common-urls-alive?
174 (list 181 (list
175 "https://bordeaux.guix.gnu.org/nix-cache-info" 182 "https://bordeaux.guix.gnu.org/nix-cache-info"
176 "https://ci.guix.gnu.org/nix-cache-info")))) 183 "https://ci.guix.gnu.org/nix-cache-info")
184 #:ensure-ok-status? #t)))
177 185
178 (let* ((full-value 5)) 186 (let* ((full-value 5))
179 (run-scale-page 187 (run-scale-page
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index 3a7e6795776..eb99f9860fc 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -108,20 +108,23 @@ all data on disk will be lost, are you sure you want to proceed?") item)
108 108
109(define (run-label-page button-text button-callback) 109(define (run-label-page button-text button-callback)
110 "Run a page asking the user to select a partition table label." 110 "Run a page asking the user to select a partition table label."
111 ;; Force the GPT label if UEFI is supported. 111 ;; Force the GPT label if UEFI is supported.
112 (if (efi-installation?) 112 (cond ((efi-installation?)
113 ((run-label-confirmation-page button-callback) "gpt") 113 ((run-label-confirmation-page button-callback) "gpt"))
114 (run-listbox-selection-page 114 ;; Force the MSDOS label on Hurd.
115 #:info-text (G_ "Select a new partition table type. \ 115 ((target-hurd?)
116 ((run-label-confirmation-page button-callback) "msdos"))
117 (else (run-listbox-selection-page
118 #:info-text (G_ "Select a new partition table type. \
116Be careful, all data on the disk will be lost.") 119Be careful, all data on the disk will be lost.")
117 #:title (G_ "Partition table") 120 #:title (G_ "Partition table")
118 #:listbox-items '("msdos" "gpt") 121 #:listbox-items '("msdos" "gpt")
119 #:listbox-default-item (if (target-hurd?) "msdos" "gpt") 122 #:listbox-default-item (if (target-hurd?) "msdos" "gpt")
120 #:listbox-item->text identity 123 #:listbox-item->text identity
121 #:listbox-callback-procedure 124 #:listbox-callback-procedure
122 (run-label-confirmation-page button-callback) 125 (run-label-confirmation-page button-callback)
123 #:button-text button-text 126 #:button-text button-text
124 #:button-callback-procedure button-callback))) 127 #:button-callback-procedure button-callback))))
125 128
126(define (run-type-page partition) 129(define (run-type-page partition)
127 "Run a page asking the user to select a partition type." 130 "Run a page asking the user to select a partition type."
diff --git a/gnu/installer/newt/services.scm b/gnu/installer/newt/services.scm
index a91a08668da..50fddd0dadb 100644
--- a/gnu/installer/newt/services.scm
+++ b/gnu/installer/newt/services.scm
@@ -36,11 +36,9 @@
36environments." 36environments."
37 (let ((items (filter desktop-system-service? (%system-services)))) 37 (let ((items (filter desktop-system-service? (%system-services))))
38 (run-checkbox-tree-page 38 (run-checkbox-tree-page
39 #:info-text (if (target-hurd?) 39 #:info-text (G_ "Please select the desktop environment(s) you wish to \
40 (G_ "Currently, none of these is available for the Hurd.")
41 (G_ "Please select the desktop environment(s) you wish to \
42install. If you select multiple desktop environments here, you will be able \ 40install. If you select multiple desktop environments here, you will be able \
43to choose from them later when you log in.")) 41to choose from them later when you log in.")
44 #:title (G_ "Desktop environment") 42 #:title (G_ "Desktop environment")
45 #:items items 43 #:items items
46 #:selection (map system-service-recommended? items) 44 #:selection (map system-service-recommended? items)
@@ -50,6 +48,16 @@ to choose from them later when you log in."))
50 (lambda () 48 (lambda ()
51 (abort-to-prompt 'installer-step 'abort))))) 49 (abort-to-prompt 'installer-step 'abort)))))
52 50
51;; FIXME: all platforms should support %desktop-services and some of the
52;; offered desktop environments. Instead of globally disabling the desktop
53;; page, disable only non-working desktop environments.
54(define (run-desktop-environments-cbt-page/maybe)
55 "Run page with desktop environments, as long as the user is on
56a system that supports them."
57 (if (or (target-hurd?) (target-x86-32?))
58 '()
59 (run-desktop-environments-cbt-page)))
60
53(define (run-networking-cbt-page) 61(define (run-networking-cbt-page)
54 "Run a page allowing the user to select networking services." 62 "Run a page allowing the user to select networking services."
55 (let ((items (filter (lambda (service) 63 (let ((items (filter (lambda (service)
@@ -131,7 +139,7 @@ client may be enough for a server.")
131 (abort-to-prompt 'installer-step 'abort))))) 139 (abort-to-prompt 'installer-step 'abort)))))
132 140
133(define (run-services-page) 141(define (run-services-page)
134 (let ((desktop (run-desktop-environments-cbt-page))) 142 (let ((desktop (run-desktop-environments-cbt-page/maybe)))
135 ;; When the user did not select any desktop services, and thus didn't get 143 ;; When the user did not select any desktop services, and thus didn't get
136 ;; '%desktop-services', offer network management services. 144 ;; '%desktop-services', offer network management services.
137 (append desktop 145 (append desktop
diff --git a/gnu/local.mk b/gnu/local.mk
index 68f40a609e1..3fb1af63869 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1178,6 +1178,7 @@ dist_patch_DATA = \
1178 %D%/packages/patches/dhclient-script-resolvconf-support.patch \ 1178 %D%/packages/patches/dhclient-script-resolvconf-support.patch \
1179 %D%/packages/patches/dicedb-remove-init-from-config-subpkg.patch \ 1179 %D%/packages/patches/dicedb-remove-init-from-config-subpkg.patch \
1180 %D%/packages/patches/directfb-davinci-glibc-228-compat.patch \ 1180 %D%/packages/patches/directfb-davinci-glibc-228-compat.patch \
1181 %D%/packages/patches/django-compressor-build-with-beautifulsoup-4.14+.patch \
1181 %D%/packages/patches/dkimproxy-add-ipv6-support.patch \ 1182 %D%/packages/patches/dkimproxy-add-ipv6-support.patch \
1182 %D%/packages/patches/doc++-gcc-14.patch \ 1183 %D%/packages/patches/doc++-gcc-14.patch \
1183 %D%/packages/patches/docbook-utils-documentation-edits.patch \ 1184 %D%/packages/patches/docbook-utils-documentation-edits.patch \
@@ -1211,6 +1212,7 @@ dist_patch_DATA = \
1211 %D%/packages/patches/eigen-fix-strict-aliasing-bug.patch \ 1212 %D%/packages/patches/eigen-fix-strict-aliasing-bug.patch \
1212 %D%/packages/patches/einstein-build.patch \ 1213 %D%/packages/patches/einstein-build.patch \
1213 %D%/packages/patches/elfutils-tests-ptrace.patch \ 1214 %D%/packages/patches/elfutils-tests-ptrace.patch \
1215 %D%/packages/patches/elixir-httpoison-tag-network-dependent-test-cases.patch \
1214 %D%/packages/patches/elixir-path-length.patch \ 1216 %D%/packages/patches/elixir-path-length.patch \
1215 %D%/packages/patches/elm-ghc9.2.patch \ 1217 %D%/packages/patches/elm-ghc9.2.patch \
1216 %D%/packages/patches/python-treelib-remove-python2-compat.patch \ 1218 %D%/packages/patches/python-treelib-remove-python2-compat.patch \
@@ -1250,7 +1252,9 @@ dist_patch_DATA = \
1250 %D%/packages/patches/ergodox-firmware-fix-numpad.patch \ 1252 %D%/packages/patches/ergodox-firmware-fix-numpad.patch \
1251 %D%/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch \ 1253 %D%/packages/patches/ericw-tools-add-check-for-sse2-in-light.cc.patch \
1252 %D%/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch \ 1254 %D%/packages/patches/ericw-tools-gcc-11-pass-const-to-offsetof.patch \
1255 %D%/packages/patches/erlang-binpp-disable-failing-tests.patch \
1253 %D%/packages/patches/erlang-man-path.patch \ 1256 %D%/packages/patches/erlang-man-path.patch \
1257 %D%/packages/patches/erlang-mochiweb-disable-known-to-fail-tests.patch \
1254 %D%/packages/patches/esmini-use-pkgconfig.patch \ 1258 %D%/packages/patches/esmini-use-pkgconfig.patch \
1255 %D%/packages/patches/esmtp-add-lesmtp.patch \ 1259 %D%/packages/patches/esmtp-add-lesmtp.patch \
1256 %D%/packages/patches/esound-c99.patch \ 1260 %D%/packages/patches/esound-c99.patch \
@@ -1698,6 +1702,7 @@ dist_patch_DATA = \
1698 %D%/packages/patches/libretro-dolphin-emu-libusb-assert.patch \ 1702 %D%/packages/patches/libretro-dolphin-emu-libusb-assert.patch \
1699 %D%/packages/patches/libretro-dolphin-emu-vulkan-headers.patch \ 1703 %D%/packages/patches/libretro-dolphin-emu-vulkan-headers.patch \
1700 %D%/packages/patches/librewolf-add-store-to-rdd-allowlist.patch \ 1704 %D%/packages/patches/librewolf-add-store-to-rdd-allowlist.patch \
1705 %D%/packages/patches/librewolf-compare-paths.patch \
1701 %D%/packages/patches/librewolf-neuter-locale-download.patch \ 1706 %D%/packages/patches/librewolf-neuter-locale-download.patch \
1702 %D%/packages/patches/librewolf-use-system-wide-dir.patch \ 1707 %D%/packages/patches/librewolf-use-system-wide-dir.patch \
1703 %D%/packages/patches/libvirt-add-install-prefix.patch \ 1708 %D%/packages/patches/libvirt-add-install-prefix.patch \
@@ -1708,6 +1713,8 @@ dist_patch_DATA = \
1708 %D%/packages/patches/lightdm-vnc-ipv6.patch \ 1713 %D%/packages/patches/lightdm-vnc-ipv6.patch \
1709 %D%/packages/patches/lightdm-vnc-color-depth.patch \ 1714 %D%/packages/patches/lightdm-vnc-color-depth.patch \
1710 %D%/packages/patches/lightdm-vncserver-check.patch \ 1715 %D%/packages/patches/lightdm-vncserver-check.patch \
1716 %D%/packages/patches/linphone-desktop-cmake-belcard.patch \
1717 %D%/packages/patches/linphone-desktop-cmake-find-modules.patch \
1711 %D%/packages/patches/localed-xorg-keyboard.patch \ 1718 %D%/packages/patches/localed-xorg-keyboard.patch \
1712 %D%/packages/patches/kaldi-ignore-failing-test.patch \ 1719 %D%/packages/patches/kaldi-ignore-failing-test.patch \
1713 %D%/packages/patches/kaldi-openblas-0.3.29-compatibility.patch \ 1720 %D%/packages/patches/kaldi-openblas-0.3.29-compatibility.patch \
@@ -2311,6 +2318,7 @@ dist_patch_DATA = \
2311 %D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch \ 2318 %D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch \
2312 %D%/packages/patches/sbcl-ciel-repl.patch \ 2319 %D%/packages/patches/sbcl-ciel-repl.patch \
2313 %D%/packages/patches/sbcl-clml-fix-types.patch \ 2320 %D%/packages/patches/sbcl-clml-fix-types.patch \
2321 %D%/packages/patches/sbcl-cl-redis-replace-sbcl-specific-calls.patch \
2314 %D%/packages/patches/sbcl-eazy-gnuplot-skip-path-check.patch \ 2322 %D%/packages/patches/sbcl-eazy-gnuplot-skip-path-check.patch \
2315 %D%/packages/patches/sbcl-lack-fix-tests.patch \ 2323 %D%/packages/patches/sbcl-lack-fix-tests.patch \
2316 %D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \ 2324 %D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \
diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm
index b5fdd399211..aaa7eee0a04 100644
--- a/gnu/packages/jemalloc.scm
+++ b/gnu/packages/jemalloc.scm
@@ -48,6 +48,8 @@
48 (build-system gnu-build-system) 48 (build-system gnu-build-system)
49 (arguments 49 (arguments
50 (list 50 (list
51 #:tests? (and (not (%current-target-system))
52 (not (target-arm32?)))
51 #:phases 53 #:phases
52 #~(modify-phases %standard-phases 54 #~(modify-phases %standard-phases
53 (add-after 'unpack 'delete-thp-test 55 (add-after 'unpack 'delete-thp-test
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index cc6c990d376..3509d70ef8e 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -7,7 +7,7 @@
7;;; Copyright © 2017 Roel Janssen <roel@gnu.org> 7;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
8;;; Copyright © 2018–2022 Marius Bakke <mbakke@fastmail.com> 8;;; Copyright © 2018–2022 Marius Bakke <mbakke@fastmail.com>
9;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> 9;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
10;;; Copyright © 2018, 2021-2025 Efraim Flashner <efraim@flashner.co.il> 10;;; Copyright © 2018, 2021-2026 Efraim Flashner <efraim@flashner.co.il>
11;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de> 11;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
12;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> 12;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
13;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> 13;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
@@ -1127,6 +1127,10 @@ Library.")
1127 (srfi srfi-26) 1127 (srfi srfi-26)
1128 ,@modules) 1128 ,@modules)
1129 modules)) 1129 modules))
1130 ;; TODO: Figure out why some tests fail on powerpc64le-linux.
1131 ((#:tests? current-test-config #t)
1132 (and current-test-config
1133 (not (target-ppc64le?))))
1130 ((#:configure-flags cf #~'()) 1134 ((#:configure-flags cf #~'())
1131 (if (%current-target-system) 1135 (if (%current-target-system)
1132 ;; Use a newer version of llvm-tblgen and add the new 1136 ;; Use a newer version of llvm-tblgen and add the new
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 6d7103b5e33..4e5f82b4d92 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -197,8 +197,8 @@
197 ;; Latest version of Guix, which may or may not correspond to a release. 197 ;; Latest version of Guix, which may or may not correspond to a release.
198 ;; Note: the 'update-guix-package.scm' script expects this definition to 198 ;; Note: the 'update-guix-package.scm' script expects this definition to
199 ;; start precisely like this. 199 ;; start precisely like this.
200 (let ((version "1.5.0rc1") 200 (let ((version "1.5.0")
201 (commit "2d4ed08662714ea46cfe0b41ca195d1ef845fd1b") 201 (commit "230aa373f315f247852ee07dff34146e9b480aec")
202 (revision 0)) 202 (revision 0))
203 (package 203 (package
204 (name "guix") 204 (name "guix")
@@ -215,7 +215,7 @@
215 (commit commit))) 215 (commit commit)))
216 (sha256 216 (sha256
217 (base32 217 (base32
218 "0z1ixlkzsaj978nh57179871xkzbf8zsf10xkcfs2647iznkx7az")) 218 "00398yxjhq9pa03knkjjrih4vc4n5xg9xjykiscndr4c84qhj3zy"))
219 (file-name (string-append "guix-" version "-checkout")))) 219 (file-name (string-append "guix-" version "-checkout"))))
220 (build-system gnu-build-system) 220 (build-system gnu-build-system)
221 (arguments 221 (arguments
diff --git a/gnu/packages/patches/emacs-gnus-desktop-notify-fix-notifications.patch b/gnu/packages/patches/emacs-gnus-desktop-notify-fix-notifications.patch
deleted file mode 100644
index 5b5648956c8..00000000000
--- a/gnu/packages/patches/emacs-gnus-desktop-notify-fix-notifications.patch
+++ /dev/null
@@ -1,76 +0,0 @@
1Upstream status: https://gitlab.com/wavexx/gnus-desktop-notify.el/-/merge_requests/15
2
3From 905e7ea41560783ec723aa0167911ba050f91789 Mon Sep 17 00:00:00 2001
4From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
5Date: Mon, 16 Jun 2025 09:24:07 +0900
6Subject: [PATCH] Revert to use the notifications library by default.
7
8The alert library project itself mentions that:
9
10 For desktop notifications, the notifications package that is
11 installed with emacs, provides a probably better alternative for
12 most users.
13
14and it appears true, as by default `alert' simply print notification
15messages to the `*Messages*' buffer, which is not exactly a desktop
16notification.
17
18* gnus-desktop-notify.el (require): Require notifications first,
19falling back to alert.
20(gnus-desktop-notify-function): Test for the notifications feature
21first. Mention `notifications' is the default in its doc.
22---
23 gnus-desktop-notify.el | 15 ++++++++++-----
24 1 file changed, 10 insertions(+), 5 deletions(-)
25
26diff --git a/gnus-desktop-notify.el b/gnus-desktop-notify.el
27index 97e65f3..a12e444 100644
28--- a/gnus-desktop-notify.el
29+++ b/gnus-desktop-notify.el
30@@ -26,6 +26,11 @@
31
32 ;;; Change Log:
33
34+;; 1.5:
35+;; * Revert to use the `notifications' library by default if
36+;; available. The `alert' library doesn't do anything useful in its
37+;; default configuration.
38+;;
39 ;; 1.4:
40 ;; * Use `alert' package by default if available (`gnus-desktop-notify-alert').
41 ;;
42@@ -83,8 +88,8 @@
43 (require 'format-spec)
44 (require 'gnus-group)
45
46-(unless (require 'alert nil t)
47- (require 'notifications nil t))
48+(unless (require 'notifications nil t)
49+ (require 'alert nil t))
50
51 (declare-function alert "alert")
52 (declare-function notifications-notify "notifications")
53@@ -96,8 +101,8 @@
54 :group 'gnus)
55
56 (defcustom gnus-desktop-notify-function
57- (cond ((featurep 'alert) 'gnus-desktop-notify-alert)
58- ((featurep 'notifications) 'gnus-desktop-notify-dbus)
59+ (cond ((featurep 'notifications) 'gnus-desktop-notify-dbus)
60+ ((featurep 'alert) 'gnus-desktop-notify-alert)
61 (t 'gnus-desktop-notify-send))
62 "Notification backend used when a group receives new messages.
63 The backend is passed the notification content as a single,
64@@ -109,8 +114,8 @@ or fallback to the generic `gnus-desktop-notify-send' otherwise.
65
66 The following functions are available (whose documentation see):
67
68+`gnus-desktop-notify-dbus': Use the `notifications' library (default).
69 `gnus-desktop-notify-alert': Use the `alert' library.
70-`gnus-desktop-notify-dbus': Use the `notifications' library.
71 `gnus-desktop-notify-send': Call the `notify-send' program.
72 `gnus-desktop-notify-exec': Call a customizable program."
73 :type 'function)
74--
75GitLab
76
diff --git a/gnu/packages/patches/emacs-gnus-desktop-notify-rescan.patch b/gnu/packages/patches/emacs-gnus-desktop-notify-rescan.patch
deleted file mode 100644
index 2e1f7782a30..00000000000
--- a/gnu/packages/patches/emacs-gnus-desktop-notify-rescan.patch
+++ /dev/null
@@ -1,37 +0,0 @@
1Upstream-status: https://gitlab.com/wavexx/gnus-desktop-notify.el/-/merge_requests/16
2
3diff --git a/README.rst b/README.rst
4index 4cacdcb..150a2c2 100644
5--- a/README.rst
6+++ b/README.rst
7@@ -18,7 +18,7 @@ new messages are received. For basic usage, to be used in conjunction with
8
9 (require 'gnus-desktop-notify)
10 (gnus-desktop-notify-mode)
11- (gnus-demon-add-scanmail)
12+ (gnus-demon-add-rescan)
13
14 into your ``.gnus`` file. The default is to use alert_ if available, which
15 works on every operating system and allows the user to customize the
16@@ -52,7 +52,7 @@ follows:
17 (setq gnus-desktop-notify-function 'gnus-desktop-notify-exec
18 gnus-desktop-notify-exec-program "growlnotify -a Emacs.app -m")
19 (gnus-desktop-notify-mode)
20- (gnus-demon-add-scanmail)
21+ (gnus-demon-add-rescan)
22
23
24 Advanced setup
25diff --git a/gnus-desktop-notify.el b/gnus-desktop-notify.el
26index 97e65f3..3153807 100644
27--- a/gnus-desktop-notify.el
28+++ b/gnus-desktop-notify.el
29@@ -50,7 +50,7 @@
30 ;;
31 ;; (require 'gnus-desktop-notify)
32 ;; (gnus-desktop-notify-mode)
33-;; (gnus-demon-add-scanmail)
34+;; (gnus-demon-add-rescan)
35 ;;
36 ;; into your ``.gnus`` file. The default is to use `alert' if available, which
37 ;; works on every operating system and allows the user to customize the
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index e52950e3659..adda5ab9bb9 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -1060,6 +1060,9 @@ to use as the tty. This is primarily useful for headless systems."
1060 (with-imported-modules (source-module-closure 1060 (with-imported-modules (source-module-closure
1061 '((gnu build linux-boot))) ;for 'find-long-options' 1061 '((gnu build linux-boot))) ;for 'find-long-options'
1062 #~(begin 1062 #~(begin
1063 (use-modules (gnu build linux-boot)
1064 (srfi srfi-1))
1065
1063 ;; console=device,options 1066 ;; console=device,options
1064 ;; device: can be tty0, ttyS0, lp0, ttyUSB0 (serial). 1067 ;; device: can be tty0, ttyS0, lp0, ttyUSB0 (serial).
1065 ;; options: BBBBPNF. P n|o|e, N number of bits, 1068 ;; options: BBBBPNF. P n|o|e, N number of bits,
@@ -1083,7 +1086,20 @@ to use as the tty. This is primarily useful for headless systems."
1083 (find-long-options "console" command))) 1086 (find-long-options "console" command)))
1084 (specs (append agetty-specs console-specs))) 1087 (specs (append agetty-specs console-specs)))
1085 (match specs 1088 (match specs
1086 (() #f) 1089 ;; Fallback to a physical console registered in /proc/consoles.
1090 (() (let* ((consoles (read-linux-consoles))
1091 (chosen-console
1092 ;; Prioritize preferred, if none, choose any enabled.
1093 (or (find (lambda (c)
1094 (and (not (linux-console-virtual? c))
1095 (linux-console-preferred? c)))
1096 consoles)
1097 (find (lambda (c)
1098 (and (not (linux-console-virtual? c))
1099 (linux-console-enabled? c)))
1100 consoles))))
1101 (and chosen-console
1102 (linux-console-device chosen-console))))
1087 ((spec _ ...) 1103 ((spec _ ...)
1088 ;; Extract device name from first spec. 1104 ;; Extract device name from first spec.
1089 (match (string-tokenize spec not-comma) 1105 (match (string-tokenize spec not-comma)
@@ -1111,7 +1127,8 @@ to use as the tty. This is primarily useful for headless systems."
1111 (requirement (cons* 'user-processes 'host-name 'udev 1127 (requirement (cons* 'user-processes 'host-name 'udev
1112 shepherd-requirement)) 1128 shepherd-requirement))
1113 1129
1114 (modules '((ice-9 match) (gnu build linux-boot))) 1130 (modules '((ice-9 match) (gnu build linux-boot)
1131 (srfi srfi-1)))
1115 (start 1132 (start
1116 (with-imported-modules (source-module-closure 1133 (with-imported-modules (source-module-closure
1117 '((gnu build linux-boot))) 1134 '((gnu build linux-boot)))
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 59dc5b34749..52f9acaafe2 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -2520,11 +2520,10 @@ applications needing access to be root.")
2520 (%current-system)))) 2520 (%current-system))))
2521 ;; List of services typically useful for a "desktop" use case. 2521 ;; List of services typically useful for a "desktop" use case.
2522 2522
2523 ;; Since GDM depends on Rust and Rust is not available on all platforms, 2523 ;; FIXME: Since GDM depends on more dependencies that do not build on i686,
2524 ;; use SDDM as the fall-back display manager. 2524 ;; keep SDDM on it for the time being.
2525 ;; TODO: Switch the condition to use (supported-package? "rust") and make 2525 ;; XXX: When changing login manager, also change set-xorg-configuration
2526 ;; a news entry about the change. 2526 (cons* (if (target-64bit? system)
2527 (cons* (if (string-prefix? "x86_64" system)
2528 (service gdm-service-type) 2527 (service gdm-service-type)
2529 (service sddm-service-type)) 2528 (service sddm-service-type))
2530 2529
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 068ad68df5d..e679e6bc03d 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -1415,14 +1415,14 @@ polkit.addRule(function(action, subject) {
1415 "Run the GNOME Desktop Manager (GDM), a program that allows 1415 "Run the GNOME Desktop Manager (GDM), a program that allows
1416you to log in in a graphical session, whether or not you use GNOME.")))) 1416you to log in in a graphical session, whether or not you use GNOME."))))
1417 1417
1418;; Since GDM depends on Rust and Rust is not available on all platforms, 1418
1419;; use SDDM as the fall-back display manager. 1419;; FIXME: Since GDM depends on more dependencies that do not build on i686,
1420;; TODO: Switch the condition to take into account if Rust is supported and 1420;; keep SDDM on it for the time being.
1421;; match the configuration in desktop-services-for-system. 1421;; XXX: When changing this, also change desktop-services-for-system
1422(define* (set-xorg-configuration config 1422(define* (set-xorg-configuration config
1423 #:optional 1423 #:optional
1424 (login-manager-service-type 1424 (login-manager-service-type
1425 (if (target-x86-64?) 1425 (if (target-64bit?)
1426 gdm-service-type 1426 gdm-service-type
1427 sddm-service-type))) 1427 sddm-service-type)))
1428 "Tell the log-in manager (of type @var{login-manager-service-type}) to use 1428 "Tell the log-in manager (of type @var{login-manager-service-type}) to use
diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl
index 2d65f222947..afe5ae2d2ba 100644
--- a/gnu/system/examples/desktop.tmpl
+++ b/gnu/system/examples/desktop.tmpl
@@ -3,7 +3,8 @@
3;; for a "desktop" setup with GNOME and Xfce where the 3;; for a "desktop" setup with GNOME and Xfce where the
4;; root partition is encrypted with LUKS, and a swap file. 4;; root partition is encrypted with LUKS, and a swap file.
5 5
6(use-modules (gnu) (gnu system nss) (guix utils)) 6(use-modules (gnu) (gnu system nss) (guix utils)
7 (guix packages))
7(use-service-modules desktop sddm xorg) 8(use-service-modules desktop sddm xorg)
8(use-package-modules gnome) 9(use-package-modules gnome)
9 10
@@ -73,7 +74,10 @@
73 ;; by clicking the gear. Use the "desktop" services, which 74 ;; by clicking the gear. Use the "desktop" services, which
74 ;; include the X11 log-in service, networking with 75 ;; include the X11 log-in service, networking with
75 ;; NetworkManager, and more. 76 ;; NetworkManager, and more.
76 (services (if (target-x86-64?) 77 (services (if (supported-package? gnome
78 (or (and=> (%current-target-system)
79 gnu-triplet->nix-system)
80 (%current-system)))
77 (append (list (service gnome-desktop-service-type) 81 (append (list (service gnome-desktop-service-type)
78 (service xfce-desktop-service-type) 82 (service xfce-desktop-service-type)
79 (set-xorg-configuration 83 (set-xorg-configuration
@@ -81,16 +85,14 @@
81 (keyboard-layout keyboard-layout)))) 85 (keyboard-layout keyboard-layout))))
82 %desktop-services) 86 %desktop-services)
83 87
84 ;; FIXME: Since GDM depends on Rust (gdm -> gnome-shell -> gjs 88 ;; FIXME: Since Gnome depends on Rust and Rust is currently
85 ;; -> mozjs -> rust) and Rust is currently unavailable on 89 ;; unavailable on some platforms, we use MATE here instead of
86 ;; non-x86_64 platforms, we use SDDM and Mate here instead of 90 ;; GNOME.
87 ;; GNOME and GDM.
88 (append (list (service mate-desktop-service-type) 91 (append (list (service mate-desktop-service-type)
89 (service xfce-desktop-service-type) 92 (service xfce-desktop-service-type)
90 (set-xorg-configuration 93 (set-xorg-configuration
91 (xorg-configuration 94 (xorg-configuration
92 (keyboard-layout keyboard-layout)) 95 (keyboard-layout keyboard-layout))))
93 sddm-service-type))
94 %desktop-services))) 96 %desktop-services)))
95 97
96 ;; Allow resolution of '.local' host names with mDNS. 98 ;; Allow resolution of '.local' host names with mDNS.
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index e5dfdbb427b..7d9cfa8f21d 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -25,9 +25,11 @@
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26 26
27(define-module (gnu system install) 27(define-module (gnu system install)
28 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (gnu) 29 #:use-module (gnu)
29 #:use-module (gnu system) 30 #:use-module (gnu system)
30 #:use-module (gnu system privilege) 31 #:use-module (gnu system privilege)
32 #:use-module (guix build-system trivial)
31 #:use-module (gnu bootloader) 33 #:use-module (gnu bootloader)
32 #:use-module (gnu bootloader u-boot) 34 #:use-module (gnu bootloader u-boot)
33 #:use-module (guix gexp) 35 #:use-module (guix gexp)
@@ -336,6 +338,104 @@ templates under @file{/etc/configuration}.")))
336 "Load the @code{uvesafb} kernel module with the right options.") 338 "Load the @code{uvesafb} kernel module with the right options.")
337 (default-value #t))) 339 (default-value #t)))
338 340
341(define %installation-login-pam-service
342;; Custom 'login' pam.d rule. It is based on the original one,
343;; but includes possibility to print different motd. This motd
344;; is useful for headless consoles.
345 (let* ((unix (pam-entry
346 (control "required")
347 (module "pam_unix.so")))
348 (env (pam-entry ; to honor /etc/environment.
349 (control "required")
350 (module "pam_env.so")))
351 (motd (plain-file "motd" "
352\x1b[1;37mWelcome to the installation of GNU Guix!\x1b[0m
353
354\x1b[2m\
355Using this shell, you can carry out the installation process \"manually.\"
356Access documentation at any time by pressing Alt-F2.\x1b[0m
357"))
358 (console-motd (plain-file "console-motd" "
359\x1b[1;37mWelcome to the installation of GNU Guix!\x1b[0m
360
361You are in a headless console. If you can use a display, you should see the
362graphical installer on TTY1, it's opened by default. In case you cannot use a
363display, you can carry out the installation process in this shell \"manually\"
364or by starting the installer, using `guix-system-installer` command.
365
366\x1b[2mYou can access the Guix documentation using `info \"(guix)\"`.\x1b[0m
367"))
368 (show-motd (program-file "show-motd"
369 #~(begin
370 (use-modules (ice-9 textual-ports))
371
372 (call-with-input-file
373 (if (file-exists?
374 (string-append
375 "/tmp/console_"
376 (basename (getenv "PAM_TTY"))))
377 #$console-motd
378 #$motd)
379 (lambda (port)
380 (display (get-string-all port))))))))
381 (pam-service
382 (name "login")
383 (account (list unix))
384 (auth (list (pam-entry
385 (control "required")
386 (module "pam_unix.so")
387 (arguments '("nullok")))))
388 (password (list (pam-entry
389 (control "required")
390 (module "pam_unix.so")
391 (arguments '("sha512" "shadow")))))
392 (session `(,(pam-entry
393 (control "optional")
394 (module "pam_exec.so")
395 (arguments
396 (list "type=open_session" "stdout" show-motd)))
397 ,(pam-entry ;to fill in /proc/self/loginuid
398 (control "required")
399 (module "pam_loginuid.so"))
400 ,env ,unix)))))
401
402(define %installation-console-login
403;; Make a custom 'login' wrapper for execution in console
404;; terminal. It instructs pam.d login rule to print different
405;; motd.
406 (program-file
407 "login-with-motd"
408 #~(begin
409 (call-with-output-file
410 (string-append "/tmp/console_"
411 (basename (ttyname (current-output-port))))
412 (const #t))
413
414 (apply execlp
415 #$(file-append shadow "/bin/login")
416 (command-line)))))
417
418(define* (installer-command-package installer-program
419 #:key executable)
420 (package
421 (name executable)
422 (version "0")
423 (source #f)
424 (build-system trivial-build-system)
425 (arguments
426 (list #:builder (with-imported-modules '((guix build utils))
427 #~(begin
428 (use-modules (guix build utils))
429
430 (mkdir-p (string-append #$output "/bin"))
431
432 (symlink #$installer-program
433 (string-append #$output "/bin/" #$executable))))))
434 (home-page #f)
435 (synopsis "Provides the Guix System installer as run-guix-installer command")
436 (description "Provides the Guix System installer as run-guix-installer command.")
437 (license license:gpl3+)))
438
339(define* (%installation-services 439(define* (%installation-services
340 #:key 440 #:key
341 (system (or (and=> 441 (system (or (and=>
@@ -344,152 +444,168 @@ templates under @file{/etc/configuration}.")))
344 (%current-system))) 444 (%current-system)))
345 (guix-for-system (current-guix))) 445 (guix-for-system (current-guix)))
346 ;; List of services of the installation system. 446 ;; List of services of the installation system.
347 (let ((motd (plain-file "motd" " 447 (define (normal-tty tty)
348\x1b[1;37mWelcome to the installation of GNU Guix!\x1b[0m 448 (service mingetty-service-type
349 449 (mingetty-configuration (tty tty)
350\x1b[2m\ 450 (auto-login "root")
351Using this shell, you can carry out the installation process \"manually.\" 451 (login-pause? #t))))
352Access documentation at any time by pressing Alt-F2.\x1b[0m 452
353"))) 453 (define bare-bones-os
354 (define (normal-tty tty) 454 (load "examples/bare-bones.tmpl"))
355 (service mingetty-service-type 455
356 (mingetty-configuration (tty tty) 456 (define installer
357 (auto-login "root") 457 (installer-program
358 (login-pause? #t)))) 458 #:guix-for-installer guix-for-system))
359 459
360 (define bare-bones-os 460 (append
361 (load "examples/bare-bones.tmpl")) 461 ;; Generic services
362 462 (list (service virtual-terminal-service-type)
363 (append 463
364 ;; Generic services 464 (service kmscon-service-type
365 (list (service virtual-terminal-service-type) 465 (kmscon-configuration
366 466 (virtual-terminal "tty1")
367 (service kmscon-service-type 467 (login-program installer)))
368 (kmscon-configuration 468
369 (virtual-terminal "tty1") 469 (simple-service 'installer-login
370 (login-program (installer-program 470 pam-root-service-type
371 #:guix-for-installer guix-for-system)))) 471 (list %installation-login-pam-service))
372 472
373 (service login-service-type 473 ;; Documentation. The manual is in UTF-8, but
374 (login-configuration 474 ;; 'console-font-service' sets up Unicode support and loads a font
375 (motd motd))) 475 ;; with all the useful glyphs like em dash and quotation marks.
376 476 (service documentation-service-type "tty2")
377 ;; Documentation. The manual is in UTF-8, but 477
378 ;; 'console-font-service' sets up Unicode support and loads a font 478 ;; Documentation add-on.
379 ;; with all the useful glyphs like em dash and quotation marks. 479 %configuration-template-service
380 (service documentation-service-type "tty2") 480
381 481 ;; A bunch of 'root' ttys.
382 ;; Documentation add-on. 482 (normal-tty "tty3")
383 %configuration-template-service 483 (normal-tty "tty4")
384 484 (normal-tty "tty5")
385 ;; A bunch of 'root' ttys. 485 (normal-tty "tty6")
386 (normal-tty "tty3") 486
387 (normal-tty "tty4") 487 ;; The usual services.
388 (normal-tty "tty5") 488 (service shepherd-system-log-service-type)
389 (normal-tty "tty6") 489
390 490 ;; Use the Avahi daemon to discover substitute servers on the local
391 ;; The usual services. 491 ;; network. It can be faster than fetching from remote servers.
392 (service shepherd-system-log-service-type) 492 (service avahi-service-type)
393 493
394 ;; Use the Avahi daemon to discover substitute servers on the local 494 ;; Allow runninng the installer command on headless setups.
395 ;; network. It can be faster than fetching from remote servers. 495 (simple-service 'installer-program-profile
396 (service avahi-service-type) 496 profile-service-type
397 497 (list (installer-command-package
398 ;; The build daemon. 498 installer
399 (service guix-service-type 499 #:executable "guix-system-installer")))
400 (guix-configuration 500
401 ;; Register the default substitute server key(s) as 501 ;; The build daemon.
402 ;; trusted to allow the installation process to use 502 (service guix-service-type
403 ;; substitutes by default. 503 (guix-configuration
404 (authorize-key? #t) 504 ;; Register the default substitute server key(s) as
405 505 ;; trusted to allow the installation process to use
406 ;; Install and run the current Guix rather than an older 506 ;; substitutes by default.
407 ;; snapshot. 507 (authorize-key? #t)
408 (guix guix-for-system))) 508
409 509 ;; Install and run the current Guix rather than an older
410 ;; Start udev so that useful device nodes are available. 510 ;; snapshot.
411 ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for 511 (guix guix-for-system)))
412 ;; regulations-compliant WiFi access. 512
413 (service udev-service-type 513 ;; Start udev so that useful device nodes are available.
414 (udev-configuration 514 ;; Use device-mapper rules for cryptsetup & co; enable the CRDA for
415 (rules (list lvm2 crda)))) 515 ;; regulations-compliant WiFi access.
416 516 (service udev-service-type
417 ;; Add the 'cow-store' service, which users have to start manually 517 (udev-configuration
418 ;; since it takes the installation directory as an argument. 518 (rules (list lvm2 crda))))
419 (cow-store-service) 519
420 520 ;; Add the 'cow-store' service, which users have to start manually
421 ;; Install Unicode support and a suitable font. 521 ;; since it takes the installation directory as an argument.
422 (service console-font-service-type 522 (cow-store-service)
423 (map (match-lambda 523
424 ("tty2" 524 ;; Install Unicode support and a suitable font.
425 ;; Use a font that contains characters such as 525 (service console-font-service-type
426 ;; curly quotes as found in the manual. 526 (map (match-lambda
427 '("tty2" . "LatGrkCyr-8x16")) 527 ("tty2"
428 (tty 528 ;; Use a font that contains characters such as
429 ;; Use a font that doesn't have more than 256 529 ;; curly quotes as found in the manual.
430 ;; glyphs so that we can use colors with varying 530 '("tty2" . "LatGrkCyr-8x16"))
431 ;; brightness levels (see note in setfont(8)). 531 (tty
432 `(,tty . "lat9u-16"))) 532 ;; Use a font that doesn't have more than 256
433 '("tty1" "tty2" "tty3" "tty4" "tty5" "tty6"))) 533 ;; glyphs so that we can use colors with varying
434 534 ;; brightness levels (see note in setfont(8)).
435 ;; To facilitate copy/paste. 535 `(,tty . "lat9u-16")))
436 (service gpm-service-type) 536 '("tty1" "tty2" "tty3" "tty4" "tty5" "tty6")))
437 537
438 ;; Add an SSH server to facilitate remote installs. 538 ;; To facilitate copy/paste.
439 (service openssh-service-type 539 (service gpm-service-type)
440 (openssh-configuration 540
441 (port-number 22) 541 ;; Add an SSH server to facilitate remote installs.
442 (permit-root-login #t) 542 (service openssh-service-type
443 ;; The root account is passwordless, so make sure 543 (openssh-configuration
444 ;; a password is set before allowing logins. 544 (port-number 22)
445 (allow-empty-passwords? #f) 545 (permit-root-login #t)
446 (password-authentication? #t) 546 ;; The root account is passwordless, so make sure
447 547 ;; a password is set before allowing logins.
448 ;; Don't start it upfront. 548 (allow-empty-passwords? #f)
449 (%auto-start? #f))) 549 (password-authentication? #t)
450 550
451 ;; Since this is running on a USB stick with a overlayfs as the root 551 ;; Don't start it upfront.
452 ;; file system, use an appropriate cache configuration. 552 (%auto-start? #f)))
453 (service nscd-service-type 553
454 (nscd-configuration 554 ;; Since this is running on a USB stick with a overlayfs as the root
455 (caches %nscd-minimal-caches))) 555 ;; file system, use an appropriate cache configuration.
456 556 (service nscd-service-type
457 ;; Having /bin/sh is a good idea. In particular it allows Tramp 557 (nscd-configuration
458 ;; connections to this system to work. 558 (caches %nscd-minimal-caches)))
459 (service special-files-service-type 559
460 `(("/bin/sh" ,(file-append bash "/bin/sh")))) 560 ;; Having /bin/sh is a good idea. In particular it allows Tramp
461 561 ;; connections to this system to work.
462 ;; Loopback device, needed by OpenSSH notably. 562 (service special-files-service-type
463 (service static-networking-service-type 563 `(("/bin/sh" ,(file-append bash "/bin/sh"))))
464 (list %loopback-static-networking)) 564
465 565 ;; Loopback device, needed by OpenSSH notably.
466 (service wpa-supplicant-service-type) 566 (service static-networking-service-type
467 (service dbus-root-service-type) 567 (list %loopback-static-networking))
468 (service connman-service-type 568
469 (connman-configuration 569 (service wpa-supplicant-service-type)
470 (disable-vpn? #t))) 570 (service dbus-root-service-type)
471 571 (service connman-service-type
472 ;; Keep a reference to BARE-BONES-OS to make sure it can be 572 (connman-configuration
473 ;; installed without downloading/building anything. Also keep the 573 (disable-vpn? #t)))
474 ;; things needed by 'profile-derivation' to minimize the amount of 574
475 ;; download. 575 ;; Keep a reference to BARE-BONES-OS to make sure it can be
476 (service gc-root-service-type 576 ;; installed without downloading/building anything. Also keep the
477 (append 577 ;; things needed by 'profile-derivation' to minimize the amount of
478 (list bare-bones-os 578 ;; download.
479 (libc-utf8-locales-for-target system) 579 (service gc-root-service-type
480 texinfo 580 (append
481 guile-3.0) 581 (list bare-bones-os
482 %default-locale-libcs))) 582 (libc-utf8-locales-for-target system)
483 583 texinfo
484 ;; Specific system services 584 guile-3.0)
485 585 %default-locale-libcs)))
486 ;; Machines without Kernel Mode Setting (those with many old and 586
487 ;; current AMD GPUs, SiS GPUs, ...) need uvesafb to show the GUI 587 ;; Specific system services
488 ;; installer. Some may also need a kernel parameter like nomodeset 588
489 ;; or vga=793, but we leave that for the user to specify in GRUB. 589 ;; AArch64 has a better detection of consoles, mainly because device
490 `(,@(if (supported-package? v86d system) 590 ;; trees are utilized. On x86_64, the detection is usually done
491 (list (service uvesafb-service-type)) 591 ;; through BIOS and consoles do not get registered to /proc/console.
492 '()))))) 592 ;; The only way they would is if the user used console linux argument.
593 `(,@(if (target-aarch64? system)
594 (list (service agetty-service-type
595 (agetty-configuration (tty #f)
596 (auto-login "root")
597 (login-pause? #t)
598 (login-program
599 %installation-console-login))))
600 '()))
601
602 ;; Machines without Kernel Mode Setting (those with many old and
603 ;; current AMD GPUs, SiS GPUs, ...) need uvesafb to show the GUI
604 ;; installer. Some may also need a kernel parameter like nomodeset
605 ;; or vga=793, but we leave that for the user to specify in GRUB.
606 `(,@(if (supported-package? v86d system)
607 (list (service uvesafb-service-type))
608 '()))))
493 609
494(define %issue 610(define %issue
495 ;; Greeting. 611 ;; Greeting.
@@ -530,10 +646,44 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
530 "usb_common" "usbcore" 646 "usb_common" "usbcore"
531 ;; USB 3.0 647 ;; USB 3.0
532 "xhci_pci" "xhci_hcd" 648 "xhci_pci" "xhci_hcd"
533 ;; embedded USB 3.0
534 "xhci_plat_hcd" 649 "xhci_plat_hcd"
650 ;; More USB controllers
651 "dwc3" "dwc3_pci"
652 ;; Allwinner
653 "phy_sun4i_usb" "phy_sun50i_usb3"
654 ;; Qualcomm
655 "dwc3_qcom"
656 "phy_qcom_qmp_usb" "phy_qcom_qusb2"
657 "phy_qcom_snps_femto_v2" "phy_qcom_usb_hs"
658 "phy_qcom_usb_ss"
659 ;; Texas Instruments
660 "phy_tusb1210"
661 ;; Rockchip
662 "phy_rockchip_usb"
663 "phy_rockchip_inno_usb2" "phy_rockchip_typec"
664 ;; NXP i.MX
665 "phy_fsl_imx8mq_usb"
666 ;; Generic
667 "phy_generic"
668 ;; "thunderbolt" "typec_thunderbolt"
535 ;; USB 2.0 669 ;; USB 2.0
536 "ehci_pci" "ehci_hcd") 670 "dwc2"
671 "ehci_pci" "ehci_hcd"
672 "ehci_platform"
673 ;; USB 1.1
674 "ohci_pci" "ohci_hcd"
675 ;; SD cards
676 "mmc_hsq" "mmc_spi"
677 "mmc_core" "mmc_block"
678 "sdhci" "sdhci_pci"
679 "mmc_spi"
680 "sdhci_acpi"
681 ;; Platform specific SD card
682 "dw_mmc" "dw_mmc-pltfm" "dw_mmc-rockchip"
683 "sunxi_mmc" "sdhci_pltfm" "sdhci_msm"
684 "sdhci_of_arasan" "sdhci_of_esdhc" "sdhci_brcmstb"
685 "sdhci_tegra" "phy_rockchip_emmc"
686 "sdhci_esdhc_imx")
537 '()) 687 '())
538 ,@%base-initrd-modules)) 688 ,@%base-initrd-modules))
539 689