Merge pull request #313822 from linj-fork/pr/kanata-config-file
nixos/kanata: add a configFile option
This commit is contained in:
commit
4be6150a4c
|
@ -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}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user