summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--machines/thinkpad-x200.scm66
-rw-r--r--systems/akashi.scm54
2 files changed, 120 insertions, 0 deletions
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*