From 00e2ae47adbf80b33cbb56cec1d31630c8c347d6 Mon Sep 17 00:00:00 2001 From: Marek Paśnikowski Date: Sun, 18 Aug 2024 21:51:20 +0200 Subject: feat(systems): install akashi system on thinkpad-x200 --- machines/thinkpad-x200.scm | 66 ++++++++++++++++++++++++++++++++++++++++++++++ systems/akashi.scm | 54 +++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 machines/thinkpad-x200.scm create mode 100644 systems/akashi.scm diff --git a/machines/thinkpad-x200.scm b/machines/thinkpad-x200.scm new file mode 100644 index 0000000..4e86398 --- /dev/null +++ b/machines/thinkpad-x200.scm @@ -0,0 +1,66 @@ +(define-module (machines thinkpad-x200) + ;; bootloader-configuration + #:use-module (gnu bootloader) + + ;; grub-bootloader + #:use-module (gnu bootloader grub) + + ;; file-system + ;; swap-space + #:use-module (gnu system file-systems) + + ;; linux + ;; linux-firmware + #:use-module (nongnu packages linux) + + ;; microcode-initrd + #:use-module (nongnu system linux-initrd)) + +;; bootloader-configuration +(define-public (bootloader-configuration* keyboard-layout*) + (let ((bootloader* grub-bootloader) + (bootloader-targets (list "/dev/sda")) ; TODO: generalize the target + ) + (bootloader-configuration (bootloader bootloader*) + (targets bootloader-targets) + (keyboard-layout keyboard-layout*)))) + +;; string -> +;; (list record* file-system) +(define-public (file-systems* host-name*) + (let* ((root-device-string (string-append host-name* "-root")) + + (root-device (file-system-label root-device-string)) + + (file-system-root (file-system (type "ext4") + (mount-point "/") + (device root-device)))) + (list file-system-root))) + +;; (list record* package) +(define-public firmware* + (list linux-firmware)) + +;; (list string) +(define-public hardware-groups + (list "audio" + "netdev" + "video")) + +;; record* package +(define-public initrd* + microcode-initrd) + +;; record* package +(define-public kernel* + linux) + +;; string -> +;; (list record* swap-space) +(define-public (swap-devices* host-name*) + (let* ((label* (string-append host-name* "-swap")) + + (target* (file-system-label label*)) + + (swap-space* (swap-space (target target*)))) + (list swap-space*))) diff --git a/systems/akashi.scm b/systems/akashi.scm new file mode 100644 index 0000000..fc62273 --- /dev/null +++ b/systems/akashi.scm @@ -0,0 +1,54 @@ +(define-module (systems akashi) + #:use-module (gnu services) ; service + #:use-module (gnu services guix) ; guix-home-service-type + #:use-module (gnu system keyboard) ; keyboard-layout + #:use-module (machines thinkpad-x200) ; bootloader-configuration* + ; file-systems* + ; firmware* + ; hardware-groups + ; initrd* + ; kernel* + ; swap-devices* + #:use-module (suweren system) ; %suweren-operating-system + #:use-module (users id1000) ; uid1000-account + ; uid1000-home-environment + ; uid1000-name + ) + +;; string +(define host-name* + "akashi") + +;; (record user-account) +(define users* + (let* ((system-groups (list "wheel")) + + (supplementary-groups* (append hardware-groups + system-groups))) + (list (uid1000-account supplementary-groups*)))) + +;; record operating-system +(define-public operating-system* + (let* ((home-environments `((,uid1000-name ,(uid1000-home-environment host-name*)))) + + (guix-home (service guix-home-service-type + home-environments)) + + (keyboard-layout* (keyboard-layout "pl")) + (services* (list guix-home)) + (timezone* "Europe/Warsaw") + (locale* "pl_PL.utf8")) + (%suweren-operating-system kernel* + (bootloader-configuration* keyboard-layout*) + keyboard-layout* + initrd* + firmware* + host-name* + (file-systems* host-name*) + (swap-devices* host-name*) + users* + timezone* + locale* + services*))) + +operating-system* -- cgit v1.2.3