Skip to content

Commit

Permalink
espanso: add crossplatform support
Browse files Browse the repository at this point in the history
Signed-off-by: phanirithvij <[email protected]>
  • Loading branch information
phanirithvij committed Oct 15, 2024
1 parent e1aec54 commit 974d73b
Showing 1 changed file with 56 additions and 9 deletions.
65 changes: 56 additions & 9 deletions modules/services/espanso.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,22 @@ let
mkOption mkEnableOption mkIf maintainers literalExpression types
mkRemovedOptionModule versionAtLeast;

inherit (pkgs.stdenv.hostPlatform) isDarwin isLinux;

cfg = config.services.espanso;
espansoVersion = cfg.package.version;

package-bin = if isLinux then
pkgs.writeShellScriptBin "espanso" ''
if [ -n "$WAYLAND_DISPLAY" ]; then
${lib.meta.getExe cfg.package-wayland} "$@"
else
${lib.meta.getExe cfg.package} "$@"
fi
''
else
cfg.package;

yaml = pkgs.formats.yaml { };
in {
imports = [
Expand All @@ -26,10 +39,35 @@ in {
package = mkOption {
type = types.package;
description = "Which espanso package to use";
default = pkgs.espanso;
default = if isDarwin || cfg.x11Support then
pkgs.espanso
else
pkgs.espanso-wayland;
defaultText = literalExpression "pkgs.espanso";
};

package-wayland = mkOption {
type = types.package;
description = "Which espanso package to use when running under wayland";
default =
if cfg.waylandSupport then pkgs.espanso-wayland else pkgs.espanso;
defaultText = literalExpression "pkgs.espanso-wayland";
};

x11Support = mkOption {
type = types.bool;
description = "Whether to enable x11 support on linux";
default = isLinux;
defaultText = literalExpression "enabled on linux";
};

waylandSupport = mkOption {
type = types.bool;
description = "Whether to enable wayland support on linux";
default = isLinux;
defaultText = literalExpression "enabled on linux";
};

configs = mkOption {
type = yaml.type;
default = { default = { }; };
Expand Down Expand Up @@ -98,14 +136,23 @@ in {
};

config = mkIf cfg.enable {
assertions = [{
assertion = versionAtLeast espansoVersion "2";
message = ''
The services.espanso module only supports Espanso version 2 or later.
'';
}];
assertions = [
{
assertion = versionAtLeast espansoVersion "2";
message = ''
The services.espanso module only supports Espanso version 2 or later.
'';
}
{
assertion = isLinux -> (cfg.x11Support || cfg.waylandSupport);
message = ''
In services.espanso at least x11 or wayland support must be enabled on linux.
'';
}
];

home.packages = [ cfg.package ];
# obviously conflicting to have cfg.package and cfg.package-wayland
home.packages = [ package-bin ];

xdg.configFile = let
configFiles = lib.mapAttrs' (name: value: {
Expand All @@ -122,7 +169,7 @@ in {
Unit = { Description = "Espanso: cross platform text expander in Rust"; };
Service = {
Type = "exec";
ExecStart = "${cfg.package}/bin/espanso daemon";
ExecStart = "${lib.meta.getExe package-bin} daemon";
Restart = "on-failure";
};
Install = { WantedBy = [ "default.target" ]; };
Expand Down

0 comments on commit 974d73b

Please sign in to comment.