summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorThanos Apollo <[email protected]>2024-06-02 08:11:24 +0300
committerThanos Apollo <[email protected]>2024-06-02 08:11:24 +0300
commitfae1e870f9b46787f95a9ab8736205784390a389 (patch)
tree85e5062c4576f4667f601c193f093c4fc27782f9 /guix
parent260a1c692b9c89b3c39854cb5d3a8c0dfc9afa77 (diff)
guix:(system) Add system-create
Diffstat (limited to 'guix')
-rw-r--r--guix/system-create.scm153
1 files changed, 153 insertions, 0 deletions
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)))