recylcarr: fix

This commit is contained in:
2026-03-18 15:01:29 -04:00
parent 96e02457ff
commit 00c1d3078a

View File

@@ -8,18 +8,20 @@
let let
radarrConfig = "${service_configs.radarr.dataDir}/config.xml"; radarrConfig = "${service_configs.radarr.dataDir}/config.xml";
sonarrConfig = "${service_configs.sonarr.dataDir}/config.xml"; sonarrConfig = "${service_configs.sonarr.dataDir}/config.xml";
appDataDir = "${service_configs.recyclarr.dataDir}/data"; configPath = "/var/lib/recyclarr/config.json";
# Runs as root (via + prefix) to read API keys, writes secrets.yml for recyclarr # Runs as root (via + prefix) after the NixOS module writes config.json.
generateSecrets = pkgs.writeShellScript "recyclarr-generate-secrets" '' # Extracts API keys from radarr/sonarr config.xml and injects them via jq.
RADARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${radarrConfig}) injectApiKeys = pkgs.writeShellScript "recyclarr-inject-api-keys" ''
SONARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${sonarrConfig}) RADARR_KEY=$(${lib.getExe pkgs.gnugrep} -oP '(?<=<ApiKey>)[^<]+' ${radarrConfig})
cat > ${appDataDir}/secrets.yml <<EOF SONARR_KEY=$(${lib.getExe pkgs.gnugrep} -oP '(?<=<ApiKey>)[^<]+' ${sonarrConfig})
movies_api_key: $RADARR_KEY ${pkgs.jq}/bin/jq \
series_api_key: $SONARR_KEY --arg rk "$RADARR_KEY" \
EOF --arg sk "$SONARR_KEY" \
chown recyclarr:recyclarr ${appDataDir}/secrets.yml '.radarr.movies.api_key = $rk | .sonarr.series.api_key = $sk' \
chmod 600 ${appDataDir}/secrets.yml ${configPath} > ${configPath}.tmp
mv ${configPath}.tmp ${configPath}
chown recyclarr:recyclarr ${configPath}
''; '';
in in
{ {
@@ -31,7 +33,6 @@ in
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d ${service_configs.recyclarr.dataDir} 0755 recyclarr recyclarr -" "d ${service_configs.recyclarr.dataDir} 0755 recyclarr recyclarr -"
"d ${appDataDir} 0755 recyclarr recyclarr -"
]; ];
services.recyclarr = { services.recyclarr = {
@@ -55,11 +56,15 @@ in
{ {
name = "Remux + WEB 2160p"; name = "Remux + WEB 2160p";
min_format_score = 0; min_format_score = 0;
reset_unmatched_scores = {
enabled = true;
};
upgrade = { upgrade = {
allowed = true; allowed = true;
until_quality = "Remux-2160p"; until_quality = "Remux-2160p";
until_score = 0; until_score = 10000;
}; };
quality_sort = "top";
qualities = [ qualities = [
{ name = "Remux-2160p"; } { name = "Remux-2160p"; }
{ {
@@ -130,11 +135,15 @@ in
{ {
name = "WEB-2160p"; name = "WEB-2160p";
min_format_score = 0; min_format_score = 0;
reset_unmatched_scores = {
enabled = true;
};
upgrade = { upgrade = {
allowed = true; allowed = true;
until_quality = "WEB 2160p"; until_quality = "WEB 2160p";
until_score = 0; until_score = 10000;
}; };
quality_sort = "top";
qualities = [ qualities = [
{ {
name = "WEB 2160p"; name = "WEB 2160p";
@@ -201,6 +210,6 @@ in
"sonarr.service" "sonarr.service"
]; ];
wants = [ "network-online.target" ]; wants = [ "network-online.target" ];
serviceConfig.ExecStartPre = "+${generateSecrets}"; serviceConfig.ExecStartPre = [ "+${injectApiKeys}" ];
}; };
} }