mirror of
https://github.com/nix-community/home-manager
synced 2024-11-27 15:11:04 +00:00
87 lines
2.3 KiB
Nix
87 lines
2.3 KiB
Nix
|
{ 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" ]; };
|
||
|
};
|
||
|
};
|
||
|
}
|