mirror of
https://github.com/nix-community/home-manager
synced 2024-11-27 05:29:46 +01:00
espanso: add module
This commit adds a module to configure espanso, a program to do text expansions that is configured using a YAML configuration file.
This commit is contained in:
parent
5b208b42b2
commit
4f4165a8b9
9 changed files with 171 additions and 0 deletions
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
|
@ -278,6 +278,8 @@
|
|||
|
||||
/modules/services/etesync-dav.nix @Valodim
|
||||
|
||||
/modules/services/espanso.nix @lucasew
|
||||
|
||||
/modules/services/flameshot.nix @moredhel
|
||||
|
||||
/modules/services/fluidsynth.nix @Valodim
|
||||
|
|
|
@ -2417,6 +2417,14 @@ in
|
|||
A new module is available: 'programs.eww'.
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
time = "2022-02-17T23:11:13+00:00";
|
||||
condition = hostPlatform.isLinux;
|
||||
message = ''
|
||||
A new module is available: 'services.espanso'.
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -178,6 +178,7 @@ let
|
|||
./services/easyeffects.nix
|
||||
./services/emacs.nix
|
||||
./services/etesync-dav.nix
|
||||
./services/espanso.nix
|
||||
./services/flameshot.nix
|
||||
./services/fluidsynth.nix
|
||||
./services/fnott.nix
|
||||
|
|
86
modules/services/espanso.nix
Normal file
86
modules/services/espanso.nix
Normal file
|
@ -0,0 +1,86 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
|
||||
let
|
||||
|
||||
inherit (lib)
|
||||
mkOption mkEnableOption mkIf maintainers literalExpression types platforms;
|
||||
|
||||
inherit (lib.hm.assertions) assertPlatform;
|
||||
|
||||
cfg = config.services.espanso;
|
||||
|
||||
yaml = pkgs.formats.yaml { };
|
||||
|
||||
in {
|
||||
meta.maintainers = with maintainers; [ lucasew ];
|
||||
|
||||
options = {
|
||||
services.espanso = {
|
||||
enable = mkEnableOption "Espanso: cross platform text expander in Rust";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
description = "Which espanso package to use";
|
||||
default = pkgs.espanso;
|
||||
defaultText = literalExpression "pkgs.espanso";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = yaml.type;
|
||||
default = { matches = [ ]; };
|
||||
example = literalExpression ''
|
||||
{
|
||||
matches = [
|
||||
{ # Simple text replacement
|
||||
trigger = ":espanso";
|
||||
replace = "Hi there!";
|
||||
}
|
||||
{ # Dates
|
||||
trigger = ":date";
|
||||
replace = "{{mydate}}";
|
||||
vars = [{
|
||||
name = "mydate";
|
||||
type = "date";
|
||||
params = { format = "%m/%d/%Y"; };
|
||||
}];
|
||||
}
|
||||
{ # Shell commands
|
||||
trigger = ":shell";
|
||||
replace = "{{output}}";
|
||||
vars = [{
|
||||
name = "output";
|
||||
type = "shell";
|
||||
params = { cmd = "echo Hello from your shell"; };
|
||||
}];
|
||||
}
|
||||
];
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
The Espanso configuration to use. See
|
||||
<link xlink:href="https://espanso.org/docs/configuration/"/>
|
||||
for a description of available options.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [ (assertPlatform "services.espanso" pkgs platforms.linux) ];
|
||||
|
||||
home.packages = [ cfg.package ];
|
||||
|
||||
xdg.configFile."espanso/default.yml".source =
|
||||
yaml.generate "espanso-default.yml" cfg.settings;
|
||||
|
||||
systemd.user.services.espanso = {
|
||||
Unit = { Description = "Espanso: cross platform text expander in Rust"; };
|
||||
Service = {
|
||||
Type = "exec";
|
||||
ExecStart = "${cfg.package}/bin/espanso daemon";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
Install = { WantedBy = [ "default.target" ]; };
|
||||
};
|
||||
};
|
||||
}
|
|
@ -137,6 +137,7 @@ import nmt {
|
|||
./modules/services/devilspie2
|
||||
./modules/services/dropbox
|
||||
./modules/services/emacs
|
||||
./modules/services/espanso
|
||||
./modules/services/flameshot
|
||||
./modules/services/fluidsynth
|
||||
./modules/services/fnott
|
||||
|
|
45
tests/modules/services/espanso/basic-configuration.nix
Normal file
45
tests/modules/services/espanso/basic-configuration.nix
Normal file
|
@ -0,0 +1,45 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
services.espanso = {
|
||||
enable = true;
|
||||
settings = {
|
||||
matches = [
|
||||
{ # Simple text replacement
|
||||
trigger = ":espanso";
|
||||
replace = "Hi there!";
|
||||
}
|
||||
{ # Dates
|
||||
trigger = ":date";
|
||||
replace = "{{mydate}}";
|
||||
vars = [{
|
||||
name = "mydate";
|
||||
type = "date";
|
||||
params = { format = "%m/%d/%Y"; };
|
||||
}];
|
||||
}
|
||||
{ # Shell commands
|
||||
trigger = ":shell";
|
||||
replace = "{{output}}";
|
||||
vars = [{
|
||||
name = "output";
|
||||
type = "shell";
|
||||
params = { cmd = "echo Hello from your shell"; };
|
||||
}];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
test.stubs.espanso = { };
|
||||
|
||||
nmt.script = ''
|
||||
serviceFile=home-files/.config/systemd/user/espanso.service
|
||||
assertFileExists "$serviceFile"
|
||||
assertFileContent "$serviceFile" ${./basic-configuration.service}
|
||||
|
||||
configFile=home-files/.config/espanso/default.yml
|
||||
assertFileExists "$configFile"
|
||||
assertFileContent "$configFile" ${./basic-configuration.yaml}
|
||||
'';
|
||||
}
|
10
tests/modules/services/espanso/basic-configuration.service
Normal file
10
tests/modules/services/espanso/basic-configuration.service
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Install]
|
||||
WantedBy=default.target
|
||||
|
||||
[Service]
|
||||
ExecStart=@espanso@/bin/espanso daemon
|
||||
Restart=on-failure
|
||||
Type=exec
|
||||
|
||||
[Unit]
|
||||
Description=Espanso: cross platform text expander in Rust
|
17
tests/modules/services/espanso/basic-configuration.yaml
Normal file
17
tests/modules/services/espanso/basic-configuration.yaml
Normal file
|
@ -0,0 +1,17 @@
|
|||
matches:
|
||||
- replace: Hi there!
|
||||
trigger: :espanso
|
||||
- replace: '{{mydate}}'
|
||||
trigger: :date
|
||||
vars:
|
||||
- name: mydate
|
||||
params:
|
||||
format: '%m/%d/%Y'
|
||||
type: date
|
||||
- replace: '{{output}}'
|
||||
trigger: :shell
|
||||
vars:
|
||||
- name: output
|
||||
params:
|
||||
cmd: echo Hello from your shell
|
||||
type: shell
|
1
tests/modules/services/espanso/default.nix
Normal file
1
tests/modules/services/espanso/default.nix
Normal file
|
@ -0,0 +1 @@
|
|||
{ espanso-basic-configuration = ./basic-configuration.nix; }
|
Loading…
Reference in a new issue