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

nixos/kanata: add a configFile option
This commit is contained in:
Lin Jian 2024-05-24 02:53:42 +08:00 committed by GitHub
commit 4be6150a4c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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."; 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 = { options = {
devices = mkOption { devices = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
@ -48,6 +48,21 @@ let
${upstreamDoc} ${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 { extraArgs = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ ]; default = [ ];
@ -85,6 +100,10 @@ let
${keyboard.config} ${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 = '' checkPhase = ''
${getExe cfg.package} --cfg "$target" --check --debug ${getExe cfg.package} --cfg "$target" --check --debug
''; '';
@ -96,7 +115,7 @@ let
Type = "notify"; Type = "notify";
ExecStart = '' ExecStart = ''
${getExe cfg.package} \ ${getExe cfg.package} \
--cfg ${mkConfig name keyboard} \ --cfg ${keyboard.configFile} \
--symlink-path ''${RUNTIME_DIRECTORY}/${name} \ --symlink-path ''${RUNTIME_DIRECTORY}/${name} \
${optionalString (keyboard.port != null) "--port ${toString keyboard.port}"} \ ${optionalString (keyboard.port != null) "--port ${toString keyboard.port}"} \
${utils.escapeSystemdExecArgs keyboard.extraArgs} ${utils.escapeSystemdExecArgs keyboard.extraArgs}