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.";
|
||||
|
||||
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}
|
||||
|
|
Loading…
Reference in New Issue
Block a user