guixconfig/config.org
2023-12-01 14:22:33 +01:00

5.5 KiB

GUIX System Configuration

  (org-babel-lob-ingest "./library.org")

Modules

  • gnu
  • gnu services base
  • gnu services dbus
  • gnu services desktop
  • gnu services linux
  • gnu services networking
  • gnu services pm
  • gnu services virtualization
  • gnu services xorg
  • gnu system nss

Service Modules

  • desktop
  • xorg

Package Modules

  • bootloaders
  • certs
  • emacs
  • emacs-xyz
  • fonts
  • readline
  • terminals
  • version-control
  • wm
  • xorg

Configuration Definitions

File System

The variable %local-filesystem extracts the file system definitions from the installer-provided config.scm file.

  (define %local-filesystem
    (call-with-input-file "/etc/config.scm"
      (lambda (port)
        (read port)
        (read port)
        (eval (cadar (last-pair (read port)))
              (interaction-environment)))))

As a sibling to the former, the variable %local-swap does the same with the swap partition.

  (define %local-swap
    (call-with-input-file "/etc/config.scm"
      (lambda (port)
        (read port)
        (read port)
        (let* ((os-list (read port))
               (os-list-length (length os-list)))
          (eval
           (cdr
            (list-ref os-list
                      (- os-list-length 2)))
           (interaction-environment))))))

Packages

  • emacs
  • emacs-desktop-environment
  • font-terminus
  • git
  • nss-certs
  • readline
  • swayfx
  (packages
   (append
    <<org-to-scheme-sym-list(input=root-packages)>>
    %base-packages))

Services

Simple Services

These services are unmodified, or have just few settings.

Service Options
tlp ()
thermald ((adaptive? t))
bluetooth ()
earlyoom ((minimum-available-memory 5) (minimum-free-swap 5))
inputattach ()
libvirt ((unix-sock-group "libvirt"))
fstrim ()
fprintd ()

Greeter Service

greetd is a broken mess, yet here we are.

  (service greetd-service-type
           (greetd-configuration
            (greeter-supplementary-groups
             (list "video" "input"))
            (terminals
             (list
              (greetd-terminal-configuration
               (terminal-vt "7")
               (terminal-switch #t)
               (default-session-command
                 (greetd-wlgreet-session
                  (command
                   (file-append swayfx "/bin/sway")))))
              (greetd-terminal-configuration
               (terminal-vt "8"))))))

Screen Locker Service

For some reason, this service runs on root level for Guix.

  (service screen-locker-service-type
           (screen-locker-configuration
            (name "swaylock")
            (program
             (file-append swaylock-effects "/bin/swaylock"))
            (using-setuid? #f)))

Operating System

This is the full operating system specification.

  (operating-system
   (host-name "ziltis-machine")
   (timezone "Europe/Berlin")
   (locale "de_DE.utf8")
   (keyboard-layout
    (keyboard-layout "de" #:options '("caps:swapescape")))
   (bootloader
    (bootloader-configuration
     (bootloader grup-efi-bootloader)
     (targets
      '("/boot/efi"))
     (keyboard-layout keyboard-layout)))
   (file-systems %local-filesystem)
   (swap-devices %local-swap)
   (users
    (cons*
     (user-account
      (name "zilti")
      (group "users")
      (supplementary-groups
       '("wheel" "netdev" "audio" "video" "libvirt")))
     %base-user-accounts))
    <<root-package-block>>
    <<root-services-block>>
   (name-service-switch %mdns-host-lookup-nss))