summary refs log tree commit diff
path: root/nixos/modules/tasks/kbd.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/tasks/kbd.nix')
-rw-r--r--nixos/modules/tasks/kbd.nix12
1 files changed, 11 insertions, 1 deletions
diff --git a/nixos/modules/tasks/kbd.nix b/nixos/modules/tasks/kbd.nix
index 4aa4c7d22ac2..3975dd5b0ffd 100644
--- a/nixos/modules/tasks/kbd.nix
+++ b/nixos/modules/tasks/kbd.nix
@@ -98,12 +98,22 @@ in
           '') 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"
+            ];
           };
       }