mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-26 17:03:01 +00:00
nixos/kanata: add a configFile option
This brings two benefits. For one thing, it exposes the generated
config file which users can build separately to validate it. For
another, it allows users to provide their own config file.
(cherry picked from commit d679ddfcab
)
This commit is contained in:
parent
47658d6cda
commit
882082a411
@ -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