recylcarr: fix
This commit is contained in:
@@ -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}" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user