diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | iso/installer.scm | 66 |
2 files changed, 70 insertions, 0 deletions
@@ -75,6 +75,10 @@ $(HOMES): $(SYSTEMS): guix time-machine -C $(CHANNEL_FILE) -- system $(LOAD_PATH) build --cores=$(CORES) $@.scm +.PHONY: iso +iso: iso/installer.scm + guix time-machine -C $(CHANNEL_FILE) -- system image --cores=$(CORES) --image-type=iso9660 $^ + ## Private targets config/emacs/emacs.d/init.el config/emacs/emacs.d/early-init.el: config/emacs/emacs.d/emacs.org emacs -Q --batch --eval "(progn (require 'ob-tangle) (dolist (file command-line-args-left) (with-current-buffer (find-file-noselect file) (org-babel-tangle))))" "$<" diff --git a/iso/installer.scm b/iso/installer.scm new file mode 100644 index 00000000..a08fe10d --- /dev/null +++ b/iso/installer.scm @@ -0,0 +1,66 @@ +;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> +;;; Copyright © 2019 David Wilson <david@daviwil.com> +;;; Copyright © 2023 Kenny Ballou <kb@devnulllabs.io> +;;; +;;; 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/>. + +;; Generate a bootable image (e.g. for USB sticks, etc.) with: +;; $ guix system image -t iso9660 installer.scm + +(define-module (iso installer) + #:use-module (gnu services) + #:use-module (gnu system) + #:use-module (gnu system install) + #:use-module (gnu system keyboard) + #:use-module (gnu packages version-control) + #:use-module (gnu packages curl) + #:use-module (gnu packages disk) + #:use-module (gnu packages emacs) + #:use-module (gnu packages linux) + #:use-module (gnu packages mtools) + #:use-module (gnu packages package-management) + #:use-module (nongnu packages linux) + #:use-module (guix) + #:use-module (kbg) + #:export (installation-os-nonfree)) + +(define installation-os-nonfree + (operating-system + (inherit installation-os) + (kernel linux) + (firmware (list linux-firmware)) + + (keyboard-layout (keyboard-layout "us" #:options '("ctrl:nocaps"))) + + ;; Add the 'net.ifnames' argument to prevent network interfaces + ;; from having really long names. This can cause an issue with + ;; wpa_supplicant when you try to connect to a wifi network. + (kernel-arguments '("quiet" "net.ifnames=0")) + + (services + (cons* + ;; Include the channel file so that it can be used during installation + (simple-service 'channel-file etc-service-type + (list `("channels.scm" + ,(local-file (string-append %dotfiles-root + "/config/guix/channels.scm"))))) + (operating-system-user-services installation-os))) + + ;; Add some extra packages useful for the installation process + (packages + (append (list git curl emacs-no-x-toolkit lvm2 gptfdisk) + (operating-system-packages installation-os))))) + +installation-os-nonfree |