;; This is an operating system configuration template ;; for a "desktop" setup without full-blown desktop ;; environments. (use-modules (gnu) (gnu packages) (gnu system nss) (gnu system locale) (gnu services nfs) (ice-9 rdelim) (ice-9 format)) (use-service-modules desktop networking ssh base xorg) (use-package-modules wm certs shells xdisorg) (define plattfot (user-account (name "plattfot") (group "users") ;; Define a G-Expr to find the path of the zsh binary: ;; https://gitlab.com/rain1/guix-wiki/wikis/FAQ#how-do-i-make-my-login-shell-zsh (shell #~(string-append #$zsh "/bin/zsh")) (supplementary-groups '("wheel" "netdev" "audio" "video")) (home-directory "/home/plattfot"))) ;; (define keyboard-conf ;; (call-with-input-file "/etc/config.d/00-keyboard.conf" read-string)) ;; Specify a mapped device for the encrypted root partition. ;; The UUID is that returned by 'cryptsetup luksUUID'. (define mapped-root (mapped-device (source (uuid "ab43f8be-1a18-4999-836d-71dac382dfb5")) (target "root") (type luks-device-mapping))) (define mapped-swap (mapped-device (source (uuid "9f04f917-efd3-4036-b3f5-24705fee7ffa")) (target "swap") (type luks-device-mapping))) ;; Partion layout for /dev/sda3 ;; under __current/ ;; | subvol | Mountpoint | Comment | Shared | ;; |-------------+--------------+--------------------+----------| ;; | arch-root | / | root for Arch | no | ;; | guixsd-root | / | root for GuixSD | no | ;; | grub | /boot/grub | grub config | yes | ;; | guix | /var/guix | guix stuff | yes | ;; | gnu | /gnu | Store etc | yes | ;; | home | /home | home partition | yes | (define btrfs-common-options '("defaults" "discard" "compress=lzo" "space_cache" "autodefrag")) (define (btrfs-mount-options subvol) "Return the btrfs mount options I use. Where SUBVOL is the subvolume to mount" (string-join (cons (format #f "subvol=~a" subvol) btrfs-common-options) ",")) (define fs-root (file-system (mount-point "/") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/guixsd-root")) (needed-for-boot? #t) (dependencies (list mapped-root)))) (define fs-grub (file-system (mount-point "/boot/grub") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/grub")) (needed-for-boot? #t) (dependencies (list fs-root)))) (define fs-gnu (file-system (mount-point "/gnu") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/gnu")) (needed-for-boot? #t) (dependencies (list fs-root)))) (define fs-guix (file-system (mount-point "/var/guix") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/guix")) (needed-for-boot? #t) (dependencies (list fs-root)))) (define fs-home (file-system (mount-point "/home") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/home")) (needed-for-boot? #t) (dependencies (list fs-root)))) (define fs-valhalla (file-system (device "fafner:/srv/nfs4/Valhalla") (mount-point "/media/Valhalla") (type "nfs4") (mount? #f) (check? #f))) (define menu-arch (menu-entry (label "Arch Linux") (linux "/boot/vmlinux") (linux-arguments '("luks.uuid=ab43f8be-1a18-4999-836d-71dac382dfb5" "luks.name=ab43f8be-1a18-4999-836d-71dac382dfb5=root" "luks.key=ab43f8be-1a18-4999-836d-71dac382dfb5=/boot/rootkey.bin" "luks.options=ab43f8be-1a18-4999-836d-71dac382dfb5=discard,luks" "luks.uuid=9f04f917-efd3-4036-b3f5-24705fee7ffa" "luks.name=9f04f917-efd3-4036-b3f5-24705fee7ffa=swap" "luks.key=9f04f917-efd3-4036-b3f5-24705fee7ffa=/boot/swapkey.bin" "luks.options=9f04f917-efd3-4036-b3f5-24705fee7ffa=swap,discard,luks" "root=LABEL=root" "resume=/dev/mapper/swap" "rootflags=compress=lzo,subvol=__current/arch-root")) (initrd "/boot/initramfs-linux.img"))) (operating-system (host-name "loke") (timezone "Canada/Pacific") (locale "en_US.utf8") (locale-definitions (list (locale-definition (name "en_US.utf8") (source "en_US") (charset "UTF-8")) (locale-definition (name "sv_SE.utf8") (source "sv_SE") (charset "UTF-8")))) ;; Assuming /dev/sda is the target hard disk, and "root" ;; is the label of the target root file system. (bootloader (grub-configuration (target "/dev/sda") ;; Need to mount __current/arch-root ;; (menu-entries '(menu-arch)) )) ;; Kernel arguments (kernel-arguments '("rootflags=compress=lzo,subvol=__current/guixsd-root")) (mapped-devices (list mapped-root mapped-swap)) (file-systems (cons* fs-home fs-grub fs-gnu fs-guix fs-root %base-file-systems)) (swap-devices '("/dev/mapper/swap")) (users (cons plattfot %base-user-accounts)) ;; Add a bunch of window managers; we can choose one at ;; the log-in screen with F1. (packages (cons* i3-wm i3status rofi ;window managers zsh nss-certs ;for HTTPS access %base-packages)) ;; Use the "desktop" services, which include the X11 ;; log-in service, networking with Wicd, and more. (services %desktop-services ;; (cons* ;; (service openssh-service-type ;; ;; (openssh-configuration ;; ;; (port-number 6060) ;; ;; (password-authentication? #f))) ;; ;; (extra-special-file "/bin/env" (file-append coreutils "/bin/env")) ;; %desktop-services ;; ;; (modify-services %desktop-services ;; ;; (slim-service-type ;; ;; config => (slim-configuration ;; ;; (inherit config) ;; ;; (startx (xorg-start-command ;; ;; #:configuration-file ;; ;;(xorg-configuration-file ;; ;;#:extra-config ;; ;;(list keyboard-conf))))))) ;; ) ) ;; Allow resolution of '.local' host names with mDNS. (name-service-switch %mdns-host-lookup-nss))