Unverified Commit 4be6150a authored by Lin Jian's avatar Lin Jian Committed by GitHub
Browse files

Merge pull request #313822 from linj-fork/pr/kanata-config-file

nixos/kanata: add a configFile option
parents d836a3e6 d679ddfc
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ let

  upstreamDoc = "See [the upstream documentation](https://github.com/jtroo/kanata/blob/main/docs/config.adoc) and [example config files](https://github.com/jtroo/kanata/tree/main/cfg_samples) for more information.";

  keyboard = {
  keyboard = { name, config, ... }: {
    options = {
      devices = mkOption {
        type = types.listOf types.str;
@@ -48,6 +48,21 @@ let
          ${upstreamDoc}
        '';
      };
      configFile = mkOption {
        type = types.path;
        default = mkConfig name config;
        defaultText =
          "A config file generated by values from other kanata module options.";
        description = ''
          The config file.

          By default, it is generated by values from other kanata
          module options.

          You can also set it to your own full config file which
          overrides all other kanata module options.  ${upstreamDoc}
        '';
      };
      extraArgs = mkOption {
        type = types.listOf types.str;
        default = [ ];
@@ -85,6 +100,10 @@ let

      ${keyboard.config}
    '';
    # Only the config file generated by this module is checked.  A
    # user-provided one is not checked because it may not be available
    # at build time.  I think this is a good balance between module
    # complexity and functionality.
    checkPhase = ''
      ${getExe cfg.package} --cfg "$target" --check --debug
    '';
@@ -96,7 +115,7 @@ let
      Type = "notify";
      ExecStart = ''
        ${getExe cfg.package} \
          --cfg ${mkConfig name keyboard} \
          --cfg ${keyboard.configFile} \
          --symlink-path ''${RUNTIME_DIRECTORY}/${name} \
          ${optionalString (keyboard.port != null) "--port ${toString keyboard.port}"} \
          ${utils.escapeSystemdExecArgs keyboard.extraArgs}