summaryrefslogtreecommitdiff
path: root/gnu/system
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/system')
-rw-r--r--gnu/system/examples/asus-c201.tmpl1
-rw-r--r--gnu/system/examples/bare-bones.tmpl1
-rw-r--r--gnu/system/examples/beaglebone-black.tmpl1
-rw-r--r--gnu/system/examples/desktop.tmpl1
-rw-r--r--gnu/system/examples/docker-image.tmpl1
-rw-r--r--gnu/system/examples/lightweight-desktop.tmpl1
-rw-r--r--gnu/system/examples/raspberry-pi-64-nfs-root.tmpl1
-rw-r--r--gnu/system/examples/raspberry-pi-64.tmpl1
-rw-r--r--gnu/system/examples/vm-image.tmpl1
-rw-r--r--gnu/system/examples/yggdrasil.tmpl60
-rw-r--r--gnu/system/image.scm9
-rw-r--r--gnu/system/images/wsl2.scm15
-rw-r--r--gnu/system/install.scm15
-rw-r--r--gnu/system/vm.scm27
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 <[email protected]>
;;; Copyright © 2022 Mathieu Othacehe <[email protected]>
+;;; Copyright © 2022 dan <[email protected]>
;;;
;;; 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 <[email protected]>
+;;; Copyright © 2013-2022 Ludovic Courtès <[email protected]>
;;; Copyright © 2016 Christine Lemmer-Webber <[email protected]>
;;; Copyright © 2016, 2017 Leo Famulari <[email protected]>
;;; Copyright © 2017 Mathieu Othacehe <[email protected]>
@@ -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))))