#+TITLE: Guix Configuration I use GNU Guix as my operating system. I'm able to declare the state of the operating system in a series of configuration files in a similar way to Puppet. Eventually I would like to integrate Guix Home into this configuration. * Channels Disclaimer: I use the nonguix channel only for the use of building Firefox from source easily. #+begin_src scheme (list (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (introduction (make-channel-introduction "9edb3f66fd807b096b48283debdcddccfea34bad" (openpgp-fingerprint "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))) (channel (name 'nonguix) (url "https://gitlab.com/nonguix/nonguix") (introduction (make-channel-introduction "897c1a470da759236cc11798f4e0a5f7d4d59fbc" (openpgp-fingerprint "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))) #+end_src * System ** Home Desktop #+begin_src scheme :tangle ~/Dotfiles/.config/guix/home-desk.scm :mkdirp yes (use-modules (gnu) (gnu services desktop) (gnu packages wm) (gnu system setuid) (gnu packages admin) (nongnu packages linux)) (use-service-modules cups desktop networking ssh sddm xorg) (operating-system (kernel linux) (firmware (list linux-firmware)) (locale "en_US.utf8") (timezone "America/Los_Angeles") (keyboard-layout (keyboard-layout "us")) (host-name "borges") (setuid-programs (cons (setuid-program (program (file-append swaylock "/bin/swaylock"))) %setuid-programs)) (users (cons* (user-account (name "opal") (comment "opal") (group "users") (home-directory "/home/opal") (supplementary-groups '("wheel" "netdev" "audio" "video"))) %base-user-accounts)) (packages (append (list (specification->package "git") (specification->package "wl-clipboard") (specification->package "vim") (specification->package "nss-certs") (specification->package "stow") (specification->package "exfat-utils") (specification->package "emacs") (specification->package "emacs-exwm") (specification->package "sway") (specification->package "swaybg") (specification->package "swaylock") (specification->package "swayidle") (specification->package "polybar") (specification->package "nyxt") (specification->package "dmenu") (specification->package "bluez") (specification->package "bluez-alsa") (specification->package "pulseaudio") (specification->package "keepassxc") (specification->package "font-fira-mono") (specification->package "font-fira-sans") (specification->package "font-fira-code") (specification->package "gcc-toolchain")) %base-packages)) (services (append (modify-services %desktop-services (delete gdm-service-type)) (list (service sddm-service-type (sddm-configuration (display-server "wayland")))))) (bootloader (bootloader-configuration (bootloader grub-efi-bootloader) (targets (list "/boot/efi")) (keyboard-layout keyboard-layout))) (mapped-devices (list (mapped-device (source (uuid "40aa6387-e935-4f70-8e7d-1975678a5a32")) (target "cryptroot") (type luks-device-mapping)))) (file-systems (cons* (file-system (mount-point "/") (device "/dev/mapper/cryptroot") (type "btrfs") (dependencies mapped-devices)) (file-system (mount-point "/boot/efi") (device (uuid "1C3B-10F5" 'fat32)) (type "vfat")) %base-file-systems))) ;; (setuid-programs ;; (let ((from (lambda (package file) ;; (setuid-program (program (file-append package file)))))) ;; (cons* (from light "/bin/light") ;; (from mtr "/sbin/mtr") ;; (from network-manager "/bin/nmtui") ;; (from nfs-utils "/sbin/mount.nfs") ;; (from swaylock "/bin/swaylock") ;; %setuid-programs))) ;; (services (cons* ... ;; (modify-services %desktop-services ;; (gdm-service-type config ;; => (gdm-configuration ;; (inherit config) ;; (wayland? #t) ;; (debug? #t)))))) #+end_src ** Work Laptop #+begin_src scheme :tangle ~/Dotfiles/.config/guix/work-laptop.scm :mkdirp yes (use-modules (gnu) (gnu services desktop) (gnu packages wm) (gnu system setuid) (gnu packages admin) (nongnu packages linux)) (use-service-modules cups desktop networking ssh sddm xorg) (operating-system (kernel linux) (firmware (list linux-firmware)) (locale "en_US.utf8") (timezone "America/Los_Angeles") (keyboard-layout (keyboard-layout "us")) (setuid-programs (cons (setuid-program (program (file-append swaylock "/bin/swaylock"))) %setuid-programs)) (host-name "work") (users (cons* (user-account (name "opal") (comment "Opal") (group "users") (home-directory "/home/opal") (supplementary-groups '("wheel" "netdev" "audio" "video"))) %base-user-accounts)) (packages (append (list (specification->package "git") (specification->package "wl-clipboard") (specification->package "vim") (specification->package "nss-certs") (specification->package "stow") (specification->package "exfat-utils") (specification->package "emacs") (specification->package "emacs-exwm") (specification->package "sway") (specification->package "swaybg") (specification->package "swaylock") (specification->package "swayidle") (specification->package "polybar") (specification->package "nyxt") (specification->package "dmenu") (specification->package "bluez") (specification->package "bluez-alsa") (specification->package "pulseaudio") (specification->package "keepassxc") (specification->package "font-fira-mono") (specification->package "font-fira-sans") (specification->package "font-fira-code") (specification->package "gcc-toolchain")) %base-packages)) (services (append (modify-services %desktop-services (delete gdm-service-type)) (list (service sddm-service-type (sddm-configuration (display-server "wayland")))))) (bootloader (bootloader-configuration (bootloader grub-efi-bootloader) (targets (list "/boot/efi")) (keyboard-layout keyboard-layout))) (mapped-devices (list (mapped-device (source (uuid "abe760e2-4ba5-4f43-81a2-1c3f16eb62a8")) (target "cryptroot") (type luks-device-mapping)))) (file-systems (cons* (file-system (mount-point "/") (device "/dev/mapper/cryptroot") (type "btrfs") (dependencies mapped-devices)) (file-system (mount-point "/boot/efi") (device (uuid "15B3-5DE5" 'fat32)) (type "vfat")) %base-file-systems))) #+end_src * Home #+begin_src scheme ;; List of packages that I need to add to a home configuration. (list python-pip libtool emacs-vterm emacs-geiser emacs-geiser-guile make cmake nyxt sbcl python alacritty perl gcc zsh curl wget zathura zathura-pdf-mupdf zathura-pdf-poppler zip unzip thunar papirus-icon-theme guile python-lsp-server) #+end_src