diff options
author | Franz Geffke <franz@pantherx.org> | 2023-06-25 16:07:34 +0100 |
---|---|---|
committer | Franz Geffke <franz@pantherx.org> | 2023-06-25 16:07:34 +0100 |
commit | 54b4056ac571611892c743b65f4c47dc298c49da (patch) | |
tree | 36e4a84137d2b9bc9a241cf82563da6114bf6189 /px/system/config.scm |
initial commit
Diffstat (limited to 'px/system/config.scm')
-rw-r--r-- | px/system/config.scm | 223 |
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 |