;; 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 " Section \"InputClass\" Identifier \"system-keyboard\" MatchIsKeyboard \"on\" Option \"XkbLayout\" \"us,se\" Option \"XkbOptions\" \"ctrl:nocaps,grp:sclk_toggle,grp_led:scroll,:2\" EndSection ") ;; 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 `(,@btrfs-common-options ,(format #f "subvol=~a" subvol)) ",")) (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 `(,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 `(,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 `(,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 `(,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 `(,fs-root)))) (define nfs-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 "/__current/arch-root/boot/vmlinuz-linux") (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 (string-join '("/__current/arch-root/boot/intel-ucode.img" "/__current/arch-root/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") (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 nfs-valhalla %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")) (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))