nixos/graphical-desktop: avoid writing empty Option values to 00-keyboard.conf (#540934)
This commit is contained in:
@@ -22,17 +22,23 @@ in
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment = {
|
||||
# localectl looks into 00-keyboard.conf
|
||||
etc."X11/xorg.conf.d/00-keyboard.conf".text = ''
|
||||
Section "InputClass"
|
||||
Identifier "Keyboard catchall"
|
||||
MatchIsKeyboard "on"
|
||||
Option "XkbModel" "${xcfg.xkb.model}"
|
||||
Option "XkbLayout" "${xcfg.xkb.layout}"
|
||||
Option "XkbOptions" "${xcfg.xkb.options}"
|
||||
Option "XkbVariant" "${xcfg.xkb.variant}"
|
||||
EndSection
|
||||
'';
|
||||
# systemd-localed looks into 00-keyboard.conf
|
||||
# systemd-localed does not like if Option values are ""
|
||||
etc."X11/xorg.conf.d/00-keyboard.conf".text =
|
||||
let
|
||||
optionLine =
|
||||
name: value: lib.optionalString (value != null && value != "") ''Option "${name}" "${value}"'';
|
||||
in
|
||||
''
|
||||
Section "InputClass"
|
||||
Identifier "Keyboard catchall"
|
||||
MatchIsKeyboard "on"
|
||||
${optionLine "XkbModel" xcfg.xkb.model}
|
||||
${optionLine "XkbLayout" xcfg.xkb.layout}
|
||||
${optionLine "XkbOptions" xcfg.xkb.options}
|
||||
${optionLine "XkbVariant" xcfg.xkb.variant}
|
||||
EndSection
|
||||
'';
|
||||
systemPackages = with pkgs; [
|
||||
nixos-icons # needed for gnome and pantheon about dialog, nixos-manual and maybe more
|
||||
xdg-utils
|
||||
|
||||
@@ -1684,6 +1684,7 @@ in
|
||||
systemd-journal = runTest ./systemd-journal.nix;
|
||||
systemd-journal-gateway = runTest ./systemd-journal-gateway.nix;
|
||||
systemd-journal-upload = runTest ./systemd-journal-upload.nix;
|
||||
systemd-localed = runTest ./systemd-localed.nix;
|
||||
systemd-lock-handler = runTestOn [ "aarch64-linux" "x86_64-linux" ] ./systemd-lock-handler.nix;
|
||||
systemd-machinectl = runTest ./systemd-machinectl.nix;
|
||||
systemd-misc = runTest ./systemd-misc.nix;
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{ lib, ... }:
|
||||
{
|
||||
name = "systemd-localed";
|
||||
meta.maintainers = [ lib.maintainers.haansn08 ];
|
||||
|
||||
nodes.machine = { ... }: {
|
||||
# we don't use services.xserver.enable because some window managers like
|
||||
# niri rely on systemd-localed for the keyboard layout:
|
||||
# https://niri-wm.github.io/niri/Configuration%3A-Input.html#layout
|
||||
services.graphical-desktop.enable = true;
|
||||
|
||||
services.xserver.xkb.layout = "jp";
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.start()
|
||||
machine.wait_for_unit("default.target")
|
||||
machine.wait_for_unit("dbus.socket")
|
||||
|
||||
status, stdout = machine.execute("localectl")
|
||||
t.assertIn("X11 Layout: jp", stdout)
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user