recyclarr: init
This commit is contained in:
@@ -37,6 +37,7 @@
|
|||||||
./services/arr/radarr.nix
|
./services/arr/radarr.nix
|
||||||
./services/arr/bazarr.nix
|
./services/arr/bazarr.nix
|
||||||
./services/arr/jellyseerr.nix
|
./services/arr/jellyseerr.nix
|
||||||
|
./services/arr/recyclarr.nix
|
||||||
|
|
||||||
./services/soulseek.nix
|
./services/soulseek.nix
|
||||||
|
|
||||||
|
|||||||
@@ -218,6 +218,10 @@
|
|||||||
jellyseerr = {
|
jellyseerr = {
|
||||||
configDir = services_dir + "/jellyseerr";
|
configDir = services_dir + "/jellyseerr";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
recyclarr = {
|
||||||
|
dataDir = services_dir + "/recyclarr";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
|
|||||||
202
services/arr/recyclarr.nix
Normal file
202
services/arr/recyclarr.nix
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
service_configs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
radarrConfig = "${service_configs.radarr.dataDir}/config.xml";
|
||||||
|
sonarrConfig = "${service_configs.sonarr.dataDir}/config.xml";
|
||||||
|
appDataDir = "${service_configs.recyclarr.dataDir}/data";
|
||||||
|
|
||||||
|
# Runs as root (via + prefix) to read API keys, writes secrets.yml for recyclarr
|
||||||
|
generateSecrets = pkgs.writeShellScript "recyclarr-generate-secrets" ''
|
||||||
|
RADARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${radarrConfig})
|
||||||
|
SONARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${sonarrConfig})
|
||||||
|
cat > ${appDataDir}/secrets.yml <<EOF
|
||||||
|
movies_api_key: $RADARR_KEY
|
||||||
|
series_api_key: $SONARR_KEY
|
||||||
|
EOF
|
||||||
|
chown recyclarr:recyclarr ${appDataDir}/secrets.yml
|
||||||
|
chmod 600 ${appDataDir}/secrets.yml
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(lib.serviceMountWithZpool "recyclarr" service_configs.zpool_ssds [
|
||||||
|
service_configs.recyclarr.dataDir
|
||||||
|
])
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d ${service_configs.recyclarr.dataDir} 0755 recyclarr recyclarr -"
|
||||||
|
"d ${appDataDir} 0755 recyclarr recyclarr -"
|
||||||
|
];
|
||||||
|
|
||||||
|
services.recyclarr = {
|
||||||
|
enable = true;
|
||||||
|
command = "sync";
|
||||||
|
schedule = "daily";
|
||||||
|
user = "recyclarr";
|
||||||
|
group = "recyclarr";
|
||||||
|
|
||||||
|
configuration = {
|
||||||
|
radarr.movies = {
|
||||||
|
base_url = "http://localhost:${builtins.toString service_configs.ports.radarr}";
|
||||||
|
|
||||||
|
include = [
|
||||||
|
{ template = "radarr-quality-definition-movie"; }
|
||||||
|
{ template = "radarr-quality-profile-remux-web-2160p"; }
|
||||||
|
{ template = "radarr-custom-formats-remux-web-2160p"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
quality_profiles = [
|
||||||
|
{
|
||||||
|
name = "Remux + WEB 2160p";
|
||||||
|
upgrade = {
|
||||||
|
allowed = true;
|
||||||
|
until_quality = "Remux-2160p";
|
||||||
|
};
|
||||||
|
qualities = [
|
||||||
|
{ name = "Remux-2160p"; }
|
||||||
|
{
|
||||||
|
name = "WEB 2160p";
|
||||||
|
qualities = [
|
||||||
|
"WEBDL-2160p"
|
||||||
|
"WEBRip-2160p"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ name = "Remux-1080p"; }
|
||||||
|
{ name = "Bluray-1080p"; }
|
||||||
|
{
|
||||||
|
name = "WEB 1080p";
|
||||||
|
qualities = [
|
||||||
|
"WEBDL-1080p"
|
||||||
|
"WEBRip-1080p"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ name = "HDTV-1080p"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
custom_formats = [
|
||||||
|
# Upscaled
|
||||||
|
{
|
||||||
|
trash_ids = [ "bfd8eb01832d646a0a89c4deb46f8564" ];
|
||||||
|
assign_scores_to = [
|
||||||
|
{
|
||||||
|
name = "Remux + WEB 2160p";
|
||||||
|
score = -10000;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
# x265 (HD) - override template -10000 penalty
|
||||||
|
{
|
||||||
|
trash_ids = [ "dc98083864ea246d05a42df0d05f81cc" ];
|
||||||
|
assign_scores_to = [
|
||||||
|
{
|
||||||
|
name = "Remux + WEB 2160p";
|
||||||
|
score = 0;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
# x265 (no HDR/DV) - override template -10000 penalty
|
||||||
|
{
|
||||||
|
trash_ids = [ "839bea857ed2c0a8e084f3cbdbd65ecb" ];
|
||||||
|
assign_scores_to = [
|
||||||
|
{
|
||||||
|
name = "Remux + WEB 2160p";
|
||||||
|
score = 0;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
sonarr.series = {
|
||||||
|
base_url = "http://localhost:${builtins.toString service_configs.ports.sonarr}";
|
||||||
|
|
||||||
|
include = [
|
||||||
|
{ template = "sonarr-quality-definition-series"; }
|
||||||
|
{ template = "sonarr-v4-quality-profile-web-2160p"; }
|
||||||
|
{ template = "sonarr-v4-custom-formats-web-2160p"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
quality_profiles = [
|
||||||
|
{
|
||||||
|
name = "WEB-2160p";
|
||||||
|
upgrade = {
|
||||||
|
allowed = true;
|
||||||
|
until_quality = "WEB 2160p";
|
||||||
|
};
|
||||||
|
qualities = [
|
||||||
|
{
|
||||||
|
name = "WEB 2160p";
|
||||||
|
qualities = [
|
||||||
|
"WEBDL-2160p"
|
||||||
|
"WEBRip-2160p"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ name = "Bluray-1080p Remux"; }
|
||||||
|
{ name = "Bluray-1080p"; }
|
||||||
|
{
|
||||||
|
name = "WEB 1080p";
|
||||||
|
qualities = [
|
||||||
|
"WEBDL-1080p"
|
||||||
|
"WEBRip-1080p"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ name = "HDTV-1080p"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
custom_formats = [
|
||||||
|
# Upscaled
|
||||||
|
{
|
||||||
|
trash_ids = [ "23297a736ca77c0fc8e70f8edd7ee56c" ];
|
||||||
|
assign_scores_to = [
|
||||||
|
{
|
||||||
|
name = "WEB-2160p";
|
||||||
|
score = -10000;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
# x265 (HD) - override template -10000 penalty
|
||||||
|
{
|
||||||
|
trash_ids = [ "47435ece6b99a0b477caf360e79ba0bb" ];
|
||||||
|
assign_scores_to = [
|
||||||
|
{
|
||||||
|
name = "WEB-2160p";
|
||||||
|
score = 0;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
# x265 (no HDR/DV) - override template -10000 penalty
|
||||||
|
{
|
||||||
|
trash_ids = [ "9b64dff695c2115facf1b6ea59c9bd07" ];
|
||||||
|
assign_scores_to = [
|
||||||
|
{
|
||||||
|
name = "WEB-2160p";
|
||||||
|
score = 0;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add secrets generation before recyclarr runs
|
||||||
|
systemd.services.recyclarr = {
|
||||||
|
after = [
|
||||||
|
"network-online.target"
|
||||||
|
"radarr.service"
|
||||||
|
"sonarr.service"
|
||||||
|
];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
serviceConfig.ExecStartPre = "+${generateSecrets}";
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user