289 lines
No EOL
7.7 KiB
Nix
289 lines
No EOL
7.7 KiB
Nix
{ inputs, ... }:
|
|
{
|
|
flake.modules.nixos.arr =
|
|
{ lib, pkgs, config, ... }:
|
|
{
|
|
|
|
imports = with inputs.self.modules.nixos; [
|
|
podman
|
|
];
|
|
|
|
age.secrets.gluetun.file = ../../../secrets/gluetun.age;
|
|
|
|
virtualisation.oci-containers.containers =
|
|
{
|
|
"gluetun" = {
|
|
image = "qmcgaw/gluetun:latest";
|
|
environmentFiles = [
|
|
"${config.age.secrets.gluetun.path}"
|
|
];
|
|
ports = [
|
|
"4545:4545" #Requestrr
|
|
"6767:6767" #Bazarr
|
|
"7878:7878" #Radarr
|
|
"8080:8080" #QBitTorrent
|
|
"8989:8989" #Sonarr
|
|
"9696:9696" #Prowlarr
|
|
"6881:6881/tcp"
|
|
"6881:6881/udp"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--cap-add=NET_ADMIN"
|
|
"--device=/dev/net/tun:/dev/net/tun:rwm"
|
|
"--network-alias=gluetun"
|
|
];
|
|
};
|
|
|
|
|
|
"qbittorrent" = {
|
|
image = "lscr.io/linuxserver/qbittorrent:latest";
|
|
environment = {
|
|
"PGID" = "1000";
|
|
"PUID" = "1000";
|
|
"TZ" = "America/New_York";
|
|
"WEBUI_PORT" = "8080";
|
|
};
|
|
volumes = [
|
|
"/DockerData/configs/qbittorrent:/config:rw"
|
|
"/Media/Downloads:/Media/Downloads:rw"
|
|
];
|
|
dependsOn = [
|
|
"gluetun"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--network=container:gluetun"
|
|
];
|
|
};
|
|
|
|
"flaresolverr" = {
|
|
image = "ghcr.io/flaresolverr/flaresolverr:latest";
|
|
environment = {
|
|
"CAPTCHA_SOLVER" = "none";
|
|
"LOG_HTML" = "false";
|
|
"LOG_LEVEL" = "info";
|
|
"PGID" = "1000";
|
|
"PUID" = "1000";
|
|
"TZ" = "America/New_York";
|
|
};
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--network-alias=flaresolverr"
|
|
];
|
|
};
|
|
|
|
"prowlarr" = {
|
|
image = "lscr.io/linuxserver/prowlarr:latest";
|
|
environment = {
|
|
"PGID" = "1000";
|
|
"PUID" = "1000";
|
|
"TZ" = "America/New_York";
|
|
};
|
|
volumes = [
|
|
"/DockerData/configs/prowlarr:/config:rw"
|
|
];
|
|
dependsOn = [
|
|
"flaresolverr"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--network=container:gluetun"
|
|
];
|
|
};
|
|
|
|
"radarr" = {
|
|
image = "lscr.io/linuxserver/radarr:latest";
|
|
environment = {
|
|
"PGID" = "1000";
|
|
"PUID" = "1000";
|
|
"TZ" = "America/New_York";
|
|
};
|
|
volumes = [
|
|
"/DockerData/configs/radarr:/config:rw"
|
|
"/Media/AutoMovies:/Media/Movies:rw"
|
|
"/Media/Downloads:/Media/Downloads:rw"
|
|
];
|
|
dependsOn = [
|
|
"prowlarr"
|
|
"qbittorrent"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--network=container:gluetun"
|
|
];
|
|
};
|
|
|
|
"sonarr" = {
|
|
image = "lscr.io/linuxserver/sonarr:latest";
|
|
environment = {
|
|
"PGID" = "1000";
|
|
"PUID" = "1000";
|
|
"TZ" = "America/New_York";
|
|
};
|
|
volumes = [
|
|
"/DockerData/configs/sonarr:/config:rw"
|
|
"/Media/AutoTV:/Media/TV:rw"
|
|
"/Media/Downloads:/Media/Downloads:rw"
|
|
];
|
|
dependsOn = [
|
|
"prowlarr"
|
|
"qbittorrent"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--network=container:gluetun"
|
|
];
|
|
};
|
|
|
|
"requestrr" = {
|
|
image = "thomst08/requestrr";
|
|
environment = {
|
|
"PGID" = "1000";
|
|
"PUID" = "1000";
|
|
"TZ" = "America/New_York";
|
|
};
|
|
volumes = [
|
|
"/DockerData/configs/requestrr:/root/config:rw"
|
|
];
|
|
dependsOn = [
|
|
"radarr"
|
|
"sonarr"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--network=container:gluetun"
|
|
];
|
|
};
|
|
|
|
"bazarr" = {
|
|
image = "ghcr.io/hotio/bazarr";
|
|
environment = {
|
|
"PGID" = "1000";
|
|
"PUID" = "1000";
|
|
"TZ" = "America/New_York";
|
|
};
|
|
volumes = [
|
|
"/DockerData/configs/bazarr:/config:rw"
|
|
"/Media/AutoMovies:/Media/Movies:rw"
|
|
"/Media/AutoTV:/Media/TV:rw"
|
|
"/Media/Downloads:/Media/Downloads:rw"
|
|
];
|
|
dependsOn = [
|
|
"radarr"
|
|
"sonarr"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--network=container:gluetun"
|
|
];
|
|
};
|
|
};
|
|
|
|
systemd = {
|
|
services = {
|
|
"podman-gluetun" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-arr-root.target" ];
|
|
wantedBy = [ "podman-compose-arr-root.target" ];
|
|
};
|
|
|
|
"podman-qbittorrent" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-arr-root.target" ];
|
|
wantedBy = [ "podman-compose-arr-root.target" ];
|
|
after = [ "podman-gluetun.service" ];
|
|
wants = [ "podman-gluetun.service" ];
|
|
};
|
|
|
|
"podman-flaresolverr" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-arr-root.target" ];
|
|
wantedBy = [ "podman-compose-arr-root.target" ];
|
|
after = [ "podman-gluetun.service" ];
|
|
wants = [ "podman-gluetun.service" ];
|
|
};
|
|
|
|
"podman-prowlarr" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-arr-root.target" ];
|
|
wantedBy = [ "podman-compose-arr-root.target" ];
|
|
after = [ "podman-gluetun.service" ];
|
|
wants = [ "podman-gluetun.service" ];
|
|
};
|
|
|
|
"podman-radarr" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-arr-root.target" ];
|
|
wantedBy = [ "podman-compose-arr-root.target" ];
|
|
after = [ "podman-gluetun.service" ];
|
|
wants = [ "podman-gluetun.service" ];
|
|
};
|
|
|
|
"podman-sonarr" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-arr-root.target" ];
|
|
wantedBy = [ "podman-compose-arr-root.target" ];
|
|
after = [ "podman-gluetun.service" ];
|
|
wants = [ "podman-gluetun.service" ];
|
|
};
|
|
|
|
"podman-requestrr" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-arr-root.target" ];
|
|
wantedBy = [ "podman-compose-arr-root.target" ];
|
|
after = [ "podman-gluetun.service" ];
|
|
wants = [ "podman-gluetun.service" ];
|
|
};
|
|
|
|
"podman-bazarr" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-arr-root.target" ];
|
|
wantedBy = [ "podman-compose-arr-root.target" ];
|
|
after = [ "podman-gluetun.service" ];
|
|
wants = [ "podman-gluetun.service" ];
|
|
};
|
|
};
|
|
|
|
targets = {
|
|
"podman-compose-arr-root" = {
|
|
wantedBy = [ "multi-user.target" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
systemd.services.restart-arr-daily = {
|
|
enable = true;
|
|
description = "Restart ARR stack";
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
ExecStart = "${pkgs.systemd}/bin/systemctl restart podman-compose-arr-root.target";
|
|
};
|
|
};
|
|
systemd.timers.restart-arr-daily = {
|
|
wantedBy = [ "timers.target" ];
|
|
timerConfig = {
|
|
OnCalendar= "4:03:0";
|
|
Persistent=true;
|
|
Unit = "restart-arr-daily.service";
|
|
};
|
|
};
|
|
};
|
|
} |