(define-module (config systems base) #:use-module (gnu) #:use-module (gnu packages) #:use-module (guix) #:use-module (guix channels) #:use-module (guix packages) #:export (system-base) #:export (+keyboard-layout)) (use-service-modules networking ssh xorg) ;; Reference: https://codeberg.org/ieure/atomized-guix/src/branch/main/atomized/system/profiles.scm#L102 (define (+keyboard-layout layout) (lambda (os) (operating-system (inherit os) (keyboard-layout layout) (services (cons (simple-service 'xorg-configuration-keyboard-layout (xorg-configuration-service-type (operating-system-services os)) (xorg-configuration (keyboard-layout keyboard-layout))) (operating-system-user-services os))) (bootloader (bootloader-configuration (inherit (operating-system-bootloader os)) (keyboard-layout layout)))))) (define system-base (operating-system (locale "en_US.utf8") (timezone "Etc/UTC") (+keyboard-layout "us") (host-name "guixsd") (users %base-user-accounts) ;; The bootloader and filesystem configuration shall be replaced, ;; depending on each machine's configuration (bootloader (bootloader-configuration (bootloader grub-bootloader) (targets '("/boot/efi")))) (file-systems (cons (file-system (mount-point "/") (device "/dev/sda1") (type "btrfs")) %base-file-systems)) (services (append (list (service openssh-service-type)) %desktop-services)) (packages (append (specifications->packages (list "curl" "git" "ncurses" "rsync")) %base-packages))))