dotfiles/guix/system.scm

203 lines
8 KiB
Scheme

;; This is an operating system configuration generated
;; by the graphical installer.
;;
;; Once installation is complete, you can learn and modify
;; this file to tweak the system configuration, and pass it
;; to the 'guix system reconfigure' command to effect your
;; changes.
;; Indicate which modules to import to access the variables
;; used in this configuration.
(use-modules (gnu)
(gnu services)
(gnu services shepherd)
(gnu services dbus)
(gnu system)
(gnu system setuid)
(gnu system nss)
(rosenthal packages wm)
(nongnu packages linux)
(nongnu system linux-initrd))
(use-service-modules cups desktop networking ssh xorg avahi
admin base nix dbus pm audio virtualization sysctl)
(use-package-modules nfs certs shells ssh linux bash emacs gnome networking wm fonts glib libusb
cups freedesktop file-systems version-control package-management)
(define etc-sudoers-config
(plain-file "etc-sudoers-config"
"Defaults timestamp_timeout=480
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
YOUR-USER-NAME ALL=(ALL) NOPASSWD:/run/current-system/profile/bin/chvt,/run/current-system/profile/bin/loginctl"))
(define my-desktop-services
(modify-services %base-services
(guix-service-type config => (guix-configuration
(inherit config)
(substitute-urls
(append (list "https://substitutes.nonguix.org")
%default-substitute-urls))
(authorized-keys
(append (list (plain-file "nonguix.pub" "(public-key (ecc (curve Ed25519) (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)))"))
%default-authorized-guix-keys))))
;; greetd-service-type provides "greetd" PAM service
(delete login-service-type)
(delete console-font-service-type)
;; and can be used in place of mingetty-service-type
(delete mingetty-service-type)
(delete mingetty-service-type)
(delete mingetty-service-type)
(delete mingetty-service-type)
(delete mingetty-service-type)
(delete mingetty-service-type)))
(operating-system
(kernel linux)
(initrd microcode-initrd)
(firmware (list linux-firmware))
(locale "en_US.utf8")
(timezone "America/Chicago")
(keyboard-layout (keyboard-layout "us"))
(host-name "syl")
;; The list of user accounts ('root' is implicit).
(users (cons* (user-account
(name "chris")
(comment "Chris")
(group "users")
(home-directory "/home/chris")
(supplementary-groups '("wheel" "netdev" "tty" "audio" "video")))
%base-user-accounts))
(sudoers-file etc-sudoers-config)
;; Packages installed system-wide. Users can also install packages
;; under their own account: use 'guix search KEYWORD' to search
;; for packages and 'guix install PACKAGE' to install a package.
(packages (append (list (specification->package "nss-certs")
(specification->package "sway")
(specification->package "dbus-glib")
(specification->package "hyprland")
(specification->package "emacs-next-pgtk"))
%base-packages))
;; Below is the list of system services. To search for available
;; services, run 'guix system search KEYWORD' in a terminal.
(services
(append
(list ;; To configure OpenSSH, pass an 'openssh-configuration'
;; record as a second argument to 'service' below.
(service openssh-service-type)
fontconfig-file-system-service
(service sane-service-type)
(service cups-service-type
(cups-configuration
(web-interface? #t)
(extensions
(list cups-filters))))
(simple-service 'mtp udev-service-type (list libmtp))
(udev-rules-service 'pipewire-add-udev-rules pipewire)
(udev-rules-service 'brightnessctl-udev-rules brightnessctl)
(service nix-service-type)
(service thermald-service-type)
(service tlp-service-type
(tlp-configuration
(cpu-boost-on-ac? #t)
(wifi-pwr-on-bat? #t)))
(service screen-locker-service-type
(screen-locker-configuration
(name "swaylock")
(program (file-append 'swaylock-effects "/home/chris/.guix-home/profile/bin/swaylock"))
(allow-empty-password? #f)
(using-pam? #t)
(using-setuid? #f)))
(set-xorg-configuration
(xorg-configuration (keyboard-layout keyboard-layout)))
(service console-font-service-type
(map (lambda (tty)
;; Use a larger font for HIDPI screens
(cons tty (file-append
font-terminus
"/share/consolefonts/ter-132n")))
'("tty1" "tty2" "tty3" "tty4" "tty5" "tty6")))
(service greetd-service-type
(greetd-configuration
(greeter-supplementary-groups
(list "input" "video"))
(terminals
(list
(greetd-terminal-configuration
(terminal-vt "1")
(terminal-switch #t)
(default-session-command
(greetd-agreety-session
(command
(file-append dbus "/bin/dbus-run-session"))
(command-args (list "Hyprland")))))
(greetd-terminal-configuration (terminal-vt "2"))
(greetd-terminal-configuration (terminal-vt "3"))
(greetd-terminal-configuration (terminal-vt "4"))
(greetd-terminal-configuration (terminal-vt "5"))
(greetd-terminal-configuration (terminal-vt "6"))))))
;; NetworkManager and its applet.
(service network-manager-service-type)
(service wpa-supplicant-service-type) ;needed by NetworkManager
(simple-service 'network-manager-applet
profile-service-type
(list network-manager-applet))
(service modem-manager-service-type)
(service usb-modeswitch-service-type)
(service bluetooth-service-type
(bluetooth-configuration
(auto-enable? #t)))
;; The D-Bus clique.
polkit-wheel-service
(service avahi-service-type)
(service udisks-service-type)
(service upower-service-type)
;; (service accountsservice-service-type)
(service cups-pk-helper-service-type)
(service colord-service-type)
(service geoclue-service-type)
(service polkit-service-type)
(service elogind-service-type)
(service dbus-root-service-type)
(service ntp-service-type)
(service x11-socket-directory-service-type))
my-desktop-services))
(bootloader (bootloader-configuration
(bootloader grub-efi-bootloader)
(targets (list "/boot/efi"))
(keyboard-layout keyboard-layout)))
;; The list of file systems that get "mounted". The unique
;; file system identifiers there ("UUIDs") can be obtained
;; by running 'blkid' in a terminal.
(file-systems (cons* (file-system
(mount-point "/boot/efi")
(device (uuid "BA76-3723"
'fat32))
(type "vfat"))
(file-system
(mount-point "/")
(device (uuid
"db28ba7c-a15d-4c81-8373-99f2f171cac5"
'btrfs))
(type "btrfs")) %base-file-systems)))