267 lines
7.8 KiB
Org Mode
267 lines
7.8 KiB
Org Mode
#+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
|