From 5172ed1b3c6cd07364e103b524f4ea6983b71b96 Mon Sep 17 00:00:00 2001 From: Marek Paśnikowski Date: Wed, 31 Jul 2024 11:41:56 +0200 Subject: feat(deployment): install Guix to a next machine --- machines/inspiron.scm | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ systems/aisaka.scm | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 machines/inspiron.scm create mode 100644 systems/aisaka.scm diff --git a/machines/inspiron.scm b/machines/inspiron.scm new file mode 100644 index 0000000..ff7f8bc --- /dev/null +++ b/machines/inspiron.scm @@ -0,0 +1,66 @@ +(define-module (machines inspiron) + ;; 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/aisaka.scm b/systems/aisaka.scm new file mode 100644 index 0000000..5b1efa8 --- /dev/null +++ b/systems/aisaka.scm @@ -0,0 +1,64 @@ +(define-module (systems aisaka) + ;; service + #:use-module (gnu services) + + ;; guix-home-service-type + #:use-module (gnu services guix) + + ;; keyboard-layout + #:use-module (gnu system keyboard) + + ;; bootloader-configuration* + ;; file-systems* + ;; firmware* + ;; hardware-groups + ;; initrd* + ;; kernel* + ;; swap-devices* + #:use-module (machines inspiron) + + ;; %suweren-operating-system + #:use-module (suweren system) + + ;; uid1000-account + ;; uid1000-home-environment + ;; uid1000-name + #:use-module (users id1000)) + +;; string +(define host-name* + "aisaka") + +;; (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