diff options
Diffstat (limited to 'nongnu/system')
-rw-r--r-- | nongnu/system/install.scm | 57 | ||||
-rw-r--r-- | nongnu/system/linux-initrd.scm | 39 |
2 files changed, 64 insertions, 32 deletions
diff --git a/nongnu/system/install.scm b/nongnu/system/install.scm index 24bc6ec..508621e 100644 --- a/nongnu/system/install.scm +++ b/nongnu/system/install.scm @@ -1,33 +1,47 @@ +;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de> -;;; -;;; This program is free software: you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation, either version 3 of the License, or -;;; (at your option) any later version. -;;; -;;; This program is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with this program. If not, see <https://www.gnu.org/licenses/>. +;;; Copyright © 2024 Hilton Chain <hako@ultrarare.space> ;; Generate a bootable image (e.g. for USB sticks, etc.) with: -;; $ guix system disk-image nongnu/system/install.scm +;; $ guix system image --image-type=iso9660 nongnu/system/install.scm (define-module (nongnu system install) + #:use-module (guix channels) + #:use-module (guix gexp) #:use-module (gnu packages curl) + #:use-module (gnu packages package-management) #:use-module (gnu packages version-control) #:use-module (gnu packages vim) #:use-module (gnu packages zile) + #:use-module (gnu services) + #:use-module (gnu services base) #:use-module (gnu system) #:use-module (gnu system install) #:use-module (nongnu packages linux) #:export (installation-os-nonfree)) +;; https://substitutes.nonguix.org/signing-key.pub +(define %signing-key + (plain-file "nonguix.pub" "\ +(public-key + (ecc + (curve Ed25519) + (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)))")) + +(define %channels + (cons* (channel + (name 'nonguix) + (url "https://gitlab.com/nonguix/nonguix") + ;; Enable signature verification: + (introduction + (make-channel-introduction + "897c1a470da759236cc11798f4e0a5f7d4d59fbc" + (openpgp-fingerprint + "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5")))) + %default-channels)) + (define installation-os-nonfree (operating-system (inherit installation-os) @@ -39,6 +53,19 @@ git neovim zile) - (operating-system-packages installation-os))))) + (operating-system-packages installation-os))) + (services + (modify-services (operating-system-user-services installation-os) + (guix-service-type + config => (guix-configuration + (inherit config) + (guix (guix-for-channels %channels)) + (authorized-keys + (cons* %signing-key + %default-authorized-guix-keys)) + (substitute-urls + `(,@%default-substitute-urls + "https://substitutes.nonguix.org")) + (channels %channels))))))) installation-os-nonfree diff --git a/nongnu/system/linux-initrd.scm b/nongnu/system/linux-initrd.scm index 5b29235..5f34e79 100644 --- a/nongnu/system/linux-initrd.scm +++ b/nongnu/system/linux-initrd.scm @@ -1,17 +1,5 @@ +;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; Copyright © 2020 Alex Griffin <a@ajgrf.com> -;;; -;;; This program is free software: you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation, either version 3 of the License, or -;;; (at your option) any later version. -;;; -;;; This program is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with this program. If not, see <https://www.gnu.org/licenses/>. (define-module (nongnu system linux-initrd) #:use-module (gnu system linux-initrd) @@ -79,7 +67,9 @@ MICROCODE-PACKAGES, in the format expected by the kernel." "/initrd.cpio")) (define (combined-initrd . initrds) - "Return a combined initrd, the result of concatenating INITRDS." + "Return a combined initrd, the result of concatenating INITRDS. This relies +on the kernel ability to detect and load multiple initrds archives from a +single file." (define builder (with-imported-modules (source-module-closure '((guix build utils) @@ -87,13 +77,28 @@ MICROCODE-PACKAGES, in the format expected by the kernel." #:select? import-nonguix-module?) #~(begin (use-modules (guix build utils) - (nonguix build utils)) + (nonguix build utils) + (srfi srfi-1)) ;; Use .img suffix since the result is no longer easily inspected by ;; standard tools like cpio and gzip. - (let ((initrd (string-append #$output "/initrd.img"))) + ;; + ;; The initrds may contain "references" files to keep some items + ;; such as the static guile alive. Concatenate them in a single, + ;; top-level references file. + (let ((initrd (string-append #$output "/initrd.img")) + (references + (filter-map + (lambda (initrd) + (let ((ref (string-append (dirname initrd) + "/references"))) + (and (file-exists? ref) ref))) + '#$initrds)) + (new-references + (string-append #$output "/references"))) (mkdir-p #$output) - (concatenate-files '#$initrds initrd))))) + (concatenate-files '#$initrds initrd) + (concatenate-files references new-references))))) (file-append (computed-file "combined-initrd" builder) "/initrd.img")) |