summaryrefslogtreecommitdiff
path: root/px/system/config.scm
diff options
context:
space:
mode:
authorFranz Geffke <franz@pantherx.org>2023-06-25 16:07:34 +0100
committerFranz Geffke <franz@pantherx.org>2023-06-25 16:07:34 +0100
commit54b4056ac571611892c743b65f4c47dc298c49da (patch)
tree36e4a84137d2b9bc9a241cf82563da6114bf6189 /px/system/config.scm
initial commit
Diffstat (limited to 'px/system/config.scm')
-rw-r--r--px/system/config.scm223
1 files changed, 223 insertions, 0 deletions
diff --git a/px/system/config.scm b/px/system/config.scm
new file mode 100644
index 0000000..6ec4f4c
--- /dev/null
+++ b/px/system/config.scm
@@ -0,0 +1,223 @@
+;;; PantherX System Configuration Module
+;;; This module supports configuration modules for PantherX OS definitions
+;;;
+;;; Reza Alizadeh Majd <r.majd@pantherx.org>
+;;; Franz Geffke <franz@pantherx.org>
+;;;
+
+(define-module (px system config)
+ #:use-module (gnu bootloader)
+ #:use-module (gnu bootloader u-boot)
+ #:use-module (gnu services)
+ #:use-module (gnu system)
+ #:use-module (gnu system accounts)
+ #:use-module (gnu system nss)
+ #:use-module (gnu system file-systems)
+ #:use-module (gnu system shadow)
+ #:use-module (nongnu packages linux)
+ #:use-module (nongnu system linux-initrd)
+ #:use-module (px packages base)
+ #:use-module (px services base)
+ #:use-module (px system os)
+ #:use-module (guix gexp)
+ #:use-module (srfi srfi-1)
+ #:export (px-core-os
+
+ px-desktop-os
+ px-desktop-ee-os
+ px-new-desktop
+
+ px-server-os
+ px-server-ee-os
+
+ px-core-arm-os
+ px-gui-arm-os
+ px-desktop-arm-os
+
+ %px-server-open-ports-common)
+
+;; Re-export for convenience
+#:re-export (%px-core-services
+
+ px-desktop-service-type
+
+ %px-desktop-services
+ %px-desktop-ee-services
+
+ %px-server-services
+ %px-server-ee-services
+
+ %px-core-arm-services
+ %px-gui-arm-services
+ %px-desktop-arm-services
+
+ %px-core-packages
+
+ %px-desktop-packages-gtk
+ %px-desktop-packages-qt
+ %px-desktop-packages
+ %px-desktop-ee-packages
+
+ %px-server-packages
+ %px-server-ee-packages
+ %px-core-arm-packages
+ %px-gui-arm-packages))
+
+;;;
+;;; PantherX Desktop OS defintions
+;;;
+
+(define %px-desktop-swap-devices
+ (list (swap-space (target "/swapfile"))))
+
+(define %px-server-open-ports-common
+ '(("tcp" "ssh" "http" "https")))
+
+;;;
+;;; CORE
+;;;
+
+(define* (px-core-os os-config #:key
+ (kernel 'libre)
+ (templates '())
+ (open-ports #f)
+ (authorized-keys '()))
+ "returns operating-system definition for px-core-os, based on config"
+ (make-os os-config
+ #:kernel kernel
+ #:open-ports open-ports
+ #:authorized-keys authorized-keys
+ #:templates templates
+ #:default-packages %px-core-packages
+ #:default-services %px-core-services))
+
+;;;
+;;; DESKTOP
+;;;
+
+(define* (px-desktop-os os-config #:key
+ (kernel 'nonlibre)
+ (templates '())
+ (open-ports #f)
+ (authorized-keys '()))
+ (make-os (operating-system
+ (inherit os-config)
+ (swap-devices
+ (prepare-swap-devices os-config %px-desktop-swap-devices)))
+ #:kernel kernel
+ #:open-ports open-ports
+ #:authorized-keys authorized-keys
+ #:templates templates
+ #:default-packages %px-desktop-packages
+ #:default-services %px-desktop-services))
+
+(define* (px-desktop-ee-os os-config #:key
+ (kernel 'nonlibre)
+ (templates '())
+ (open-ports #f)
+ (authorized-keys '()))
+ (make-os (operating-system
+ (inherit os-config)
+ (swap-devices
+ (prepare-swap-devices os-config %px-desktop-swap-devices)))
+ #:kernel kernel
+ #:open-ports open-ports
+ #:authorized-keys authorized-keys
+ #:templates templates
+ #:default-packages %px-desktop-ee-packages
+ #:default-services %px-desktop-ee-services))
+
+(define* (px-new-desktop os-config #:key
+ (kernel 'nonlibre)
+ (open-ports #f)
+ (authorized-keys '())
+ (templates '()))
+ (make-os os-config
+ #:kernel kernel
+ #:open-ports open-ports
+ #:authorized-keys authorized-keys
+ #:templates templates
+ #:default-packages %px-desktop-packages
+ #:default-services %px-desktop-services))
+
+;;;
+;;; SERVER
+;;;
+
+(define* (px-server-os os-config #:key
+ (kernel 'libre)
+ (templates '())
+ (open-ports %px-server-open-ports-common)
+ (authorized-keys '()))
+ (make-os os-config
+ #:kernel kernel
+ #:open-ports open-ports
+ #:authorized-keys authorized-keys
+ #:templates templates
+ #:default-packages %px-server-packages
+ #:default-services %px-server-services))
+
+(define* (px-server-ee-os os-config #:key
+ (kernel 'libre)
+ (templates '())
+ (open-ports %px-server-open-ports-common)
+ (authorized-keys '()))
+ (make-os os-config
+ #:kernel kernel
+ #:open-ports open-ports
+ #:authorized-keys authorized-keys
+ #:templates templates
+ #:default-packages %px-server-ee-packages
+ #:default-services %px-server-ee-services))
+
+
+;;;
+;;; ARM
+;;;
+
+(define px-core-arm-os
+ (operating-system
+ (host-name "pantherx")
+ (timezone "Europe/Berlin")
+ (locale "en_US.utf8")
+
+ (bootloader (bootloader-configuration
+ (bootloader u-boot-bootloader)
+ (targets '("/dev/vda"))))
+
+ (file-systems (cons (file-system
+ (device "/dev/sda1")
+ (mount-point "/")
+ (type "ext4"))
+ %base-file-systems))
+
+ (users (cons* (user-account
+ (name "panther")
+ (comment "default user")
+ (group "users")
+ (password (crypt "pantherx" "$6$abc"))
+ (supplementary-groups '("wheel" "netdev" "lp"
+ "video" "audio")))
+ %base-user-accounts))
+
+ (packages %px-core-arm-packages)
+ (services %px-core-arm-services)
+ (name-service-switch %mdns-host-lookup-nss)))
+
+(define px-gui-arm-os
+ (operating-system
+ (inherit px-core-arm-os)
+ (host-name "pantherx")
+ (packages %px-gui-arm-packages)
+ (services %px-gui-arm-services)))
+
+(define (px-desktop-arm-os os-config)
+ (let ((selected-packages (prepare-packages os-config %px-desktop-arm-packages))
+ (selected-services (prepare-services os-config %px-desktop-arm-services)))
+ (operating-system
+ (inherit os-config)
+
+ (packages selected-packages)
+ (services selected-services)
+
+ (name-service-switch %mdns-host-lookup-nss)))) \ No newline at end of file