summaryrefslogtreecommitdiff
path: root/nongnu/system
diff options
context:
space:
mode:
Diffstat (limited to 'nongnu/system')
-rw-r--r--nongnu/system/install.scm57
-rw-r--r--nongnu/system/linux-initrd.scm39
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"))