# home-manager module: services.chirami.enable = true runs chirami as a
# systemd user service with your graphical session on linux, or as a launchd
# agent on macos. `chirami setup` still has to run once.
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.chirami;
command = [ (lib.getExe cfg.package) ] ++ cfg.extraArgs;
in
{
options.services.chirami = {
enable = lib.mkEnableOption "chirami, furigana and dictionary cards for selected japanese";
package = lib.mkOption {
type = lib.types.package;
default = import ../default.nix { inherit pkgs; };
defaultText = lib.literalExpression "chirami from this repository";
description = "the chirami package to run";
};
extraArgs = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
example = [
"-offline"
"-romaji"
"wapuro"
];
description = "flags passed to chirami";
};
};
config = lib.mkIf cfg.enable (
lib.mkMerge [
{ home.packages = [ cfg.package ]; }
(lib.mkIf pkgs.stdenv.hostPlatform.isLinux {
systemd.user.services.chirami = {
Unit = {
Description = "chirami: furigana and dictionary cards for selected japanese";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
};
Service = {
ExecStart = lib.escapeShellArgs command;
Restart = "on-failure";
};
Install.WantedBy = [ "graphical-session.target" ];
};
})
(lib.mkIf pkgs.stdenv.hostPlatform.isDarwin {
launchd.agents.chirami = {
enable = true;
config = {
ProgramArguments = command;
RunAtLoad = true;
KeepAlive = true;
ProcessType = "Interactive";
};
};
})
]
);
}