heks-linux-6e31e697-f425

job succeeded

starting new job...


→ running command: cd "/etc/byggsteg/job-clone//heks-linux/trunk" && git reset --hard && git pull

HEAD is now at 53e2281 feat: Add maak to manifest.scm
From https://codeberg.org/jjba23/heks-linux
   53e2281..856b07b  trunk      -> origin/trunk
Updating 53e2281..856b07b
Fast-forward
 manifest.scm | 1 +
 1 file changed, 1 insertion(+)

→ running command: cd /etc/byggsteg/job-clone/heks-linux/trunk && uname -a

Linux wolk-jjba 7.1.5-gnu #1 SMP PREEMPT_DYNAMIC 1 x86_64 GNU/Linux

→ running command: cd /etc/byggsteg/job-clone/heks-linux/trunk && git log --name-status HEAD^..HEAD

commit 856b07b1ee6e36d80ab7f88d2e10a42cc40566f5
Author: Josep Bigorra <jjbigorra@gmail.com>
Date:   Tue Oct 20 13:42:42 2026 +0200

    docs: Improve showcase

M       manifest.scm

→ running command: cd /etc/byggsteg/job-clone/heks-linux/trunk && maak test

substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
115.0 MB will be downloaded
.
.
.
.
.
.
..
.
.
..
...
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
557.0 MB will be downloaded
.....................
.
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
1.0 MB will be downloaded
.
..
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
7.7 MB will be downloaded
...
.
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
6.9 MB will be downloaded
.
.
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
19.7 MB will be downloaded
..
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
0.1 MB will be downloaded
..
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
0.5 MB will be downloaded
.
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
13.8 MB will be downloaded
.
.
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
15.8 MB will be downloaded
.
..
..
.
..
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
0.9 MB will be downloaded
..
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
1.0 MB will be downloaded
.
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
1.4 MB will be downloaded
..
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
0.6 MB will be downloaded
..
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'... 100.0%
substitute: looking for substitutes on 'https://ci.guix.gnu.org'... 100.0%
The following derivation will be built:
  /gnu/store/jz6jslc7gmbp6fi3kd385i6qn9vgxld0-profile.drv

0.3 MB will be downloaded
.
..
..
..
..
building CA certificate bundle...
listing Emacs sub-directories...
building fonts directory...
building directory of Info manuals...
building profile with 12 packages...

scanning directories for unit tests...
scanning present working directory for unit tests...

found unit tests: (niri-spec.scm dconf-spec.scm bridges-spec.scm waybar-spec.scm rofi-spec.scm alacritty-spec.scm palette-spec.scm kitty-spec.scm wallpaper-spec.scm prelude-spec.scm mako-spec.scm gtk-spec.scm)


running unit tests from file: niri-spec.scm, entrypoint: spec


[INFO] [2026-10-20 11:44:06 UTC] load-local-overrides: Attempting override resolution for module (heks-linux user-settings) with profile 'local-settings'
[INFO] [2026-10-20 11:44:06 UTC] load-local-overrides: $XDG_CONFIG_HOME empty/unset, falling back to $HOME/.config
[INFO] [2026-10-20 11:44:06 UTC] load-local-overrides: Checking for override file at: /root/.config/heks-linux/local-settings.scm
[INFO] [2026-10-20 11:44:06 UTC] load-local-overrides: No override file found at /root/.config/heks-linux/local-settings.scm. Skipping.
+----------------------------------------------+
[📑 suite] Niri Configuration Suite
  [🧪 test] macOS And Omarchy Parity Bindings
    [⚙️ assert] Toggling floating mode should move to Super+Shift+Space
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Do-not-disturb should be reachable from a binding
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The theme picker should be reachable from a binding
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Super+Q should close the focused window
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Super+V should browse the clipboard history
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Super+Return should open a terminal, as in Omarchy
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Super+Space should open the spotlight launcher
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Rounded Windows And Soft Shadows
    [⚙️ assert] Windows should get a rounded corner radius
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Windows should cast a drop shadow
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Natural Scrolling Follows Its Setting
    [⚙️ assert] Natural scrolling should stay off while the setting is disabled
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Enabling the setting should emit natural-scroll into the config
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Springy macOS Style Motion
    [⚙️ assert] Window opening should be animated
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Animations should be spring driven
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Workspace switches should be animated
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Clipboard History Is Recorded
    [⚙️ assert] The clipboard watcher should be started with the session
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Configuration Serializes To KDL
    [⚙️ assert] The generated config should start with the Heks header
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] A binds block should be emitted
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] An input block should be emitted
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Startup Scripts Exist Under ~/.local/bin
    [⚙️ assert] The startup entry must name the script that the dconf module installs
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The stale, non-existent startup script name must be gone
    ✅ pass - assertion succesful, got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 7159 microseconds

running unit tests from file: dconf-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] dconf test suite
  [🧪 test] Heks settings are namespaced and complete
    [⚙️ assert] The mono font should be exported to dconf
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The palette should be exported to dconf
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The language should be written under /heks-linux
    ✅ pass - assertion succesful, got: #t
  [🧪 test] mk-nested-dconf-writer-commands
    [⚙️ assert] Nested settings should flatten into dconf write commands
    ✅ pass - assertion succesful, got: (echo "/org/gnome/desktop/interface/gtk-key-theme --> 'Emacs'" && dconf write "/org/gnome/desktop/interface/gtk-key-theme" "'Emacs'" echo "/org/gnome/desktop/interface/cursor-size --> 24" && dconf write "/org/gnome/desktop/interface/cursor-size" "24" echo "/org/gnome/desktop/interface/enable-animations --> true" && dconf write "/org/gnome/desktop/interface/enable-animations" "true")
  [🧪 test] caps-to-ctrl follows its parameter
    [⚙️ assert] Enabling caps-to-ctrl must write true
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Disabling caps-to-ctrl must write false, not a hardcoded true
    ✅ pass - assertion succesful, got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 893 microseconds

running unit tests from file: bridges-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] bridges test suite
  [🧪 test] Emacs Bridge Carries The Settings Values
    [⚙️ assert] The mono font setting should travel across the bridge
    ✅ pass - assertion succesful, got: Intel One Mono
    [⚙️ assert] The clone directory should travel across the bridge
    ✅ pass - assertion succesful, got: ~/Hacking/heks-linux
  [🧪 test] Bash Bridge String Generation
    [⚙️ assert] Bash bridge should start with correct shebang
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Bash bridge should export the highlight variable
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Emacs Bridge Elisp Generation
    [⚙️ assert] Should configure the Emacs theme
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Should configure the sans font
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Bridge output should be wrapped in a 'progn
    ✅ pass - assertion succesful, got: progn
    [⚙️ assert] Should configure mono font
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Bridge output should be a list (S-expression)
    ✅ pass - assertion succesful, got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 9693 microseconds

running unit tests from file: waybar-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Waybar Configuration Suite
  [🧪 test] Power Menu SXML Structure
    [⚙️ assert] Power menu should contain an interface definition
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Power menu should start with SXML TOP node
    ✅ pass - assertion succesful, got: *TOP*
    [⚙️ assert] The logout entry should carry a readable label
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Power menu should contain a logout GtkMenuItem
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Main Configuration (JSON Source)
    [⚙️ assert] Waybar config should be a list (convertible to JSON)
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Waybar position should be top by default
    ✅ pass - assertion succesful, got: top
    [⚙️ assert] The do-not-disturb indicator should sit on the bar
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Modules should be represented as vectors for JSON arrays
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Do Not Disturb Indicator
    [⚙️ assert] Clicking the indicator should toggle the mako DND mode
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Rounded Bar Styling
    [⚙️ assert] The floating bar should carry the configured corner radius
    ✅ pass - assertion succesful, got: 0px
    [⚙️ assert] The bar corner radius should be overridable
    ✅ pass - assertion succesful, got: 0px
  [🧪 test] Power Menu Actions
    [⚙️ assert] The shutdown entry should power the machine off
    ✅ pass - assertion succesful, got: systemctl poweroff
    [⚙️ assert] The logout entry should terminate the login session
    ✅ pass - assertion succesful, got: loginctl terminate-session $XDG_SESSION_ID
  [🧪 test] Dynamic Start Button
    [⚙️ assert] Start button should return a list
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Start button should respect the content keyword argument
    ✅ pass - assertion succesful, got: λ test
  [🧪 test] CSS Rules Generation
    [⚙️ assert] Module background should be transparent in CSS
    ✅ pass - assertion succesful, got: transparent
    [⚙️ assert] CSS list should not be empty
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] CSS should contain a rule for the waybar window
    ✅ pass - assertion succesful, got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 11157 microseconds

running unit tests from file: rofi-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Rofi Configuration and Theming
  [🧪 test] Theme Picker Lists Every Palette
    [⚙️ assert] The picker should know which palette is currently active
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Every registered palette should appear in the picker
    ✅ pass - assertion succesful, got: 38
  [🧪 test] Rofi Script Modes Registered
    [⚙️ assert] The launcher, window switcher and power menu modes should be registered
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The theme picker mode should be registered
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The power mode should point at the generated script
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Rofi Theme (AList Structure)
    [⚙️ assert] Theme should be a list (AList)
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Should contain a global wildcard '*' section
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The spotlight panel should be softly rounded
    ✅ pass - assertion succesful, got: 18px
    [⚙️ assert] Global background-color should be transparent
    ✅ pass - assertion succesful, got: transparent
  [🧪 test] Power Menu Script
    [⚙️ assert] The power menu must be a Bash script
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The power menu should expose a shutdown action
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The first entry must use the rofi \0icon\x1f separator
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Theme Picker Script
    [⚙️ assert] Choosing a palette must persist itself as a local override
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The theme picker must be a Bash script
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Choosing a palette must re-render the palette-dependent configs
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Rofi Config String Template
    [⚙️ assert] Icons should be enabled by default
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Configuration should inject the configured sans font
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Config must reference the generated theme file
    ✅ pass - assertion succesful, got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 12911 microseconds

running unit tests from file: alacritty-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Generated File
  [🧪 test] Key Bindings Are Collected Into One Array
    [⚙️ assert] Control+Y pastes
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Bindings are rendered as a TOML array
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Shift+Home jumps to the top of the scrollback
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Every Section Is Declared
    [⚙️ assert] A general section is emitted
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] A keyboard section is emitted
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The file carries a generated-file header
    ✅ pass - assertion succesful, got: #t
+----------------------------------------------+
[📑 suite] Setting Serialization
  [🧪 test] Settings Serialize To TOML
    [⚙️ assert] Inline tables pass through verbatim
    ✅ pass - assertion succesful, got: padding = { x = 16, y = 16}
    [⚙️ assert] Strings are quoted
    ✅ pass - assertion succesful, got: shell = "bash"
    [⚙️ assert] Booleans render unquoted
    ✅ pass - assertion succesful, got: live_config_reload = true
    [⚙️ assert] Numbers render unquoted
    ✅ pass - assertion succesful, got: size = 12
+----------------------------------------------+
[📑 suite] Modifier Translation
  [🧪 test] Short Modifiers Use Alacritty Spelling
    [⚙️ assert] Alt and Super are spelled out
    ✅ pass - assertion succesful, got: Alt|Super
    [⚙️ assert] Modifiers are joined with a vertical bar
    ✅ pass - assertion succesful, got: Control|Shift
    [⚙️ assert] Unknown modifiers pass through
    ✅ pass - assertion succesful, got: Control|Custom
+----------------------------------------------+
[📑 suite] Binding Serialization
  [🧪 test] Bindings Render As Inline TOML Tables
    [⚙️ assert] A binding is one inline table
    ✅ pass - assertion succesful, got: { key = "Y", mods = "Control", action = "Paste"}
ℹ️ info - ran 4 tasks in: 0 seconds, 11451 microseconds

running unit tests from file: palette-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Palette Registry Suite
  [🧪 test] Every Palette Exposes A Full Colour Set
    [⚙️ assert] Each palette must define primary/text/background colours
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Colour Converters
    [⚙️ assert] hex-to-rgba should convert a hex colour
    ✅ pass - assertion succesful, got: rgba(255, 0, 0, 1)
    [⚙️ assert] hex-to-rgb should convert a hex colour
    ✅ pass - assertion succesful, got: rgb(0, 255, 0)
    [⚙️ assert] hex-to-rgba should honour the alpha argument
    ✅ pass - assertion succesful, got: rgba(0, 0, 255, 0.5)
    [⚙️ assert] hex-to-rgba should fall back on bad input
    ✅ pass - assertion succesful, got: rgba(0, 0, 0, 1)
  [🧪 test] Registry Is Non Empty And Symbolic
    [⚙️ assert] Every palette name should be a symbol
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Every palette name should be convertible to a string
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] At least one palette should be registered
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Dark And Light Classification
    [⚙️ assert] catppuccin-latte should be a light palette
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] catppuccin-mocha should be a dark palette
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Every Palette Exposes Its Downstream Themes
    [⚙️ assert] Each palette must map to a supported lambdock theme
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Each palette must map to a GTK, icon, cursor and accent theme
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Unknown Palettes Are Rejected
    [⚙️ assert] Looking up an unregistered palette should raise
    ✅ pass - success catching error: %exception: (#<&message message: "exception ocurred! unknown palette selected: definitely-not-a-palette">)
ℹ️ info - ran 1 tasks in: 0 seconds, 5226 microseconds

running unit tests from file: kitty-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Kitty Terminal Suite
  [🧪 test] Modifier Translation Uses Kitty Spelling
    [⚙️ assert] Modifiers are joined with a plus sign
    ✅ pass - assertion succesful, got: ctrl+shift
    [⚙️ assert] Unknown modifiers pass through
    ✅ pass - assertion succesful, got: ctrl+Custom
    [⚙️ assert] Alt and Super are spelled out
    ✅ pass - assertion succesful, got: alt+super
  [🧪 test] Generated File Declares Every Section
    [⚙️ assert] A key-binding section is emitted
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] A font section is emitted
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Scrollback is configured
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The file carries a generated-file header
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Key Bindings Use Key Names Kitty Recognises
    [⚙️ assert] Alt+W copies
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Ctrl+shift+end jumps to the bottom of the scrollback
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Ctrl+shift+home jumps to the top of the scrollback
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Control+Y pastes
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Font size shrinks with ctrl+shift+minus
    ✅ pass - assertion succesful, got: #t;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling ./test/veritas/unit/niri-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/niri-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/niri-spec.scm"
;;; compiling ./src/heks-linux/niri.scm
;;; WARNING: compilation of ./src/heks-linux/niri.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/niri.scm"
;;; compiling ./src/heks-linux/palette.scm
;;; WARNING: compilation of ./src/heks-linux/palette.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/palette.scm"
;;; compiling ./src/heks-linux/wallpaper.scm
;;; WARNING: compilation of ./src/heks-linux/wallpaper.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/wallpaper.scm"
;;; compiling ./src/heks-linux/prelude.scm
;;; WARNING: compilation of ./src/heks-linux/prelude.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/prelude.scm"
;;; compiling ./src/heks-linux/user-settings.scm
;;; WARNING: compilation of ./src/heks-linux/user-settings.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/user-settings.scm"
;;; compiling ./test/veritas/unit/dconf-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/dconf-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/dconf-spec.scm"
;;; compiling ./src/heks-linux/dconf.scm
;;; WARNING: compilation of ./src/heks-linux/dconf.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/dconf.scm"
;;; compiling ./test/veritas/unit/bridges-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/bridges-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/bridges-spec.scm"
;;; compiling ./src/heks-linux/bridges.scm
;;; WARNING: compilation of ./src/heks-linux/bridges.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/bridges.scm"
;;; compiling ./test/veritas/unit/waybar-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/waybar-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/waybar-spec.scm"
;;; compiling ./src/heks-linux/waybar.scm
;;; WARNING: compilation of ./src/heks-linux/waybar.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/waybar.scm"
;;; compiling ./test/veritas/unit/rofi-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/rofi-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/rofi-spec.scm"
;;; compiling ./src/heks-linux/rofi.scm
;;; WARNING: compilation of ./src/heks-linux/rofi.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/rofi.scm"
;;; compiling ./test/veritas/unit/alacritty-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/alacritty-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/alacritty-spec.scm"
;;; compiling ./src/heks-linux/alacritty.scm
;;; WARNING: compilation of ./src/heks-linux/alacritty.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/alacritty.scm"
;;; compiling ./test/veritas/unit/palette-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/palette-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/palette-spec.scm"
;;; compiling ./test/veritas/unit/kitty-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/kitty-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/kitty-spec.scm"
;;; compiling ./src/heks-linux/kitty.scm
;;; WARNING: compilation of ./src/heks-linux/kitty.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/kitty.scm"
;;; compiling ./test/veritas/unit/wallpaper-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/wallpaper-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/wallpaper-spec.scm"
;;; compiling 
    [⚙️ assert] Font size grows with ctrl+shift+equal
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Bindings Render As Map Lines
    [⚙️ assert] A string action keeps its arguments
    ✅ pass - assertion succesful, got: map ctrl+shift+plus change_font_size all +2.0

    [⚙️ assert] A symbol action renders bare
    ✅ pass - assertion succesful, got: map ctrl+y paste_from_clipboard

ℹ️ info - ran 1 tasks in: 0 seconds, 6944 microseconds

running unit tests from file: wallpaper-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Wallpaper Selection Suite
  [🧪 test] Every Palette Resolves To Absolute Paths
    [⚙️ assert] No palette may end up without a wallpaper set
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Generic Operandi Uses The Bergen Set
    [⚙️ assert] modus-operandi should include the Bergen backgrounds
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] modus-operandi should stay inside the shared wallpaper tree
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Tinted Operandi Reaches The macOS Set
    [⚙️ assert] modus-operandi-tinted must not be swallowed by the generic operandi clause
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The macOS wallpaper set should not be empty
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Unknown Palettes Are Rejected
    [⚙️ assert] An unregistered palette should raise instead of picking nothing
    ✅ pass - success catching error: %exception: (#<&message message: "exception occurred! unknown palette selected (not-a-real-palette), could not determine wallpaper set.">)
  [🧪 test] Rotation Script Is Valid Shell
    [⚙️ assert] The script should contain one branch per wallpaper
    ✅ pass - assertion succesful, got: 2
    [⚙️ assert] The rotation script should replace the running swaybg
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The rotation script should be POSIX shell
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Catalogued Palettes Use Their Own Directories
    [⚙️ assert] catppuccin-mocha should use its own artwork
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] ayu-dark should use the space artwork
    ✅ pass - assertion succesful, got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 2133 microseconds

running unit tests from file: prelude-spec.scm, entrypoint: spec


[INFO] [2026-10-20 11:44:06 UTC] Creating directory: /tmp/heks-prelude-spec-2
[INFO] [2026-10-20 11:44:06 UTC] Creating directory: /tmp/heks-prelude-spec-2/a
[INFO] [2026-10-20 11:44:06 UTC] Creating directory: /tmp/heks-prelude-spec-2/a/b
[INFO] [2026-10-20 11:44:06 UTC] Creating directory: /tmp/heks-prelude-spec-2/a/b/c
[INFO] [2026-10-20 11:44:06 UTC] Creating directory: /tmp/heks-prelude-spec-2/installed
[INFO] [2026-10-20 11:44:06 UTC] Creating directory: /tmp/heks-prelude-spec-2/installed/nested
[INFO] [2026-10-20 11:44:06 UTC] Writing config to file: /tmp/heks-prelude-spec-2/installed/nested/deep.conf
[INFO] [2026-10-20 11:44:06 UTC] Creating directory: /tmp/heks-prelude-spec-2/bin
[INFO] [2026-10-20 11:44:06 UTC] Writing config to file: /tmp/heks-prelude-spec-2/bin/script.sh
+----------------------------------------------+
[📑 suite] Prelude Helper Suite
  [🧪 test] Config Files Install Into Missing Directories
    [⚙️ assert] The default permissions should be #o644
    ✅ pass - assertion succesful, got: 420
    [⚙️ assert] The installer should write the contents
    ✅ pass - assertion succesful, got: hello

    [⚙️ assert] The installer should create its directory tree
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Directory Trees Are Created Recursively
    [⚙️ assert] Missing parents should be created, not just the leaf
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The created leaf should really be a directory
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Key Value Rendering
    [⚙️ assert] Pairs should render with the default template
    ✅ pass - assertion succesful, got: host=localhost
port=80

    [⚙️ assert] CSS pairs should render indented
    ✅ pass - assertion succesful, got:   color: black;

    [⚙️ assert] The template should be overridable
    ✅ pass - assertion succesful, got: host = localhost

  [🧪 test] List Flattening
    [⚙️ assert] Flattening the empty list should stay empty
    ✅ pass - assertion succesful, got: ()
    [⚙️ assert] Nested lists should be flattened
    ✅ pass - assertion succesful, got: (1 2 3 4 5)
  [🧪 test] Executable Config Files Get Executable Permissions
    [⚙️ assert] Passing #o755 should make the file executable
    ✅ pass - assertion succesful, got: 493
  [🧪 test] Nested Structures Render As Ini Sections
    [⚙️ assert] A nested list should become an INI section header
    ✅ pass - assertion succesful, got: 
[settings]
port=8080

ℹ️ info - ran 1 tasks in: 0 seconds, 8679 microseconds

running unit tests from file: mako-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] Mako Notification Suite
  [🧪 test] Do Not Disturb Mode Is Declared
    [⚙️ assert] While in do-not-disturb, notifications must not be drawn
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] A do-not-disturb mode section should exist so makoctl can toggle it
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Banners Match The macOS Look
    [⚙️ assert] Notification banners should be rounded
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Notification banners should be borderless
    ✅ pass - assertion succesful, got: #t
  [🧪 test] Notification behaviour is configured
    [⚙️ assert] A default timeout should be set
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Left click should dismiss a notification
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] Notification history should be kept
    ✅ pass - assertion succesful, got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 2885 microseconds

running unit tests from file: gtk-spec.scm, entrypoint: spec


+----------------------------------------------+
[📑 suite] GTK Configuration Suite
  [🧪 test] dconf Button Layout
    [⚙️ assert] The window manager should place the traffic lights on the left
    ✅ pass - assertion succesful, got: 'close,minimize,maximize:'
  [🧪 test] GTK 4 Settings
    [⚙️ assert] GTK 4 windows should show macOS style traffic lights
    ✅ pass - assertion succesful, got: close,minimize,maximize:
    [⚙️ assert] The GTK 4 settings should be an association list
    ✅ pass - assertion succesful, got: #t
  [🧪 test] dconf Colour Scheme Follows The Palette
    [⚙️ assert] Dark palettes should request the dark GTK scheme
    ✅ pass - assertion succesful, got: 'prefer-dark'
    [⚙️ assert] Light palettes should request the light GTK scheme
    ✅ pass - assertion succesful, got: 'prefer-light'
  [🧪 test] dconf Theme Names Come From The Palette
    [⚙️ assert] The icon theme should be palette derived
    ✅ pass - assertion succesful, got: 'WhiteSur-pink'
    [⚙️ assert] An accent colour should always be exported
    ✅ pass - assertion succesful, got: #t
  [🧪 test] GTK 3 Settings
    [⚙️ assert] GTK 3 windows should show macOS style traffic lights
    ✅ pass - assertion succesful, got: close,minimize,maximize:
    [⚙️ assert] The GTK 3 settings should be an association list
    ✅ pass - assertion succesful, got: #t
    [⚙️ assert] The sans font should be configured
    ✅ pass - assertion succesful, got: #t
ℹ️ info - ran 1 tasks in: 0 seconds, 9113 microseconds

finished running tests
./test/veritas/unit/prelude-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/prelude-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/prelude-spec.scm"
;;; compiling ./test/veritas/unit/mako-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/mako-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/mako-spec.scm"
;;; compiling ./src/heks-linux/mako.scm
;;; WARNING: compilation of ./src/heks-linux/mako.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/mako.scm"
;;; compiling ./test/veritas/unit/gtk-spec.scm
;;; WARNING: compilation of ./test/veritas/unit/gtk-spec.scm failed:
;;; failed to create path for auto-compiled file "./test/veritas/unit/gtk-spec.scm"
;;; compiling ./src/heks-linux/gtk.scm
;;; WARNING: compilation of ./src/heks-linux/gtk.scm failed:
;;; failed to create path for auto-compiled file "./src/heks-linux/gtk.scm"


--------------------------------------------------------------

Maak: the infinitely extensible command runner

Loading tasks from Maak file: /etc/byggsteg/job-clone/heks-linux/trunk/maak.scm

Executing Maak tasks: test

--------------------------------------------------------------

=> Running Maak task: test

  Unit tests, run in a hermetic container.

  Execute command:
guix time-machine --channels=channels.scm -- shell -m manifest.scm --container -- guile -L ./src -L ./test -c '((@ (veritas runner) run-tests))'
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /etc/byggsteg/job-clone/heks-linux/trunk/maak.scm
;;; compiled /tmp/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/heks-linux/trunk/maak.scm.go

→ running command: cd /etc/byggsteg/job-clone/heks-linux/trunk && sudo maak deploy

sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8): No such file or directory
sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8): No such file or directory

[INFO] [2026-10-20 13:44:07 CEST] load-local-overrides: Attempting override resolution for module (heks-linux user-settings) with profile 'local-settings'
[INFO] [2026-10-20 13:44:07 CEST] load-local-overrides: $XDG_CONFIG_HOME empty/unset, falling back to $HOME/.config
[INFO] [2026-10-20 13:44:07 CEST] load-local-overrides: Checking for override file at: /root/.config/heks-linux/local-settings.scm
[INFO] [2026-10-20 13:44:07 CEST] load-local-overrides: No override file found at /root/.config/heks-linux/local-settings.scm. Skipping.API documentation saved to doc/api
index.texi:2133: warning: @end should only appear at the beginning of a line
index.texi:2147: warning: @end should only appear at the beginning of a line
index.texi:2162: warning: @end should only appear at the beginning of a line
index.texi: warning: must specify a title with a title command or @top
sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8): No such file or directory
renamed './index_html' -> './doc/api-dist'
sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8): No such file or directory
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/API.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005falacritty.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fbridges.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fbtop.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fcontainers.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fdconf.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005ffastfetch.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fgif.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fgit.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fgtk.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fkitty.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005flambdock.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fmako.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fniri.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fpackages_005fflatpak.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fpackages_005fzypper.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fpalette.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fprelude.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005frmpc.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005frofi.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fuser_002dsettings.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fwallpaper.html'
removed '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fwaybar.html'
removed directory '/srv/http/jointhefreeworld.org/api-docs/heks-linux'
sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8): No such file or directory
mkdir: created directory '/srv/http/jointhefreeworld.org/api-docs/heks-linux'
sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8): No such file or directory
renamed 'doc/api-dist/API.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/API.html'
renamed 'doc/api-dist/heks_002dlinux_005falacritty.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005falacritty.html'
renamed 'doc/api-dist/heks_002dlinux_005fbridges.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fbridges.html'
renamed 'doc/api-dist/heks_002dlinux_005fbtop.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fbtop.html'
renamed 'doc/api-dist/heks_002dlinux_005fcontainers.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fcontainers.html'
renamed 'doc/api-dist/heks_002dlinux_005fdconf.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fdconf.html'
renamed 'doc/api-dist/heks_002dlinux_005ffastfetch.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005ffastfetch.html'
renamed 'doc/api-dist/heks_002dlinux_005fgif.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fgif.html'
renamed 'doc/api-dist/heks_002dlinux_005fgit.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fgit.html'
renamed 'doc/api-dist/heks_002dlinux_005fgtk.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fgtk.html'
renamed 'doc/api-dist/heks_002dlinux_005fkitty.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fkitty.html'
renamed 'doc/api-dist/heks_002dlinux_005flambdock.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005flambdock.html'
renamed 'doc/api-dist/heks_002dlinux_005fmako.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fmako.html'
renamed 'doc/api-dist/heks_002dlinux_005fniri.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fniri.html'
renamed 'doc/api-dist/heks_002dlinux_005fpackages_005fflatpak.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fpackages_005fflatpak.html'
renamed 'doc/api-dist/heks_002dlinux_005fpackages_005fzypper.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fpackages_005fzypper.html'
renamed 'doc/api-dist/heks_002dlinux_005fpalette.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fpalette.html'
renamed 'doc/api-dist/heks_002dlinux_005fprelude.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fprelude.html'
renamed 'doc/api-dist/heks_002dlinux_005frmpc.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005frmpc.html'
renamed 'doc/api-dist/heks_002dlinux_005frofi.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005frofi.html'
renamed 'doc/api-dist/heks_002dlinux_005fuser_002dsettings.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fuser_002dsettings.html'
renamed 'doc/api-dist/heks_002dlinux_005fwallpaper.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fwallpaper.html'
renamed 'doc/api-dist/heks_002dlinux_005fwaybar.html' -> '/srv/http/jointhefreeworld.org/api-docs/heks-linux/heks_002dlinux_005fwaybar.html'
sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8): No such file or directory
removed 'doc/api/index.texi'
removed directory 'doc/api'
removed directory 'doc/api-dist'
removed directory 'doc'


--------------------------------------------------------------

Maak: the infinitely extensible command runner

Loading tasks from Maak file: /etc/byggsteg/job-clone/heks-linux/trunk/maak.scm

Executing Maak tasks: deploy

--------------------------------------------------------------

=> Running Maak task: deploy

  Deploy the project's documentation.

  Execute command:
guix time-machine --channels=channels.scm -- shell -m manifest.scm -- documenta api ./src/heks-linux &&  texi2any -v --html --css-ref=https://jointhefreeworld.org/static/css/jointhefreeworld.css -o index_html ./doc/api/index.texi
inspect the job's lambda expression
(lambda()
  `((task . ("maak-test" "maak-deploy"))
    (project . "heks-linux")
    (branch-name . "trunk")
    (clone-url . "https://codeberg.org/jjba23/heks-linux.git")
    (env . ((HOME . "/tmp")))))