mirror of https://codeberg.org/anemofilia/zero
operating-systems: buer: Move to impermanence setup
parent
322e24af31
commit
b4a4daa914
|
@ -75,6 +75,8 @@
|
|||
#:prefix channel:)
|
||||
#|F|# #:use-module ((buer files)
|
||||
#:prefix file:)
|
||||
#|F|# #:use-module ((buer file-systems)
|
||||
#:prefix file-system:)
|
||||
#|P|# #:use-module ((buer privilege)
|
||||
#:prefix privileged-programs:)
|
||||
#|R|# #:use-module ((buer rules)
|
||||
|
@ -104,7 +106,7 @@
|
|||
(bootloader
|
||||
(bootloader-configuration
|
||||
(bootloader grub-bootloader)
|
||||
(targets `("/dev/sda"))
|
||||
(targets `("/dev/disk/by-id/wwn-0x50026b7785a0a591"))
|
||||
(theme (grub-theme
|
||||
(color-normal
|
||||
'((fg . light-gray) (bg . black)))
|
||||
|
@ -124,15 +126,8 @@
|
|||
%kicksecure-kernel-arguments)))
|
||||
|
||||
(file-systems
|
||||
(cons* (file-system
|
||||
(device (file-system-label "guix-root"))
|
||||
(mount-point "/")
|
||||
(type "ext4"))
|
||||
(file-system
|
||||
(device (file-system-label "home"))
|
||||
(mount-point "/home")
|
||||
(type "ext4"))
|
||||
%base-file-systems))
|
||||
(append file-system:volumes
|
||||
file-system:persistent-directories))
|
||||
|
||||
(users
|
||||
(cons* user:radio
|
||||
|
@ -309,6 +304,11 @@
|
|||
(service special-files-service-type
|
||||
`(("/bin/sh" ,(file-append bash "/bin/bash"))
|
||||
("/usr/bin/env" ,(file-append coreutils "/bin/env"))))
|
||||
(simple-service 'persistent-files-service
|
||||
special-files-service-type
|
||||
(map (juxt identity
|
||||
(partial string-append "/gnu/persist/"))
|
||||
file-system:persistent-files))
|
||||
|
||||
#|Sysctl services|#
|
||||
(simple-service 'extra-sysctl-settings sysctl-service-type
|
||||
|
|
|
@ -1,104 +1,148 @@
|
|||
;; based on https://codeberg.org/squishypinkelephant/guix-random-junk
|
||||
|
||||
;; how to guix: / as tmpfs
|
||||
|
||||
;; /var/guix is REQUIRED to perform rollbacks
|
||||
;; create the folders /gnu/persist/etc/ssh /gnu/persist/etc/wireguard and
|
||||
;; the file /gnu/persist/etc/machine-id for dbus
|
||||
|
||||
(define-module (buer file-systems)
|
||||
#:use-module (gnu system file-systems)
|
||||
|
||||
#:export (rootfs
|
||||
bootfs
|
||||
file-systems))
|
||||
#:export (partition:guix
|
||||
persistent-directories
|
||||
persistent-files
|
||||
volumes))
|
||||
|
||||
;;; reminder: Send a patch to guix to make file-system-options and
|
||||
;;; privileged-program-capabitilities receive a list-of-strings
|
||||
|
||||
(define rootfs
|
||||
(file-system
|
||||
(device (file-system-label "root"))
|
||||
(mount-point "/")
|
||||
(type "tmpfs")
|
||||
(options "mode=755")))
|
||||
(define partition:guix
|
||||
(file-system-label "guix"))
|
||||
|
||||
(define bootfs
|
||||
(define volumes
|
||||
(list #|base|#
|
||||
%immutable-store
|
||||
%pseudo-terminal-file-system
|
||||
%shared-memory-file-system
|
||||
|
||||
#|boot|#
|
||||
(file-system
|
||||
(device (file-system-label "root")
|
||||
(device partition:guix)
|
||||
(type "btrfs")
|
||||
(mount-point "/boot")
|
||||
(dependencies (list rootfs))
|
||||
(flags '(no-atime))
|
||||
(options (format #f "compress=zstd:7,~
|
||||
discard=async,~
|
||||
ssd,~
|
||||
subvol=@boot")))))
|
||||
|
||||
(define file-systems
|
||||
(cons* rootfs
|
||||
;; /gnu/store
|
||||
(file-system
|
||||
(device (file-system-label "root"))
|
||||
(type "btrfs")
|
||||
(mount-point "/gnu/store")
|
||||
(check? #f)
|
||||
(needed-for-boot? #t)
|
||||
(dependencies (list rootfs))
|
||||
(flags '(read-only bind-mount no-atime))
|
||||
(options (format #f "compress=zstd:7,~
|
||||
(flags '(no-atime))
|
||||
(options (format #f "subvol=@boot,~
|
||||
discard=async,~
|
||||
ssd,~
|
||||
subvol=@gnu/store")))
|
||||
;; /gnu/persist
|
||||
ssd")))
|
||||
|
||||
#|run|#
|
||||
(file-system
|
||||
(device (file-system-label "root"))
|
||||
(device "none")
|
||||
(type "tmpfs")
|
||||
(mount-point "/run")
|
||||
(check? #f)
|
||||
(needed-for-boot? #t)
|
||||
(options "mode=0755"))
|
||||
|
||||
#|tmp|#
|
||||
(file-system
|
||||
(device "none")
|
||||
(type "tmpfs")
|
||||
(mount-point "/tmp")
|
||||
(check? #f)
|
||||
(needed-for-boot? #f))
|
||||
|
||||
#|root|#
|
||||
(file-system
|
||||
(device "none")
|
||||
(type "tmpfs")
|
||||
(mount-point "/")
|
||||
(check? #f)
|
||||
(needed-for-boot? #t)
|
||||
(options "mode=0755"))
|
||||
|
||||
#|gnu|#
|
||||
(file-system
|
||||
(device partition:guix)
|
||||
(type "btrfs")
|
||||
(mount-point "/gnu/persist")
|
||||
(needed-for-boot? #t)
|
||||
(dependencies (list rootfs))
|
||||
(flags '(no-atime bind-mount))
|
||||
(options (format #f "discard=async,~
|
||||
ssd,~
|
||||
subvol=@gnu/persist")))
|
||||
;; /home
|
||||
(flags '(no-atime))
|
||||
(options (format #f "subvol=@gnu/persist,~
|
||||
ssd")))
|
||||
(file-system
|
||||
(device (file-system-label "root"))
|
||||
(device partition:guix)
|
||||
(type "btrfs")
|
||||
(mount-point "/home")
|
||||
(dependencies (list rootfs))
|
||||
(flags '(no-atime bind-mount))
|
||||
(options (format #f "compress=zstd:7,~
|
||||
discard=async,~
|
||||
ssd,~
|
||||
subvol=@home")))
|
||||
;; /var/guix
|
||||
(mount-point "/gnu/store")
|
||||
(needed-for-boot? #t)
|
||||
(flags '(no-atime))
|
||||
(options (format #f "compress=zstd,~
|
||||
subvol=@gnu/store,~
|
||||
ssd")))
|
||||
|
||||
#|var|#
|
||||
(file-system
|
||||
(device (file-system-label "root"))
|
||||
(device partition:guix)
|
||||
(type "btrfs")
|
||||
(mount-point "/var/guix")
|
||||
(dependencies (list rootfs))
|
||||
(needed-for-boot? #t)
|
||||
(flags '(no-atime))
|
||||
(options (format #f "compress=zstd:7,~
|
||||
discard=async,~
|
||||
ssd,~
|
||||
subvol=@var/guix")))
|
||||
;; /var/log
|
||||
(options (format #f "compress=zstd,~
|
||||
subvol=@var/guix,~
|
||||
ssd")))
|
||||
(file-system
|
||||
(device (file-system-label "root"))
|
||||
(device partition:guix)
|
||||
(type "btrfs")
|
||||
(mount-point "/var/lib")
|
||||
(needed-for-boot? #t)
|
||||
(flags '(no-atime))
|
||||
(options (format #f "compress=zstd,~
|
||||
subvol=@var/lib,~
|
||||
ssd")))
|
||||
(file-system
|
||||
(device partition:guix)
|
||||
(type "btrfs")
|
||||
(mount-point "/var/log")
|
||||
(dependencies (list rootfs))
|
||||
(check? #f)
|
||||
(needed-for-boot? #t)
|
||||
(flags '(no-atime))
|
||||
(options (format #f "compress=zstd:7,~
|
||||
discard=async,~
|
||||
ssd,~
|
||||
subvol=@var/log")))
|
||||
;; /boot
|
||||
bootfs
|
||||
(options (format #f "compress=zstd,~
|
||||
subvol=@var/log,~
|
||||
ssd")))
|
||||
(file-system
|
||||
(device (file-system-label "esp"))
|
||||
(type "vfat")
|
||||
(dependencies (list bootfs))
|
||||
(mount-point "/boot/efi")
|
||||
(create-mount-point? #t))
|
||||
%base-file-systems))
|
||||
(device "none")
|
||||
(type "tmpfs")
|
||||
(mount-point "/var/run")
|
||||
(check? #f)
|
||||
(needed-for-boot? #t)
|
||||
(options "mode=0755"))
|
||||
|
||||
#|home|#
|
||||
(file-system
|
||||
(device partition:guix)
|
||||
(type "btrfs")
|
||||
(mount-point "/root")
|
||||
(flags '(no-atime))
|
||||
(options (format #f "subvol=@root,~
|
||||
discard=async,~
|
||||
ssd")))
|
||||
(file-system
|
||||
(device partition:guix)
|
||||
(type "btrfs")
|
||||
(mount-point "/home")
|
||||
(flags '(no-atime))
|
||||
(options (format #f "subvol=@home,~
|
||||
discard=async,~
|
||||
ssd")))))
|
||||
|
||||
(define persistent-directories
|
||||
(map (lambda (filename)
|
||||
(file-system
|
||||
(mount-point filename)
|
||||
(device (string-append "/gnu/persist" mount-point))
|
||||
(type "none")
|
||||
(flags '(no-atime bind-mount))))
|
||||
`("/mnt"
|
||||
"/etc/guix"
|
||||
"/etc/ssh"
|
||||
"/etc/wireguard")))
|
||||
|
||||
(define persistent-files
|
||||
(list "/etc/config.scm"
|
||||
"/etc/machine-id"
|
||||
"/etc/wpa-supplicant.conf"))
|
||||
|
|
Loading…
Reference in New Issue