From 54f433e88e8e3333eef54f7161f35114e25374b1 Mon Sep 17 00:00:00 2001 From: "Christopher R. Nelson" Date: Sun, 18 Jan 2026 21:52:31 -0500 Subject: Initial commit --- crn/system/base.scm | 103 +++++++++++++++++++++++++++++++++++++ crn/system/desktop.scm | 41 +++++++++++++++ crn/system/develop.scm | 16 ++++++ crn/system/nonguix-signing-key.pub | 6 +++ crn/system/nvidia.scm | 20 +++++++ 5 files changed, 186 insertions(+) create mode 100644 crn/system/base.scm create mode 100644 crn/system/desktop.scm create mode 100644 crn/system/develop.scm create mode 100644 crn/system/nonguix-signing-key.pub create mode 100644 crn/system/nvidia.scm (limited to 'crn/system') diff --git a/crn/system/base.scm b/crn/system/base.scm new file mode 100644 index 0000000..e1bd12a --- /dev/null +++ b/crn/system/base.scm @@ -0,0 +1,103 @@ +(define-module (system base) + #:export (make-system)) + +(use-modules (gnu) + (gnu system setuid) + (nongnu packages linux) + (nongnu system linux-initrd)) +(use-package-modules avahi bash nfs) +(use-service-modules admin avahi cups dbus desktop networking nfs ssh xorg) + +(define-public (make-swap swap-devices) + (map (lambda (x) + (swap-space + (target x))) + swap-devices)) + +(define-public (make-fs mount-point fs-device fs-type) + (file-system + (mount-point mount-point) + (device fs-device) + (type fs-type))) + +(define* (make-system #:key + (use-nonguix? #f) + host-name + (locale "en_US.utf8") + (timezone "UTC") + (kbd-layout "us") + user-login + user-fullname + (packages '()) + swap-device + root-device + efi-device + role) + (operating-system + (kernel (if use-nonguix? + linux + linux-libre)) + (initrd (if use-nonguix? + microcode-initrd + base-initrd)) + (firmware (if use-nonguix? + (list linux-firmware) + '())) + + (host-name host-name) + (locale locale) + (timezone timezone) + (keyboard-layout (keyboard-layout kbd-layout)) + (name-service-switch %mdns-host-lookup-nss) + + (users (cons* (user-account + (name user-login) + (comment user-fullname) + (group "users") + (home-directory "/home/christopher") + (supplementary-groups '("wheel" "netdev" "audio" "video"))) + %base-user-accounts)) + + (packages (append (specifications->packages packages) + %base-packages)) + + (setuid-programs + (append (list (setuid-program + (program (file-append nfs-utils "/sbin/mount.nfs")))) + %setuid-programs)) + + (services + (append (list + (service dhcpcd-service-type) + (service nfs-service-type (nfs-configuration)) + (service avahi-service-type (avahi-configuration)) + (service openssh-service-type + (openssh-configuration + (password-authentication? #f))) + (service ntp-service-type) + (service package-database-service-type) + (service unattended-upgrade-service-type)) + + (if use-nonguix? + (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 (local-file "./nonguix-signing-key.pub")) + %default-authorized-guix-keys))))) + %base-services))) + + (bootloader (bootloader-configuration + (bootloader grub-efi-bootloader) + (targets (list "/boot/efi")) + (keyboard-layout keyboard-layout))) + + (swap-devices swap-device) + (file-systems + (cons* root-device + efi-device + %base-file-systems)))) diff --git a/crn/system/desktop.scm b/crn/system/desktop.scm new file mode 100644 index 0000000..234389c --- /dev/null +++ b/crn/system/desktop.scm @@ -0,0 +1,41 @@ +(define-module (system desktop) + #:export (desktop-services) + #:export (desktop-packages)) + +(use-modules (system base) + (gnu) + (gnu system) + (gnu services)) +(use-package-modules wm) +(use-service-modules avahi desktop networking nfs xorg) + +(define desktop-services + (list + (service autofs-service-type + (autofs-configuration + (use-hostname-for-mounts? #t) + (mount-nfs-default-protocol 4) + (mounts + (list + (autofs-indirect-map + (mount-point "/media/houston") + (entries + (list + (autofs-map-entry + (type "nfs") + (device "houston:/exports/&") + (mount-point "*"))))))))) + (service cups-service-type + (cups-configuration + (web-interface? #t))) + (service elogind-service-type) + (service screen-locker-service-type + (screen-locker-configuration + (name "swaylock") + (program (file-append swaylock "/bin/swaylock")) + (using-pam? #t) + (using-setuid? #f))))) + +(define desktop-packages + (specifications->packages '("sway" "wl-clipboard" + "neovim"))) diff --git a/crn/system/develop.scm b/crn/system/develop.scm new file mode 100644 index 0000000..55d1d2f --- /dev/null +++ b/crn/system/develop.scm @@ -0,0 +1,16 @@ +(define-module (system develop) + #:export (develop-services) + #:export (develop-packages)) + +(use-modules (gnu) + (gnu system) + (gnu services)) + +(define develop-services + (list )) + +(define develop-packages + (specifications->packages '("direnv" + "gcc-toolchain" + "neovim" + "tmux"))) diff --git a/crn/system/nonguix-signing-key.pub b/crn/system/nonguix-signing-key.pub new file mode 100644 index 0000000..56ee811 --- /dev/null +++ b/crn/system/nonguix-signing-key.pub @@ -0,0 +1,6 @@ +(public-key + (ecc + (curve Ed25519) + (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#) + ) + ) diff --git a/crn/system/nvidia.scm b/crn/system/nvidia.scm new file mode 100644 index 0000000..413b37e --- /dev/null +++ b/crn/system/nvidia.scm @@ -0,0 +1,20 @@ +(define-module (system nvidia) + #:export (nvidia-kernel-arguments) + #:export (nvidia-services) + #:export (nvidia-packages)) + +(use-modules (gnu) + (nongnu packages linux) + (nongnu packages nvidia) + (nongnu services nvidia) + (nongnu system linux-initrd)) + +(define nvidia-kernel-arguments + '("modprobe.blacklist=nouveau" + "nvidia_drm.modeset=1")) + +(define nvidia-services + (list (service nvidia-service-type))) + +(define nvidia-packages + (specifications->packages '("cuda-toolkit"))) -- cgit v1.2.3