From fae1e870f9b46787f95a9ab8736205784390a389 Mon Sep 17 00:00:00 2001 From: Thanos Apollo Date: Sun, 2 Jun 2024 08:11:24 +0300 Subject: guix:(system) Add system-create --- guix/system-create.scm | 153 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 guix/system-create.scm (limited to 'guix') diff --git a/guix/system-create.scm b/guix/system-create.scm new file mode 100644 index 0000000..c87ee74 --- /dev/null +++ b/guix/system-create.scm @@ -0,0 +1,153 @@ + +(define-module (system-create) + #:use-module (gnu) + #:use-module (gnu services) + #:use-module (gnu services dbus) + #:use-module (gnu system) + #:use-module (gnu system setuid) + #:use-module (gnu system nss) + #:use-module (nongnu packages linux) + #:use-module (nongnu system linux-initrd) + #:use-module (rosenthal services networking) + #:export (system-create)) + +(use-service-modules cups desktop networking ssh xorg docker guix + admin pm docker) + +(use-package-modules nfs certs shells ssh linux bash emacs networking + wm fonts libusb cups freedesktop file-systems version-control + package-management) + +(define thanos/system-packages + '("sway" "swaylock" "swaylock-effects" "swaybg" + "waybar" "gnupg" "pinentry" "font-jetbrains-mono" + "docker" "docker-cli")) + +(define* (system-create #:key + (system-packages thanos/system-packages) + (kernel linux-lts) + (time-zone "Europe/Athens") + hostname + filesystem + swap-uuid + (swapcaps? #t)) + (operating-system + (locale "en_US.utf8") + (timezone time-zone) + (host-name hostname) + (keyboard-layout (if swapcaps? + (keyboard-layout "us" #:options '("ctrl:swapcaps")) + (keyboard-layout "us"))) + + ;; TODO: Use the full linux kernel only on the desktop + (kernel kernel) + (initrd microcode-initrd) + (firmware (list linux-firmware)) + + ;; The list of user accounts ('root' is implicit). + (users (cons* (user-account + (name "thanos") + (comment "Thanos Apollo") + (group "users") + (home-directory "/home/thanos") + (supplementary-groups '("wheel" "netdev" "audio" "video" "docker"))) + %base-user-accounts)) + + ;; Packages installed system-wide. + (packages + (append (map specification->package system-packages) + %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 + (service docker-service-type) + ;; tty login + (service elogind-service-type) + + (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"))) + + (service greetd-service-type + (greetd-configuration + (greeter-supplementary-groups + (list "video" "input")) + (terminals + (list + (greetd-terminal-configuration + (terminal-vt "1") + (terminal-switch #t)) + (greetd-terminal-configuration + (terminal-vt "2")) + (greetd-terminal-configuration + (terminal-vt "3")) + (greetd-terminal-configuration + (terminal-vt "4")) + (greetd-terminal-configuration + (terminal-vt "5")))))) + + (service gnome-desktop-service-type) + + + (service openssh-service-type + (openssh-configuration + (permit-root-login 'prohibit-password))) + + ;; TODO: Fix swaylock + (service screen-locker-service-type + (screen-locker-configuration + (name "swaylock") + (program (file-append swaylock "/bin/swaylock")) + (using-pam? #t) + (using-setuid? #f))) + + ;; Networking services + (service network-manager-service-type) + (service wpa-supplicant-service-type) ;; Needed by NetworkManager + (service modem-manager-service-type) ;; For cellular modems + + polkit-wheel-service + + (service tor-service-type) + (service cups-service-type) + + ;; (service avahi-service-type) + (service udisks-service-type) + (service upower-service-type) + (service cups-pk-helper-service-type) + (service geoclue-service-type) + ;; (service polkit-service-type) + ;; (service dbus-root-service-type) + fontconfig-file-system-service ;; Manage the fontconfig cache + + ;; Power and thermal management services + (service thermald-service-type) + (service tlp-service-type + (tlp-configuration + (cpu-boost-on-ac? #t) + (wifi-pwr-on-bat? #t))) + (service tailscale-service-type)) + + (modify-services %base-services + (delete login-service-type) + (delete mingetty-service-type) + (delete console-font-service-type)))) + + + (bootloader (bootloader-configuration + (bootloader grub-efi-bootloader) + (targets (list "/boot/efi")) + (keyboard-layout keyboard-layout))) + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (swap-devices (list (swap-space + (target (uuid swap-uuid))))) + + ;; run 'lsblk -f' to get UUIDs. + (file-systems filesystem))) -- cgit v1.2.3