aboutsummaryrefslogtreecommitdiff
path: root/crn/system
diff options
context:
space:
mode:
Diffstat (limited to 'crn/system')
-rw-r--r--crn/system/base.scm103
-rw-r--r--crn/system/desktop.scm41
-rw-r--r--crn/system/develop.scm16
-rw-r--r--crn/system/nonguix-signing-key.pub6
-rw-r--r--crn/system/nvidia.scm20
5 files changed, 186 insertions, 0 deletions
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")))