more recyclarr things
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
let
|
let
|
||||||
configTemplate = (pkgs.formats.yaml {}).generate "recyclarr.yml" {
|
configTemplate = (pkgs.formats.yaml {}).generate "recyclarr.yml" {
|
||||||
radarr.movies = {
|
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";
|
api_key = "RADARR_API_KEY_PLACEHOLDER";
|
||||||
|
|
||||||
include = [
|
include = [
|
||||||
@@ -59,7 +59,7 @@ let
|
|||||||
};
|
};
|
||||||
|
|
||||||
sonarr.series = {
|
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";
|
api_key = "SONARR_API_KEY_PLACEHOLDER";
|
||||||
|
|
||||||
include = [
|
include = [
|
||||||
@@ -113,7 +113,10 @@ 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";
|
||||||
|
|
||||||
# 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" ''
|
generateConfig = pkgs.writeShellScript "recyclarr-generate-config" ''
|
||||||
RADARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${radarrConfig})
|
RADARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${radarrConfig})
|
||||||
SONARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${sonarrConfig})
|
SONARR_KEY=$(${pkgs.gnugrep}/bin/grep -oP '(?<=<ApiKey>)[^<]+' ${sonarrConfig})
|
||||||
@@ -121,6 +124,7 @@ let
|
|||||||
-e "s/RADARR_API_KEY_PLACEHOLDER/$RADARR_KEY/" \
|
-e "s/RADARR_API_KEY_PLACEHOLDER/$RADARR_KEY/" \
|
||||||
-e "s/SONARR_API_KEY_PLACEHOLDER/$SONARR_KEY/" \
|
-e "s/SONARR_API_KEY_PLACEHOLDER/$SONARR_KEY/" \
|
||||||
${configTemplate} > ${dataDir}/recyclarr.yml
|
${configTemplate} > ${dataDir}/recyclarr.yml
|
||||||
|
chown ${user}:${group} ${dataDir}/recyclarr.yml
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@@ -131,8 +135,8 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"d ${dataDir} 0755 root root -"
|
"d ${dataDir} 0755 ${user} ${group} -"
|
||||||
"d ${dataDir}/data 0755 root root -"
|
"d ${dataDir}/data 0755 ${user} ${group} -"
|
||||||
];
|
];
|
||||||
|
|
||||||
systemd.services.recyclarr = {
|
systemd.services.recyclarr = {
|
||||||
@@ -141,11 +145,21 @@ in
|
|||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStartPre = "${generateConfig}";
|
User = user;
|
||||||
ExecStart = "${pkgs.recyclarr}/bin/recyclarr sync --config ${dataDir}/recyclarr.yml --app-data ${dataDir}/data";
|
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 = {
|
systemd.timers.recyclarr = {
|
||||||
description = "Run Recyclarr daily";
|
description = "Run Recyclarr daily";
|
||||||
wantedBy = [ "timers.target" ];
|
wantedBy = [ "timers.target" ];
|
||||||
|
|||||||
Reference in New Issue
Block a user