;; $ TODO ;; implement things from configuration.nix ;; add other missing packages ;; write pkg for ratune ;; fix TERMINFO_DIRS pass to sudo ;; get clangd lsp set up ;; $ TODO ;; Indicate which modules to import to access the variables ;; used in this configuration. (use-modules (gnu)) (use-modules (nongnu packages linux)) (use-modules (mangowm)) (use-modules (rosenthal services networking)) (use-modules (gnu packages gnupg) (gnu packages security-token) (gnu services security-token)) (use-modules (gnu services base) (gnu services) (gnu services authentication) (gnu services pam-mount) (gnu services desktop) (gnu services security-token) (gnu packages security-token) (gnu packages linux) (gnu packages authentication) (guix gexp)) (use-modules (gnu packages admin)) (use-modules (gnu packages freedesktop)) (use-modules (gnu packages python)) (use-modules (gnu packages android)) (use-modules (gnu packages window-management)) (use-modules (rosenthal packages games)) (use-modules (gnu packages llvm)) (use-modules (gnu packages commencement)) (use-modules (ktk8 packages grabit)) ;;(use-modules (ktk8 packages ratune)) (use-service-modules cups desktop networking ssh xorg) (operating-system (locale "en_US.utf8") (timezone "America/Chicago") (keyboard-layout (keyboard-layout "us")) (host-name "alice") ;; kernel and firmware (kernel linux) (firmware (cons* linux-firmware %base-firmware)) ;; kernel args (kernel-arguments (append %default-kernel-arguments '("libata.force=1.00:noncq"))) ;; The list of user accounts ('root' is implicit). (users (cons* (user-account (name "charlotte") (comment "Charlotte") (group "users") (home-directory "/home/charlotte") (supplementary-groups '("wheel" "netdev" "audio" "video" "plugdev"))) %base-user-accounts)) ;; 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 (specifications->packages (list "foot" "emacs" "git" "mangowm" "font-tamzen" "eww" "swaybg" "rofi" "jq" "swaynotificationcenter" "icecat" "ncurses" "swaylock" "btop" "eza" "gnupg" "pcsc-lite" "python-yubikey-manager" "yubico-piv-tool" "hyfetch" "fastfetch" "ffmpeg" "steam" "imagemagick" "playerctl" "curl" "cava" "file" "unzip" "zip" "7zip" "file-roller" "imv" "mpv" "tree" "grabit" "wl-clipboard" "strace" "gdb" "gajim" "pinentry" "iotop" "sysstat" "heroic" "python" "adb" "android-udev-rules" "gnome-keyring" "wgetpaste" "ansifilter" "openjdk@21" ;; for Minecraft Java "prismlauncher-dolly" ;; build tools/compilers "gcc-toolchain" ;;"clang:extra" doesn't seem to be valid? ;; just the compiler and tools, we use gcc for real C compile work. "make" "cmake" "libtool" "libvterm" "shellcheck" ;; cant install kde apps due to build failure, will investigate. ;;"kdenlive" ;;"krita" )) %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 (simple-service 'nongux-substitutes guix-service-type (guix-extension (substitute-urls (list "https://substitutes.nonguix.org")) (authorized-keys (list (local-file "./signing-key.pub"))))) ;; To configure OpenSSH, pass an 'openssh-configuration' ;; record as a second argument to 'service' below. (service openssh-service-type) (service tailscale-service-type) (service pcscd-service-type) (service gnome-keyring-service-type (gnome-keyring-configuration (pam-services '(("greetd" . login) ("gdm-password" . login) ("passwd" . passwd))))) (service screen-locker-service-type (screen-locker-configuration (name "swaylock") (program (file-append swaylock "/bin/swaylock")) (using-pam? #t) (using-setuid? #f))) ;; android udev rules (udev-rules-service 'android-usb android-udev-rules #:groups '("adbusers")) ;; Yubikey udev rules (udev-rules-service 'fido2 libfido2 #:groups '("plugdev")) ;; Touch auth for login and greetd (simple-service 'pam-u2f pam-root-service-type (list (pam-extension (transformer (lambda (pam) (if (member (pam-service-name pam) '("login" "greetd" "swaylock")) ;; sudo doesnt work, it impersonates uid 1000 to read the key file but never actually switches back to root correctly, only after the credential is cached does it work. (pam-service (inherit pam) (auth (cons (pam-entry (control "sufficient") (module (file-append pam-u2f "/lib/security/pam_u2f.so")) (arguments '("cue" "debug"))) (pam-service-auth pam)))) pam)))))) ;; greetd with tuigreet (service greetd-service-type (greetd-configuration (terminals (list (greetd-terminal-configuration (terminal-vt "7") (terminal-switch #t) (default-session-command #~(string-append #$(file-append tuigreet "/bin/tuigreet") " --time --cmd mango" " --power-shutdown '" #$(file-append elogind "/bin/loginctl") " poweroff'" " --power-reboot '" #$(file-append elogind "/bin/loginctl") " reboot'")))))))) (modify-services %desktop-services (delete gdm-service-type)))) ;; Storage devices (bootloader (bootloader-configuration (bootloader grub-efi-bootloader) (targets (list "/boot/efi")) (keyboard-layout keyboard-layout))) (swap-devices (list (swap-space (target (uuid "5a376195-27e4-4885-9680-0851fa864f66"))))) ;; 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 "/home") (device (uuid "ce943259-5a96-4878-b50c-25fc6814ea67" 'xfs)) (type "xfs")) (file-system (mount-point "/boot/efi") (device (uuid "66E0-DC1F" 'fat32)) (type "vfat")) (file-system (mount-point "/") (device (uuid "ab00bd61-5ae5-4c5e-afad-c30142160675" 'xfs)) (type "xfs")) %base-file-systems)))