kbd service: use /dev/tty1 for systemd-vconsole-setup

Fixes #22470

Changed files
+11 -1
nixos
modules
tasks
+11 -1
nixos/modules/tasks/kbd.nix
···
'') config.i18n.consoleColors}
'';
+
/* XXX: systemd-vconsole-setup needs a "main" terminal. By default
+
* /dev/tty0 is used which wouldn't work when the service is restarted
+
* from X11. We set this to /dev/tty1; not ideal because it may also be
+
* owned by X11 or something else.
+
*
+
* See #22470.
+
*/
systemd.services."systemd-vconsole-setup" =
{ wantedBy = [ "sysinit.target" ];
before = [ "display-manager.service" ];
after = [ "systemd-udev-settle.service" ];
restartTriggers = [ vconsoleConf kbdEnv ];
-
restartIfChanged = false; # fails when tty is inactive
+
serviceConfig.ExecStart = [
+
""
+
"${pkgs.systemd}/lib/systemd/systemd-vconsole-setup /dev/tty1"
+
];
};
}