diff options
Diffstat (limited to 'gnu/system')
-rw-r--r-- | gnu/system/examples/asus-c201.tmpl | 1 | ||||
-rw-r--r-- | gnu/system/examples/bare-bones.tmpl | 1 | ||||
-rw-r--r-- | gnu/system/examples/beaglebone-black.tmpl | 1 | ||||
-rw-r--r-- | gnu/system/examples/desktop.tmpl | 1 | ||||
-rw-r--r-- | gnu/system/examples/docker-image.tmpl | 1 | ||||
-rw-r--r-- | gnu/system/examples/lightweight-desktop.tmpl | 1 | ||||
-rw-r--r-- | gnu/system/examples/raspberry-pi-64-nfs-root.tmpl | 1 | ||||
-rw-r--r-- | gnu/system/examples/raspberry-pi-64.tmpl | 1 | ||||
-rw-r--r-- | gnu/system/examples/vm-image.tmpl | 1 | ||||
-rw-r--r-- | gnu/system/examples/yggdrasil.tmpl | 60 | ||||
-rw-r--r-- | gnu/system/image.scm | 9 | ||||
-rw-r--r-- | gnu/system/images/wsl2.scm | 15 | ||||
-rw-r--r-- | gnu/system/install.scm | 15 | ||||
-rw-r--r-- | gnu/system/vm.scm | 27 |
14 files changed, 60 insertions, 75 deletions
diff --git a/gnu/system/examples/asus-c201.tmpl b/gnu/system/examples/asus-c201.tmpl index 6b6aa706fa..019111c167 100644 --- a/gnu/system/examples/asus-c201.tmpl +++ b/gnu/system/examples/asus-c201.tmpl @@ -1,3 +1,4 @@ +;; -*- mode: scheme; -*- ;; This is an operating system configuration template ;; for a "bare bones" setup for an ASUS C201PA. diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl index 687d4c1573..45b4995574 100644 --- a/gnu/system/examples/bare-bones.tmpl +++ b/gnu/system/examples/bare-bones.tmpl @@ -1,3 +1,4 @@ +;; -*- mode: scheme; -*- ;; This is an operating system configuration template ;; for a "bare bones" setup, with no X11 display server. diff --git a/gnu/system/examples/beaglebone-black.tmpl b/gnu/system/examples/beaglebone-black.tmpl index 90dab62062..40d0a76a37 100644 --- a/gnu/system/examples/beaglebone-black.tmpl +++ b/gnu/system/examples/beaglebone-black.tmpl @@ -1,3 +1,4 @@ +;; -*- mode: scheme; -*- ;; This is an operating system configuration template ;; for a "bare bones" setup on BeagleBone Black board. diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl index 7055a8f92d..10d0e54fa7 100644 --- a/gnu/system/examples/desktop.tmpl +++ b/gnu/system/examples/desktop.tmpl @@ -1,3 +1,4 @@ +;; -*- mode: scheme; -*- ;; This is an operating system configuration template ;; for a "desktop" setup with GNOME and Xfce where the ;; root partition is encrypted with LUKS, and a swap file. diff --git a/gnu/system/examples/docker-image.tmpl b/gnu/system/examples/docker-image.tmpl index bdc6afa6f0..7123917af4 100644 --- a/gnu/system/examples/docker-image.tmpl +++ b/gnu/system/examples/docker-image.tmpl @@ -1,3 +1,4 @@ +;; -*- mode: scheme; -*- ;; This is an operating system configuration template for a "Docker image" ;; setup, so it has barely any services at all. diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl index d4330ecc8e..4cb3c38311 100644 --- a/gnu/system/examples/lightweight-desktop.tmpl +++ b/gnu/system/examples/lightweight-desktop.tmpl @@ -1,3 +1,4 @@ +;; -*- mode: scheme; -*- ;; This is an operating system configuration template ;; for a "desktop" setup without full-blown desktop ;; environments. diff --git a/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl index 8c47c650f6..2203375270 100644 --- a/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl +++ b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl @@ -1,3 +1,4 @@ +;; -*- mode: scheme; -*- ;; This is an operating-system configuration template of a ;; 64-bit minimal system for a Raspberry Pi with an NFS root file-system. diff --git a/gnu/system/examples/raspberry-pi-64.tmpl b/gnu/system/examples/raspberry-pi-64.tmpl index 3ad588207c..185d25c412 100644 --- a/gnu/system/examples/raspberry-pi-64.tmpl +++ b/gnu/system/examples/raspberry-pi-64.tmpl @@ -1,3 +1,4 @@ +;; -*- mode: scheme; -*- ;; This is an operating-system configuration template of a ;; 64-bit minimal system for a Raspberry Pi with local storage. diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl index d46a27978c..343287eaf6 100644 --- a/gnu/system/examples/vm-image.tmpl +++ b/gnu/system/examples/vm-image.tmpl @@ -1,3 +1,4 @@ +;; -*- mode: scheme; -*- ;; This is an operating system configuration for a VM image. ;; Modify it as you see fit and instantiate the changes by running: ;; diff --git a/gnu/system/examples/yggdrasil.tmpl b/gnu/system/examples/yggdrasil.tmpl deleted file mode 100644 index 4d34f49b54..0000000000 --- a/gnu/system/examples/yggdrasil.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -;; This is an operating system configuration template -;; for a "bare bones" setup, with no X11 display server. - -(use-modules (gnu)) -(use-service-modules networking ssh) -(use-package-modules admin curl networking screen) - -(operating-system - (host-name "ruby-guard-5545") - (timezone "Europe/Budapest") - (locale "en_US.utf8") - - ;; Boot in "legacy" BIOS mode, assuming /dev/sdX is the - ;; target hard disk, and "my-root" is the label of the target - ;; root file system. - (bootloader (bootloader-configuration - (bootloader grub-bootloader) - (targets '("/dev/sdX")))) - (file-systems (cons (file-system - (device (file-system-label "my-root")) - (mount-point "/") - (type "ext4")) - %base-file-systems)) - (users (cons (user-account - (name "alice") - (comment "Bob's sister") - (group "users") - ;; adding her to the yggdrasil group means she can use - ;; yggdrasilctl to modify the configuration - (supplementary-groups '("wheel" "yggdrasil"))) - %base-user-accounts)) - - ;; Globally-installed packages. - (packages (cons* screen curl %base-packages)) - - ;; Add services to the baseline: a DHCP client and - ;; an SSH server. - ;; If you add an /etc/yggdrasil-private.conf, you can log in to ssh - ;; using your Yggdrasil IPv6 address from another machine running Yggdrasil. - ;; Alternatively, the client can sit behind a router that has Yggdrasil. - ;; That file is specifically _not_ handled by Guix, because we don't want its - ;; contents to sit in the world-readable /gnu/store. - (services - (append - (list - (service dhcp-client-service-type) - (service yggdrasil-service-type - (yggdrasil-configuration - (log-to 'stdout) - (log-level 'debug) - (autoconf? #f) - (json-config - ;; choose a few from - ;; https://github.com/yggdrasil-network/public-peers - '((peers . #("tcp://1.2.3.4:1337")))) - (config-file #f))) - (service openssh-service-type - (openssh-configuration - (port-number 2222)))) - %base-services))) diff --git a/gnu/system/image.scm b/gnu/system/image.scm index f07a4a5217..afef79185f 100644 --- a/gnu/system/image.scm +++ b/gnu/system/image.scm @@ -138,6 +138,9 @@ parent image record." (size 'guess) (label root-label) (file-system "ext4") + ;; Disable the metadata_csum and 64bit features of ext4, for compatibility + ;; with U-Boot. + (file-system-options (list "-O" "^metadata_csum,^64bit")) (flags '(boot)) (initializer (gexp initialize-root-partition)))) @@ -972,9 +975,9 @@ image, depending on IMAGE format." (G_ "~a: unsupported image format") image-format))))))) -;; -;; Image detection. -;; +;;; +;;; Image type discovery. +;;; (define (image-modules) "Return the list of image modules." diff --git a/gnu/system/images/wsl2.scm b/gnu/system/images/wsl2.scm index 80c2e775b4..d9aaa1a271 100644 --- a/gnu/system/images/wsl2.scm +++ b/gnu/system/images/wsl2.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org> +;;; Copyright © 2022 dan <i@dan.games> ;;; ;;; This file is part of GNU Guix. ;;; @@ -75,7 +76,11 @@ USER." (let* ((pw (getpw #$user)) (shell (passwd:shell pw)) (sudo #+(file-append sudo "/bin/sudo")) - (args (cdr (command-line)))) + (args (cdr (command-line))) + (uid (passwd:uid pw)) + (gid (passwd:gid pw)) + (runtime-dir (string-append "/run/user/" + (number->string uid)))) ;; Save the value of $PATH set by WSL. Useful for finding ;; Windows binaries to run with WSL's binfmt interop. (setenv "WSLPATH" (getenv "PATH")) @@ -88,9 +93,15 @@ USER." MS_REMOUNT #:update-mtab? #f) + ;; Create XDG_RUNTIME_DIR for the login user. + (unless (file-exists? runtime-dir) + (mkdir runtime-dir) + (chown runtime-dir uid gid)) + (setenv "XDG_RUNTIME_DIR" runtime-dir) + ;; Start login shell as user. (apply execl sudo "sudo" - "--preserve-env=WSLPATH" + "--preserve-env=WSLPATH,XDG_RUNTIME_DIR" "-u" #$user "--" shell "-l" args)))))) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index f6f1923121..b3cf7a1bd8 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -284,13 +284,24 @@ templates under @file{/etc/configuration}."))) ;; appropriate options. The GUI installer needs it when the machine does not ;; support Kernel Mode Setting. Otherwise kmscon is missing /dev/fb0. (define (uvesafb-shepherd-service _) + (define modprobe + (program-file "modprobe-wrapper" + #~(begin + ;; Use a wrapper because shepherd 0.9.3 won't let us + ;; pass environment variables to the child process: + ;; <https://issues.guix.gnu.org/60106>. + (setenv "LINUX_MODULE_DIRECTORY" + "/run/booted-system/kernel/lib/modules") + (apply execl #$(file-append kmod "/bin/modprobe") + "modprobe" (cdr (command-line)))))) + (list (shepherd-service (documentation "Load the uvesafb kernel module if needed.") (provision '(maybe-uvesafb)) (requirement '(file-systems)) (start #~(lambda () (or (file-exists? "/dev/fb0") - (invoke #+(file-append kmod "/bin/modprobe") + (invoke #+modprobe "uvesafb" (string-append "v86d=" #$v86d "/sbin/v86d") "mode_option=1024x768")))) @@ -465,6 +476,8 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m ;; A well-rounded set of packages for interacting with disks, partitions and ;; file systems, included with the Guix installation image. (list parted gptfdisk ddrescue + ;; Use the static LVM2 because it's already pulled in by the installer. + lvm2-static ;; We used to provide fdisk from GNU fdisk, but as of version 2.0.0a ;; it pulls Guile 1.8, which takes unreasonable space; furthermore ;; util-linux's fdisk is already available, in %base-packages-linux. diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index c2f7efa966..b7bccd72a4 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> @@ -234,8 +234,8 @@ with '-virtfs' options for the host file systems listed in SHARED-FS." #$@(map virtfs-option shared-fs) #$@(if rw-image? - #~((format #f "-drive file=~a,if=virtio" #$image)) - #~((format #f "-drive file=~a,if=virtio,cache=writeback,werror=report,readonly=on" + #~((format #f "-drive file=~a,format=qcow2,if=virtio" #$image)) + #~((format #f "-drive file=~a,format=raw,if=virtio,cache=writeback,werror=report,readonly=on" #$image))))) (define* (system-qemu-image/shared-store-script os @@ -303,17 +303,26 @@ useful when FULL-BOOT? is true." "-m " (number->string #$memory-size) #$@options)) + (define copy-image + ;; Script that "copies" BASE-IMAGE to /tmp. Make a copy-on-write image, + ;; which is much cheaper than actually copying it. + (program-file "copy-image" + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + (unless (file-exists? #$rw-image) + (invoke #+(file-append qemu "/bin/qemu-img") + "create" "-b" #$base-image + "-F" "raw" "-f" "qcow2" #$rw-image)))))) + (define builder #~(call-with-output-file #$output (lambda (port) (format port "#!~a~%" #+(file-append bash "/bin/sh")) - (when (not #$volatile?) - (format port "~a~%" - #$(program-file "copy-image" - #~(unless (file-exists? #$rw-image) - (copy-file #$base-image #$rw-image) - (chmod #$rw-image #o640))))) + #$@(if volatile? + #~() + #~((format port "~a~%" #+copy-image))) (format port "exec ~a \"$@\"~%" (string-join #$qemu-exec " ")) (chmod port #o555)))) |