Files
nix-config/modules/nixos/services/arrs/default.nix
mjallen18 d9d7760e58 nix fmt
2026-02-02 18:14:04 -06:00

143 lines
4.0 KiB
Nix

{
config,
lib,
pkgs,
namespace,
...
}:
with lib;
let
name = "arrs";
cfg = config.${namespace}.services.${name};
arrsConfig = lib.${namespace}.mkModule {
inherit config name;
serviceName = "sabnzbd";
description = "*arr Services";
options = { };
moduleConfig = {
sops = {
secrets = {
"jallen-nas/sabnzbd/password" = {
sopsFile = (lib.snowfall.fs.get-file "secrets/nas-secrets.yaml");
};
"jallen-nas/sabnzbd/api-key" = {
sopsFile = (lib.snowfall.fs.get-file "secrets/nas-secrets.yaml");
};
"jallen-nas/sabnzbd/nzb-key" = {
sopsFile = (lib.snowfall.fs.get-file "secrets/nas-secrets.yaml");
};
"jallen-nas/sabnzbd/server/username" = {
sopsFile = (lib.snowfall.fs.get-file "secrets/nas-secrets.yaml");
};
"jallen-nas/sabnzbd/server/password" = {
sopsFile = (lib.snowfall.fs.get-file "secrets/nas-secrets.yaml");
};
};
templates = {
"sabnzbd.ini" = {
mode = "660";
owner = "nix-apps";
group = "jallen-nas";
restartUnits = [ "sabnzbd.service" ];
content = ''
misc.password=${config.sops.placeholder."jallen-nas/sabnzbd/password"}
misc.api_key=${config.sops.placeholder."jallen-nas/sabnzbd/api-key"}
misc.nzb_key=${config.sops.placeholder."jallen-nas/sabnzbd/nzb-key"}
servers."news.newsgroupdirect.com".username=${
config.sops.placeholder."jallen-nas/sabnzbd/server/username"
}
servers."news.newsgroupdirect.com".password=${
config.sops.placeholder."jallen-nas/sabnzbd/server/password"
}
'';
};
};
};
# Enable radarr service
services.radarr = {
enable = true;
openFirewall = cfg.openFirewall;
user = "nix-apps";
group = "jallen-nas";
dataDir = "${cfg.configDir}/radarr";
};
# Enable Sonarr service
services.sonarr = {
enable = true;
openFirewall = cfg.openFirewall;
user = "nix-apps";
group = "jallen-nas";
dataDir = "${cfg.configDir}/sonarr";
package = pkgs.unstable.sonarr;
};
# Enable Sabnzbd service
services.sabnzbd = {
enable = true;
user = "nix-apps";
group = "jallen-nas";
secretFiles = [
config.sops.templates."sabnzbd.ini".path
];
settings = {
misc = {
host = "0.0.0.0";
port = 8280;
cache_limit = "10G";
download_dir = "${cfg.configDir}/downloads";
complete_dir = "${cfg.configDir}/incomplete";
};
servers = {
"news.newsgroupdirect.com" = {
name = "news.newsgroupdirect.com";
displayname = "news.newsgroupdirect.com";
host = "news.newsgroupdirect.com";
port = 563;
timeout = 60;
connections = 8;
ssl = true;
ssl_verify = 2;
ssl_ciphers = "";
enable = true;
required = false;
optional = false;
retention = 0;
expire_date = "";
quota = "";
usage_at_start = 0;
priority = 0;
notes = "";
};
};
};
};
services.deluge = {
enable = false;
user = "nix-apps";
group = "jallen-nas";
openFirewall = cfg.openFirewall;
dataDir = cfg.dataDir;
web = {
enable = true;
port = 8112;
openFirewall = cfg.openFirewall;
};
};
services.jackett = {
enable = false;
user = "nix-apps";
group = "jallen-nas";
openFirewall = cfg.openFirewall;
};
};
};
in
{
imports = [ arrsConfig ];
}