diff options
Diffstat (limited to 'px/system')
-rw-r--r-- | px/system/config.scm | 123 | ||||
-rw-r--r-- | px/system/install.scm | 8 | ||||
-rw-r--r-- | px/system/os.scm | 298 | ||||
-rw-r--r-- | px/system/raspberry.scm | 252 |
4 files changed, 336 insertions, 345 deletions
diff --git a/px/system/config.scm b/px/system/config.scm index 6ec4f4c..ee27e77 100644 --- a/px/system/config.scm +++ b/px/system/config.scm @@ -26,49 +26,50 @@ 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 + ;; Re-export for convenience + #:re-export (%px-core-services - px-desktop-service-type + px-desktop-service-type - %px-desktop-services - %px-desktop-ee-services + %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-server-services + %px-server-ee-services - %px-core-packages + %px-core-arm-services + %px-gui-arm-services + %px-desktop-arm-services - %px-desktop-packages-gtk - %px-desktop-packages-qt - %px-desktop-packages - %px-desktop-ee-packages + %px-core-packages - %px-server-packages - %px-server-ee-packages - %px-core-arm-packages - %px-gui-arm-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")))) + (list (swap-space + (target "/swapfile")))) (define %px-server-open-ports-common '(("tcp" "ssh" "http" "https"))) @@ -77,8 +78,8 @@ ;;; CORE ;;; -(define* (px-core-os os-config #:key - (kernel 'libre) +(define* (px-core-os os-config + #:key (kernel 'libre) (templates '()) (open-ports #f) (authorized-keys '())) @@ -95,15 +96,15 @@ ;;; DESKTOP ;;; -(define* (px-desktop-os os-config #:key - (kernel 'nonlibre) +(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))) + (inherit os-config) + (swap-devices (prepare-swap-devices os-config + %px-desktop-swap-devices))) #:kernel kernel #:open-ports open-ports #:authorized-keys authorized-keys @@ -111,15 +112,15 @@ #:default-packages %px-desktop-packages #:default-services %px-desktop-services)) -(define* (px-desktop-ee-os os-config #:key - (kernel 'nonlibre) +(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))) + (inherit os-config) + (swap-devices (prepare-swap-devices os-config + %px-desktop-swap-devices))) #:kernel kernel #:open-ports open-ports #:authorized-keys authorized-keys @@ -127,8 +128,8 @@ #:default-packages %px-desktop-ee-packages #:default-services %px-desktop-ee-services)) -(define* (px-new-desktop os-config #:key - (kernel 'nonlibre) +(define* (px-new-desktop os-config + #:key (kernel 'nonlibre) (open-ports #f) (authorized-keys '()) (templates '())) @@ -144,8 +145,8 @@ ;;; SERVER ;;; -(define* (px-server-os os-config #:key - (kernel 'libre) +(define* (px-server-os os-config + #:key (kernel 'libre) (templates '()) (open-ports %px-server-open-ports-common) (authorized-keys '())) @@ -157,8 +158,8 @@ #:default-packages %px-server-packages #:default-services %px-server-services)) -(define* (px-server-ee-os os-config #:key - (kernel 'libre) +(define* (px-server-ee-os os-config + #:key (kernel 'libre) (templates '()) (open-ports %px-server-open-ports-common) (authorized-keys '())) @@ -170,7 +171,6 @@ #:default-packages %px-server-ee-packages #:default-services %px-server-ee-services)) - ;;; ;;; ARM ;;; @@ -180,28 +180,27 @@ (host-name "pantherx") (timezone "Europe/Berlin") (locale "en_US.utf8") - + (bootloader (bootloader-configuration - (bootloader u-boot-bootloader) - (targets '("/dev/vda")))) - + (bootloader u-boot-bootloader) + (targets '("/dev/vda")))) + (file-systems (cons (file-system (device "/dev/sda1") (mount-point "/") - (type "ext4")) - %base-file-systems)) - + (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)) + (supplementary-groups '("wheel" "netdev" "lp" "video" + "audio"))) %base-user-accounts)) (packages %px-core-arm-packages) - (services %px-core-arm-services) + (services + %px-core-arm-services) (name-service-switch %mdns-host-lookup-nss))) (define px-gui-arm-os @@ -209,15 +208,19 @@ (inherit px-core-arm-os) (host-name "pantherx") (packages %px-gui-arm-packages) - (services %px-gui-arm-services))) + (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))) + (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) + (inherit os-config) - (packages selected-packages) - (services selected-services) + (packages selected-packages) + (services + selected-services) - (name-service-switch %mdns-host-lookup-nss))))
\ No newline at end of file + (name-service-switch %mdns-host-lookup-nss)))) diff --git a/px/system/install.scm b/px/system/install.scm index 76e855b..bbabcab 100644 --- a/px/system/install.scm +++ b/px/system/install.scm @@ -1,9 +1,5 @@ -;;; PantherX disk image configuration file -;;; -;;; Author: Reza Alizadeh Majd <r.majd@PantherX.org> -;;; Version: 1.0.0 -;;; Time-stamp: <2022-02-09 21:33:50 reza> - +;; PantherX disk image configuration file +;; Reza Alizadeh Majd <r.majd@PantherX.org> ;; Generate a bootable image (e.g. for USB sticks, etc.) with: ;; $ guix system disk-image path/to/px-install.scm ;; Using Guix time-machine diff --git a/px/system/os.scm b/px/system/os.scm index f397fbd..fec1984 100644 --- a/px/system/os.scm +++ b/px/system/os.scm @@ -19,7 +19,6 @@ #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:export (make-os - os-template os-template-service @@ -34,87 +33,82 @@ ;; This is not used anywhere ;; %px-artwork-repository ;; %px-grub-theme - + ;; %px-substitute-server-url ;; %px-substitute-server-key - apply-px-substitute-server - )) + apply-px-substitute-server)) ;;; ;;; Templates ;;; -(define-record-type* <os-template-service> - os-template-service make-os-template-service +(define-record-type* <os-template-service> os-template-service + make-os-template-service os-template-service? - (type os-template-service-type) ; type of modification required: 'add 'edit 'delete - (kind os-template-service-kind) ; service-kind that needs to be matched - (action os-template-service-action ; action to be applied on service + (type os-template-service-type) ;type of modification required: 'add 'edit 'delete + (kind os-template-service-kind) ;service-kind that needs to be matched + (action os-template-service-action ;action to be applied on service (default #f))) -(define-record-type* <os-template> - os-template make-os-template +(define-record-type* <os-template> os-template make-os-template os-template? - (title os-template-title) - (firmwares os-template-firmwares ; list of firmwares to be installed + (title os-template-title) + (firmwares os-template-firmwares ;list of firmwares to be installed (default '())) - (packages os-template-packages ; list of <package> to be installed - (default '())) - (services os-template-services ; list of <os-template-service> - (default '()))) + (packages os-template-packages ;list of <package> to be installed + (default '())) + (services os-template-services ;list of <os-template-service> + (default '()))) (define (apply-template-firmwares initial-firmwares template-firmwares) (fold (lambda (firmware result) - (if (memq firmware result) - result - (cons firmware result))) - initial-firmwares - template-firmwares)) + (if (memq firmware result) result + (cons firmware result))) initial-firmwares template-firmwares)) (define (apply-template-package-imports initial-packages template-packages) (fold (lambda (pkg result) - (if (memq pkg result) - result - (cons pkg result))) - initial-packages - template-packages)) + (if (memq pkg result) result + (cons pkg result))) initial-packages template-packages)) -(define (apply-template-service-modifications initial-services template-services) +(define (apply-template-service-modifications initial-services + template-services) (fold (lambda (svc result) (match svc (($ <os-template-service> type kind action) (case type - ((add) (cons (if action - (service kind action) - (service kind)) - result)) - ((edit) (modify-services result - (kind config => (action config)))) - ((delete) (remove (lambda (s) - (eq? (service-kind s) kind)) - result)) - (else result))))) - initial-services - template-services)) + ((add) + (cons (if action + (service kind action) + (service kind)) result)) + ((edit) + (modify-services result + (kind config => + (action config)))) + ((delete) + (remove (lambda (s) + (eq? (service-kind s) kind)) result)) + (else result))))) initial-services template-services)) (define (apply-templates os-configuration os-templates) (fold (lambda (template result) - (let ((target-firmwares (apply-template-firmwares - (operating-system-firmware os-configuration) - (os-template-firmwares template))) - (target-packages (apply-template-package-imports - (operating-system-packages result) - (os-template-packages template))) - (target-services (apply-template-service-modifications - (operating-system-user-services result) - (os-template-services template)))) + (let ((target-firmwares (apply-template-firmwares (operating-system-firmware + os-configuration) + (os-template-firmwares + template))) + (target-packages (apply-template-package-imports (operating-system-packages + result) + (os-template-packages + template))) + (target-services (apply-template-service-modifications (operating-system-user-services + result) + (os-template-services + template)))) (operating-system - (inherit result) - (firmware target-firmwares) - (packages target-packages) - (services target-services)))) - os-configuration - os-templates)) + (inherit result) + (firmware target-firmwares) + (packages target-packages) + (services + target-services)))) os-configuration os-templates)) ;; ;; Firewall customization @@ -123,38 +117,48 @@ (define (make-firewall-rules open-ports) (define (make-port-rules open-ports status) "Generate list of strings each is a port/service rule for nftables" - (reduce-right append '() + (reduce-right append + '() (map (match-lambda ((protocol ports ...) (map (lambda (port) - (string-append " " protocol " dport " port " " status)) - ports))) - open-ports))) + (string-append " " + protocol + " dport " + port + " " + status)) ports))) open-ports))) (let ((port-rules (make-port-rules open-ports "accept"))) (plain-file "nftables" - (string-append - "#PantherX firewall rules\n" + (string-append "#PantherX firewall rules\n" "table inet filter {\n" " chain input {\n" - " type filter hook input priority 0; policy drop;\n" + " type filter hook input priority 0; policy drop; +" " # early drop of invalid connections\n" " ct state invalid drop\n" - " # allow established/related connections\n" - " ct state { established, related } accept\n" + " # allow established/related connections +" + " ct state { established, related } accept +" " # allow from loopback\n" " iifname lo accept\n" " # allow icmp\n" " ip protocol icmp accept\n" " ip6 nexthdr icmpv6 accept\n" - (string-join port-rules "\n" 'suffix) + (string-join port-rules "\n" + 'suffix) " # reject everything else\n" - " reject with icmpx type port-unreachable\n" + " reject with icmpx type port-unreachable +" " }\n" " chain forward {\n" - " type filter hook forward priority 0; policy drop;\n" + " type filter hook forward priority 0; policy drop; +" " }\n" " chain output {\n" - " type filter hook output priority 0; policy accept;\n" + " type filter hook output priority 0; policy accept; +" " }\n" "}\n")))) @@ -165,27 +169,24 @@ (define %px-artwork-repository (let ((commit "ecfd456e814a59e3b6743bcda83eab5d5c12ae99")) (origin - (method git-fetch) - (uri (git-reference - (url "https://git.pantherx.org/development/desktop/px-artwork.git") - (commit commit))) - (file-name (string-append "px-artwork-" (string-take commit 7) - "-checkout")) - (sha256 - (base32 - "06i47c8qp239c9rgkcizk3jd8rld4qbx90s5gg1a1rw1x90p245z"))))) + (method git-fetch) + (uri (git-reference (url + "https://git.pantherx.org/development/desktop/px-artwork.git") + (commit commit))) + (file-name (string-append "px-artwork-" + (string-take commit 7) "-checkout")) + (sha256 (base32 "06i47c8qp239c9rgkcizk3jd8rld4qbx90s5gg1a1rw1x90p245z"))))) (define %px-grub-theme - (grub-theme - (image (file-append %px-artwork-repository - "/grub/PantherX-4-3.svg")))) + (grub-theme (image (file-append %px-artwork-repository + "/grub/PantherX-4-3.svg")))) (define %px-substitute-server-url "https://packages.pantherx.org") (define %px-substitute-server-key (plain-file "packages.pantherx.org.pub" - "(public-key + "(public-key (ecc (curve Ed25519) (q #E8322D13EA02C09F06CB70FDA2ABBFD5E463F2AA34C18C692F5E25858F4E315D#) @@ -199,50 +200,51 @@ (case (bootloader-name bootloader) ((grub grub-efi) (bootloader-configuration - (inherit bootloader-config) - (theme %px-grub-theme))) + (inherit bootloader-config) + (theme %px-grub-theme))) (else bootloader-config)))) (define (prepare-packages config default-packages) "Check if custom packages provided in system configuration file or not. return @code{default-packages} if there was no modifications applied." (let ((package-list (operating-system-packages config))) - (if (eq? package-list %base-packages) - default-packages - package-list))) + (if (eq? package-list %base-packages) default-packages package-list))) (define (prepare-services config default-services) "Check if custom services provided in system configuration file or not. return @code{default-services} if there is no modification applied." (let ((service-list (operating-system-user-services config))) - (if (eq? service-list %base-services) - default-services - service-list))) + (if (eq? service-list %base-services) default-services service-list))) (define (prepare-swap-devices config default-value) "Check if custom definition provided for swap-devices or not. return @code{defaule-value} if there is no modification applied." (let ((devices (operating-system-swap-devices config))) - (if (eq? devices '()) - default-value - devices))) + (if (eq? devices + '()) default-value devices))) (define (prepare-kernel config kernel) (case kernel - ((libre) linux-libre) - ((nonlibre) linux) + ((libre) + linux-libre) + ((nonlibre) + linux) (else (operating-system-kernel config)))) (define (prepare-initrd config kernel) (case kernel - ((libre) base-initrd) - ((nonlibre) microcode-initrd) + ((libre) + base-initrd) + ((nonlibre) + microcode-initrd) (else (operating-system-initrd config)))) (define (prepare-firmwares config kernel) (case kernel - ((libre) %base-firmware) - ((nonlibre) (list linux-firmware)) + ((libre) + %base-firmware) + ((nonlibre) + (list linux-firmware)) (else (operating-system-firmware config)))) ;; @@ -252,15 +254,16 @@ return @code{defaule-value} if there is no modification applied." (define (apply-px-substitute-server guix-config) (let ((existing-urls (guix-configuration-substitute-urls guix-config)) (existing-keys (guix-configuration-authorized-keys guix-config))) - (guix-configuration - (inherit guix-config) - (substitute-urls (append (list %px-substitute-server-url) - existing-urls)) - (authorized-keys (append (list %px-substitute-server-key) - existing-keys))))) - -(define* (make-os config #:key - (kernel 'libre) + (guix-configuration (inherit guix-config) + (substitute-urls (append (list + %px-substitute-server-url) + existing-urls)) + (authorized-keys (append (list + %px-substitute-server-key) + existing-keys))))) + +(define* (make-os config + #:key (kernel 'libre) (open-ports #f) (authorized-keys '()) (templates '()) @@ -270,50 +273,57 @@ return @code{defaule-value} if there is no modification applied." packages and services" (define (apply-firewall-rules config) - (nftables-configuration - (inherit config) - (ruleset (if open-ports - (make-firewall-rules open-ports) - (nftables-configuration-ruleset config))))) + (nftables-configuration (inherit config) + (ruleset (if open-ports + (make-firewall-rules open-ports) + (nftables-configuration-ruleset + config))))) + (define (apply-authorized-keys config) (if (> (length authorized-keys) 0) - (openssh-configuration - (inherit config) - (authorized-keys authorized-keys)) - config)) + (openssh-configuration (inherit config) + (authorized-keys authorized-keys)) config)) + (define (apply-swap-changes config) (let ((devices (operating-system-swap-devices config))) - (if (eq? devices '()) - (list (swap-space (target "/swapfile"))) - devices))) + (if (eq? devices + '()) + (list (swap-space + (target "/swapfile"))) devices))) + (let ((target-kernel (prepare-kernel config kernel)) (target-initrd (prepare-initrd config kernel)) (target-firmwares (prepare-firmwares config kernel)) (target-bootloader (adjust-bootloader-theme config)) (target-packages (prepare-packages config default-packages)) (target-services (prepare-services config default-services))) - (apply-templates - (operating-system - (inherit config) - (bootloader target-bootloader) - (kernel target-kernel) - (initrd target-initrd) - (firmware target-firmwares) - (swap-devices (apply-swap-changes config)) - - (packages target-packages) - (services (fold (lambda (svc result) - (let ((type (service-kind svc)) - (value (service-value svc))) - (cond - ((eq? type guix-service-type) - (cons (service guix-service-type (apply-px-substitute-server value)) result)) - ((eq? type nftables-service-type) - (cons (service nftables-service-type (apply-firewall-rules value)) result)) - ((eq? type openssh-service-type) - (cons (service openssh-service-type (apply-authorized-keys value)) result)) - (else (cons svc result))))) - '() - target-services)) - (name-service-switch %mdns-host-lookup-nss)) - templates))) + + (apply-templates (operating-system + (inherit config) + (bootloader target-bootloader) + (kernel target-kernel) + (initrd target-initrd) + (firmware target-firmwares) + (swap-devices (apply-swap-changes config)) + + (packages target-packages) + (services + (fold (lambda (svc result) + (let ((type (service-kind svc)) + (value (service-value svc))) + (cond + ((eq? type guix-service-type) + (cons (service guix-service-type + (apply-px-substitute-server + value)) result)) + ((eq? type nftables-service-type) + (cons (service nftables-service-type + (apply-firewall-rules + value)) result)) + ((eq? type openssh-service-type) + (cons (service openssh-service-type + (apply-authorized-keys + value)) result)) + (else (cons svc result))))) + '() target-services)) + (name-service-switch %mdns-host-lookup-nss)) templates))) diff --git a/px/system/raspberry.scm b/px/system/raspberry.scm index f63c69c..f9b903d 100644 --- a/px/system/raspberry.scm +++ b/px/system/raspberry.scm @@ -38,13 +38,8 @@ %reterminal-gui-services reterminal-gui-os)) - (define %raspberrypi-config-params - (list "enable_uart=1" - "uart_2ndstage=1" - "arm_64bit=1" - "kernel=u-boot.bin")) - + (list "enable_uart=1" "uart_2ndstage=1" "arm_64bit=1" "kernel=u-boot.bin")) (define %raspberrypi-cmdline-params (list "root=LABEL=RASPIROOT rw rootwait" @@ -52,90 +47,89 @@ "selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N" "dwc_otg.lpm_enable=0 kgdboc=serial0,115200")) - (define (make-raspberrypi-boot-partition config cmdline) - (partition - (size (* 128 (expt 2 20))) - (label "BOOT") - (file-system "fat32") - (flags '()) - (initializer - (gexp (lambda* (root #:key #:allow-other-keys) - (use-modules (guix build utils)) - (mkdir-p root) - (copy-recursively #$(file-append u-boot-rpi-arm64 "/libexec/u-boot.bin" ) - (string-append root "/u-boot.bin")) - (copy-recursively #$(file-append raspberrypi-firmware "/" ) root) - (copy-recursively #$(file-append seeed-reterminal-dtoverlays "/" ) - (string-append root "/overlays")) - (copy-recursively #$(plain-file "config.txt" - (string-join config "\n")) - (string-append root "/config.txt")) - (copy-recursively #$(plain-file "cmdline.txt" - (string-join cmdline " ")) - (string-append root "/cmdline.txt")) - ))))) + (partition (size (* 128 + (expt 2 20))) + (label "BOOT") + (file-system + "fat32") + (flags '()) + (initializer #~(lambda* (root #:key #:allow-other-keys) + (use-modules (guix build utils)) + (mkdir-p root) + (copy-recursively #$(file-append + u-boot-rpi-arm64 + "/libexec/u-boot.bin") + (string-append root + "/u-boot.bin")) + (copy-recursively #$(file-append + raspberrypi-firmware "/") + root) + (copy-recursively #$(file-append + seeed-reterminal-dtoverlays + "/") + (string-append root + "/overlays")) + (copy-recursively #$(plain-file "config.txt" + (string-join + config "\n")) + (string-append root + "/config.txt")) + (copy-recursively #$(plain-file "cmdline.txt" + (string-join + cmdline " ")) + (string-append root + "/cmdline.txt")))))) (define %raspberrypi-boot-partition (make-raspberrypi-boot-partition %raspberrypi-config-params %raspberrypi-cmdline-params)) - (define %raspberrypi-root-partition - (partition - (size 'guess) - (label "RASPIROOT") - (file-system "ext4") - (flags '(boot)) - (initializer (gexp initialize-root-partition)))) - + (partition (size 'guess) + (label "RASPIROOT") + (file-system + "ext4") + (flags '(boot)) + (initializer #~initialize-root-partition))) (define raspberrypi-image-type - (image-type - (name 'raspberrypi-raw) - (constructor (cut image-with-os - (image-without-os - (format 'disk-image) - (partitions (list %raspberrypi-boot-partition - %raspberrypi-root-partition))) - <>)))) - + (image-type (name 'raspberrypi-raw) + (constructor (cut image-with-os + (image-without-os (format 'disk-image) + (partitions (list + %raspberrypi-boot-partition + %raspberrypi-root-partition))) + <>)))) (define raspberrypi-gui-os (operating-system (inherit px-gui-arm-os) - + (bootloader (bootloader-configuration - (bootloader u-boot-rpi-arm64-bootloader) - (targets '("/dev/vda")) + (bootloader u-boot-rpi-arm64-bootloader) + (targets '("/dev/vda")) (device-tree-support? #f))) (kernel linux-raspberry-5.15) - (kernel-arguments (cons* "cgroup_enable=memory" - %default-kernel-arguments)) + (kernel-arguments (cons* "cgroup_enable=memory" %default-kernel-arguments)) (initrd-modules '()) - (firmware (list raspberrypi-firmware - brcm80211-firmware - bluez-firmware)) + (firmware (list raspberrypi-firmware brcm80211-firmware bluez-firmware)) (file-systems (cons* (file-system - (device (file-system-label "BOOT")) - (mount-point "/boot/firmware") - (type "vfat")) + (device (file-system-label "BOOT")) + (mount-point "/boot/firmware") + (type "vfat")) (file-system - (device (file-system-label "RASPIROOT")) - (mount-point "/") - (type "ext4")) - %base-file-systems)) - (services (cons* (service btuart-service-type) - %px-gui-arm-services)))) - + (device (file-system-label "RASPIROOT")) + (mount-point "/") + (type "ext4")) %base-file-systems)) + (services + (cons* (service btuart-service-type) %px-gui-arm-services)))) (define raspberrypi-gui-image - (image - (inherit - (os+platform->image raspberrypi-gui-os aarch64-linux - #:type raspberrypi-image-type)) - (partition-table-type 'mbr) - (name 'raspberrypi-gui-image))) + (image (inherit (os+platform->image raspberrypi-gui-os aarch64-linux + #:type raspberrypi-image-type)) + (partition-table-type 'mbr) + (name 'raspberrypi-gui-image))) ;; ;; SEEED reTerminal core configurations @@ -152,7 +146,7 @@ "dtoverlay=reTerminal,tp_rotate=0" "dtoverlay=reTerminal-bridge" "dtoverlay=reTerminal,key0=0x043,key1=0x044,key2=0x057,key3=0x058" - "vt.global_cursor_default=0" + "vt.global_cursor_default=0" %raspberrypi-config-params)) (define %reterminal-cmdline-params @@ -162,87 +156,74 @@ (make-raspberrypi-boot-partition %reterminal-config-params %reterminal-cmdline-params)) - (define reterminal-image-type - (image-type - (name 'reterminal-image-raw) - (constructor (cut image-with-os - (image-without-os - (format 'disk-image) - (partitions (list %reterminal-boot-partition - %raspberrypi-root-partition))) - <>)))) + (image-type (name 'reterminal-image-raw) + (constructor (cut image-with-os + (image-without-os (format 'disk-image) + (partitions (list + %reterminal-boot-partition + %raspberrypi-root-partition))) + <>)))) (define %reterminal-core-packages %px-core-arm-packages) - (define %reterminal-core-services %px-core-arm-services) - (define* (reterminal-core-os #:key (open-ports %px-server-open-ports-common) - (authorized-keys '())) - (make-os - (operating-system - (host-name "reterminal-core") - (timezone "Europe/Berlin") - (locale "en_US.utf8") - - (bootloader (bootloader-configuration - (bootloader u-boot-rpi-arm64-bootloader) - (targets '("/dev/vda")) - (device-tree-support? #f))) - (initrd-modules '()) - (kernel linux-raspberry-5.15) - (kernel-loadable-modules %reterminal-kernel-modules) - (kernel-arguments (cons* "cgroup_enable=memory" - %default-kernel-arguments)) - (file-systems (cons* (file-system - (device (file-system-label "BOOT")) - (mount-point "/boot/firmware") - (type "vfat")) - (file-system - (device (file-system-label "RASPIBOOT")) - (mount-point "/") - (type "ext4")) - %base-file-systems)) - (users (cons (user-account - (name "panther") - (comment "panther's account") - (group "users") - (password (crypt "pantherx" "$6$abc")) - (supplementary-groups '("wheel" - "audio" "video")) - (home-directory "/home/panther")) - %base-user-accounts)) - (name-service-switch %mdns-host-lookup-nss)) - #:kernel 'custom - #:open-ports open-ports - #:authorized-keys authorized-keys - #:templates (list %raspberry-pi-4-template - %seeed-reterminal-template) - #:default-packages %reterminal-core-packages - #:default-services %reterminal-core-services) - ) + (authorized-keys '())) + (make-os (operating-system + (host-name "reterminal-core") + (timezone "Europe/Berlin") + (locale "en_US.utf8") + + (bootloader (bootloader-configuration + (bootloader u-boot-rpi-arm64-bootloader) + (targets '("/dev/vda")) + (device-tree-support? #f))) + (initrd-modules '()) + (kernel linux-raspberry-5.15) + (kernel-loadable-modules %reterminal-kernel-modules) + (kernel-arguments (cons* "cgroup_enable=memory" + %default-kernel-arguments)) + (file-systems (cons* (file-system + (device (file-system-label "BOOT")) + (mount-point "/boot/firmware") + (type "vfat")) + (file-system + (device (file-system-label "RASPIBOOT")) + (mount-point "/") + (type "ext4")) %base-file-systems)) + (users (cons (user-account + (name "panther") + (comment "panther's account") + (group "users") + (password (crypt "pantherx" "$6$abc")) + (supplementary-groups '("wheel" "audio" "video")) + (home-directory "/home/panther")) + %base-user-accounts)) + (name-service-switch %mdns-host-lookup-nss)) + #:kernel 'custom + #:open-ports open-ports + #:authorized-keys authorized-keys + #:templates (list %raspberry-pi-4-template + %seeed-reterminal-template) + #:default-packages %reterminal-core-packages + #:default-services %reterminal-core-services)) (define reterminal-core-image - (image - (inherit - (os+platform->image (reterminal-core-os) - aarch64-linux - #:type reterminal-image-type)) - (partition-table-type 'mbr) - (name 'reterminal-core-image))) + (image (inherit (os+platform->image (reterminal-core-os) aarch64-linux + #:type reterminal-image-type)) + (partition-table-type 'mbr) + (name 'reterminal-core-image))) ;; ;; SEEED reTerminal GUI configuration ;; - (define %reterminal-gui-packages - (cons* seeed-reterminal-dtoverlays - %px-gui-arm-packages)) + (cons* seeed-reterminal-dtoverlays %px-gui-arm-packages)) (define %reterminal-gui-services %px-gui-arm-services) @@ -252,4 +233,5 @@ (inherit raspberrypi-gui-os) (kernel-loadable-modules %reterminal-kernel-modules) (packages %reterminal-gui-packages) - (services %reterminal-gui-services))) + (services + %reterminal-gui-services))) |