services: %rosenthal-set-keymap-script: Adapt to installer environment.

This helps to invoke the script directly from Guix's installer.

* modules/rosenthal/services/desktop.scm (%rosenthal-set-keymap-script):
Output keymap to temporary file.
Always change niri configuration.
This commit is contained in:
Hilton Chain 2026-01-14 10:27:09 +08:00
parent 444f54f9f2
commit f549c7604c
No known key found for this signature in database
GPG Key ID: ACC66D09CA528292

View File

@ -504,11 +504,16 @@ gtk-key-theme-name = ~a~%"
(dump-port pipe output))))
(define* (set-keyboard-layout layout #:optional variant #:key model options)
(define file-name "/tmp/keymaps/console-keymap")
(define file-name (tmpnam))
(build-keyboard-layout file-name layout variant #:model model #:options options)
(invoke "sudo" #$(file-append (spec->pkg "kbd") "/bin/loadkeys") file-name)
(when (getenv "WAYLAND_DISPLAY")
(substitute* (in-vicinity (getenv "XDG_CONFIG_HOME") "niri/config.kdl")
(false-if-exception
(substitute*
(in-vicinity
(if (zero? (getuid))
"/home/live/.config"
(getenv "XDG_CONFIG_HOME"))
"niri/config.kdl")
(("^ (layout|variant|model|options) .*") "")
(("^ xkb \\{.*" line)
(string-append