more recyclarr things

This commit is contained in:
2026-02-18 22:53:33 -05:00
parent de089f8f64
commit 288a90f366

View File

@@ -8,7 +8,7 @@
let
configTemplate = (pkgs.formats.yaml {}).generate "recyclarr.yml" {
radarr.movies = {
base_url = "http://localhost:${service_configs.ports.radarr}";
base_url = "http://localhost:${builtins.toString service_configs.ports.radarr}";
api_key = "RADARR_API_KEY_PLACEHOLDER";
include = [
@@ -59,7 +59,7 @@ let
};
sonarr.series = {
base_url = "http://localhost:${service_configs.ports.sonarr}";
base_url = "http://localhost:${builtins.toString service_configs.ports.sonarr}";
api_key = "SONARR_API_KEY_PLACEHOLDER";
include = [
@@ -113,7 +113,10 @@ let
radarrConfig = "${service_configs.radarr.dataDir}/config.xml";
sonarrConfig = "${service_configs.sonarr.dataDir}/config.xml";
# Script to inject API keys from sonarr/radarr config.xml at runtime
user = "recyclarr";
group = "recyclarr";
# Runs as root (via + prefix) to read API keys from config.xml, then chowns output
generateConfig = pkgs.writeShellScript "recyclarr-generate-config" ''
RADARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${radarrConfig})
SONARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${sonarrConfig})
@@ -121,6 +124,7 @@ let
-e "s/RADARR_API_KEY_PLACEHOLDER/$RADARR_KEY/" \
-e "s/SONARR_API_KEY_PLACEHOLDER/$SONARR_KEY/" \
${configTemplate} > ${dataDir}/recyclarr.yml
chown ${user}:${group} ${dataDir}/recyclarr.yml
'';
in
{
@@ -131,8 +135,8 @@ in
];
systemd.tmpfiles.rules = [
"d ${dataDir} 0755 root root -"
"d ${dataDir}/data 0755 root root -"
"d ${dataDir} 0755 ${user} ${group} -"
"d ${dataDir}/data 0755 ${user} ${group} -"
];
systemd.services.recyclarr = {
@@ -141,11 +145,21 @@ in
wants = [ "network-online.target" ];
serviceConfig = {
Type = "oneshot";
ExecStartPre = "${generateConfig}";
ExecStart = "${pkgs.recyclarr}/bin/recyclarr sync --config ${dataDir}/recyclarr.yml --app-data ${dataDir}/data";
User = user;
Group = group;
ExecStartPre = "+${generateConfig}";
ExecStart = "${lib.getExe pkgs.recyclarr} sync --config ${dataDir}/recyclarr.yml --app-data ${dataDir}/data";
};
};
users.users.${user} = {
isSystemUser = true;
group = group;
home = dataDir;
};
users.groups.${group} = {};
systemd.timers.recyclarr = {
description = "Run Recyclarr daily";
wantedBy = [ "timers.target" ];