103 lines
2.5 KiB
Nix
103 lines
2.5 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
utils,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.services.unpackerr;
|
|
configFormat = pkgs.formats.toml { };
|
|
configFile = configFormat.generate "unpackerr.conf" cfg.settings;
|
|
inherit (lib)
|
|
mkEnableOption
|
|
mkOption
|
|
mkPackageOption
|
|
mkIf
|
|
getExe
|
|
types
|
|
;
|
|
in
|
|
{
|
|
options = {
|
|
services.unpackerr = {
|
|
enable = mkEnableOption "Unpackerr";
|
|
|
|
settings = mkOption {
|
|
type = configFormat.type;
|
|
default = { };
|
|
example = {
|
|
radarr = [
|
|
{
|
|
url = "http://127.0.0.1:8989";
|
|
api_key = "0123456789abcdef0123456789abcdef";
|
|
}
|
|
];
|
|
sonarr = [
|
|
{
|
|
url = "http://127.0.0.1:7878";
|
|
api_key = "0123456789abcdef0123456789abcdef";
|
|
}
|
|
];
|
|
};
|
|
description = ''
|
|
Unpackerr TOML configuration as a Nix attribute set.
|
|
Refer to [Unpackerr docs](https://unpackerr.zip/docs/install/configuration) for details.
|
|
For setting secrets refer to this [section](https://unpackerr.zip/docs/install/configuration/#secrets-and-passwords).
|
|
'';
|
|
};
|
|
|
|
user = mkOption {
|
|
type = types.str;
|
|
default = "unpackerr";
|
|
description = "User account under which Unpackerr runs.";
|
|
};
|
|
|
|
group = mkOption {
|
|
type = types.str;
|
|
default = "unpackerr";
|
|
description = "Group under which Unpackerr runs.";
|
|
};
|
|
|
|
package = mkPackageOption pkgs "unpackerr" { };
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
# Upstream service: https://github.com/Unpackerr/unpackerr/blob/main/init/systemd/unpackerr.service
|
|
systemd = {
|
|
services.unpackerr = {
|
|
description = "Unpackerr - archive extraction daemon";
|
|
wants = [ "network.target" ];
|
|
after = [ "network.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "exec";
|
|
User = cfg.user;
|
|
Group = cfg.group;
|
|
ExecStart = utils.escapeSystemdExecArgs [
|
|
(getExe cfg.package)
|
|
"--config=${configFile}"
|
|
];
|
|
Restart = "always";
|
|
RestartSec = 10;
|
|
};
|
|
};
|
|
};
|
|
|
|
users.users = mkIf (cfg.user == "unpackerr") {
|
|
unpackerr = {
|
|
inherit (cfg) group;
|
|
isSystemUser = true;
|
|
};
|
|
};
|
|
|
|
users.groups = mkIf (cfg.group == "unpackerr") {
|
|
unpackerr = { };
|
|
};
|
|
};
|
|
|
|
meta.maintainers = with lib.maintainers; [ Wekuz ];
|
|
}
|