diff --git a/guix/kaladin.scm b/guix/kaladin.scm new file mode 100644 index 0000000..d8be5e0 --- /dev/null +++ b/guix/kaladin.scm @@ -0,0 +1,202 @@ +;; 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 "kaladin") + + ;; 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 "35A0-C1F1" + 'fat32)) + (type "vfat")) + (file-system + (mount-point "/") + (device (uuid + "9b5a1a62-0de6-4e07-a541-634736980d10" + 'btrfs)) + (type "btrfs")) %base-file-systems)))