diff --git a/nixos/modules/services/hardware/kmonad.nix b/nixos/modules/services/hardware/kmonad.nix index 363a8e7028744e..fa9b8fbb610f5f 100644 --- a/nixos/modules/services/hardware/kmonad.nix +++ b/nixos/modules/services/hardware/kmonad.nix @@ -2,6 +2,7 @@ config, lib, pkgs, + utils, ... }: @@ -118,19 +119,8 @@ let # Build a systemd service that starts KMonad: mkService = keyboard: - let - cmd = - [ - (lib.getExe cfg.package) - "--input" - ''device-file "${keyboard.device}"'' - ] - ++ cfg.extraArgs - ++ [ "${mkCfg keyboard}" ]; - in lib.nameValuePair (mkName keyboard.name) { description = "KMonad for ${keyboard.device}"; - script = lib.escapeShellArgs cmd; unitConfig = { # Control rate limiting. # Stop the restart logic if we restart more than @@ -139,6 +129,10 @@ let StartLimitBurst = 5; }; serviceConfig = { + ExecStart = '' + ${lib.getExe cfg.package} ${mkCfg keyboard} \ + ${utils.escapeSystemdExecArgs cfg.extraArgs} + ''; Restart = "always"; # Restart at increasing intervals from 2s to 1m RestartSec = 2; diff --git a/nixos/tests/kmonad.nix b/nixos/tests/kmonad.nix index 9b0d47e578e421..0c880a99787efb 100644 --- a/nixos/tests/kmonad.nix +++ b/nixos/tests/kmonad.nix @@ -11,6 +11,9 @@ machine = { services.kmonad = { enable = true; + extraArgs = [ + "--log-level=debug" + ]; keyboards = { defaultKbd = { device = "/dev/input/by-id/vm-default-kbd";