from my phone so i cant see the changes lol
This commit is contained in:
364
modules/containers/arr/container.nix
Normal file
364
modules/containers/arr/container.nix
Normal file
@@ -0,0 +1,364 @@
|
||||
{moduleWithSystem, ...}: {
|
||||
flake.nixosModules.containerArrStack = moduleWithSystem ({pkgs, ...}: {config, ...}: {
|
||||
virtualisation.oci-containers.containers."bazarr" = {
|
||||
image = "lscr.io/linuxserver/bazarr:latest";
|
||||
environment = {
|
||||
"PGID" = "0";
|
||||
"PUID" = "0";
|
||||
"TZ" = "Etc/UTC";
|
||||
};
|
||||
volumes = [
|
||||
"/containers/arr/bazarr-config:/config:rw"
|
||||
"/mnt/storage/streaming:/data:rw"
|
||||
];
|
||||
ports = [
|
||||
"8994:6767/tcp"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
"--network-alias=bazarr"
|
||||
"--network=arr-stack_default"
|
||||
];
|
||||
};
|
||||
systemd.services."podman-bazarr" = {
|
||||
serviceConfig = {
|
||||
Restart = pkgs.lib.mkOverride 90 "always";
|
||||
};
|
||||
after = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
requires = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
partOf = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
};
|
||||
virtualisation.oci-containers.containers."flaresolverr" = {
|
||||
image = "ghcr.io/flaresolverr/flaresolverr:latest";
|
||||
environment = {
|
||||
"CAPTCHA_SOLVER" = "none";
|
||||
"LOG_HTML" = "false";
|
||||
"LOG_LEVEL" = "info";
|
||||
"TZ" = "Europe/London";
|
||||
};
|
||||
ports = [
|
||||
"8191:8191/tcp"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
"--network-alias=flaresolverr"
|
||||
"--network=arr-stack_default"
|
||||
];
|
||||
};
|
||||
systemd.services."podman-flaresolverr" = {
|
||||
serviceConfig = {
|
||||
Restart = pkgs.lib.mkOverride 90 "always";
|
||||
};
|
||||
after = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
requires = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
partOf = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
};
|
||||
virtualisation.oci-containers.containers."lidarr" = {
|
||||
image = "lscr.io/linuxserver/lidarr:nightly";
|
||||
environment = {
|
||||
"PGID" = "0";
|
||||
"PUID" = "0";
|
||||
"TZ" = "Europe/London";
|
||||
};
|
||||
volumes = [
|
||||
"/containers/arr/lidarr-config:/config:rw"
|
||||
"/mnt/storage/streaming:/data:rw"
|
||||
];
|
||||
ports = [
|
||||
"8992:8686/tcp"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
"--network-alias=lidarr"
|
||||
"--network=arr-stack_default"
|
||||
];
|
||||
};
|
||||
systemd.services."podman-lidarr" = {
|
||||
serviceConfig = {
|
||||
Restart = pkgs.lib.mkOverride 90 "always";
|
||||
};
|
||||
after = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
requires = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
partOf = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
};
|
||||
virtualisation.oci-containers.containers."lidatube" = {
|
||||
image = "thewicklowwolf/lidatube:latest";
|
||||
environment = {
|
||||
"PGID" = "0";
|
||||
"PUID" = "0";
|
||||
"lidarr_address" = "http://192.168.1.180:8992";
|
||||
};
|
||||
environmentFiles = [config.sops.secrets.lidarr-api-key.path];
|
||||
volumes = [
|
||||
"/containers/arr/lidatube-config:/lidatube/config:rw"
|
||||
"/etc/localtime:/etc/localtime:ro"
|
||||
"/mnt/storage/streaming/lidarr:/lidatube/downloads:rw"
|
||||
];
|
||||
ports = [
|
||||
"8997:5000/tcp"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
"--network-alias=lidatube"
|
||||
"--network=arr-stack_default"
|
||||
];
|
||||
};
|
||||
systemd.services."podman-lidatube" = {
|
||||
serviceConfig = {
|
||||
Restart = pkgs.lib.mkOverride 90 "always";
|
||||
};
|
||||
after = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
requires = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
partOf = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
};
|
||||
virtualisation.oci-containers.containers."nginx" = {
|
||||
image = "lscr.io/linuxserver/nginx:latest";
|
||||
environment = {
|
||||
"NGINX_AUTORELOAD" = "true";
|
||||
"PGID" = "1000";
|
||||
"PUID" = "1000";
|
||||
"TZ" = "Europe/London";
|
||||
};
|
||||
volumes = [
|
||||
"/containers/arr/nginx-config:/config:rw"
|
||||
];
|
||||
ports = [
|
||||
"8989:80/tcp"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
"--network-alias=nginx"
|
||||
"--network=arr-stack_default"
|
||||
];
|
||||
};
|
||||
systemd.services."podman-nginx" = {
|
||||
serviceConfig = {
|
||||
Restart = pkgs.lib.mkOverride 90 "always";
|
||||
};
|
||||
after = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
requires = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
partOf = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
};
|
||||
virtualisation.oci-containers.containers."prowlarr" = {
|
||||
image = "lscr.io/linuxserver/prowlarr:latest";
|
||||
environment = {
|
||||
"PGID" = "1000";
|
||||
"PUID" = "1000";
|
||||
"TZ" = "Etc/UTC";
|
||||
};
|
||||
volumes = [
|
||||
"/containers/arr/prowlarr-config:/config:rw"
|
||||
];
|
||||
ports = [
|
||||
"8996:9696/tcp"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
"--network-alias=prowlarr"
|
||||
"--network=arr-stack_default"
|
||||
];
|
||||
};
|
||||
systemd.services."podman-prowlarr" = {
|
||||
serviceConfig = {
|
||||
Restart = pkgs.lib.mkOverride 90 "always";
|
||||
};
|
||||
after = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
requires = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
partOf = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
};
|
||||
virtualisation.oci-containers.containers."qbittorrent" = {
|
||||
image = "lscr.io/linuxserver/qbittorrent:latest";
|
||||
environment = {
|
||||
"PGID" = "0";
|
||||
"PUID" = "0";
|
||||
"TORRENTING_PORT" = "6881";
|
||||
"TZ" = "Etc/UTC";
|
||||
"WEBUI_PORT" = "8995";
|
||||
};
|
||||
volumes = [
|
||||
"/containers/arr/qbittorrnt-config:/config:rw"
|
||||
"/mnt/storage/streaming/downloadclient:/data/downloadclient:rw"
|
||||
];
|
||||
ports = [
|
||||
"8995:8995/tcp"
|
||||
"6881:6881/tcp"
|
||||
"6881:6881/udp"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
"--network-alias=qbittorrent"
|
||||
"--network=arr-stack_default"
|
||||
];
|
||||
};
|
||||
systemd.services."podman-qbittorrent" = {
|
||||
serviceConfig = {
|
||||
Restart = pkgs.lib.mkOverride 90 "always";
|
||||
};
|
||||
after = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
requires = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
partOf = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
};
|
||||
virtualisation.oci-containers.containers."radarr" = {
|
||||
image = "lscr.io/linuxserver/radarr:latest";
|
||||
environment = {
|
||||
"PGID" = "0";
|
||||
"PUID" = "0";
|
||||
"TZ" = "Europe/London";
|
||||
};
|
||||
volumes = [
|
||||
"/containers/arr/radarr-config:/config:rw"
|
||||
"/mnt/storage/streaming:/data:rw"
|
||||
];
|
||||
ports = [
|
||||
"8991:7878/tcp"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
"--network-alias=radarr"
|
||||
"--network=arr-stack_default"
|
||||
];
|
||||
};
|
||||
systemd.services."podman-radarr" = {
|
||||
serviceConfig = {
|
||||
Restart = pkgs.lib.mkOverride 90 "always";
|
||||
};
|
||||
after = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
requires = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
partOf = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
};
|
||||
virtualisation.oci-containers.containers."sonarr" = {
|
||||
image = "lscr.io/linuxserver/sonarr:latest";
|
||||
environment = {
|
||||
"PGID" = "0";
|
||||
"PUID" = "0";
|
||||
"TZ" = "Europe/London";
|
||||
};
|
||||
volumes = [
|
||||
"/containers/arr/sonarr-config:/config:rw"
|
||||
"/mnt/storage/streaming:/data:rw"
|
||||
];
|
||||
ports = [
|
||||
"8990:8989/tcp"
|
||||
];
|
||||
log-driver = "journald";
|
||||
extraOptions = [
|
||||
"--network-alias=sonarr"
|
||||
"--network=arr-stack_default"
|
||||
];
|
||||
};
|
||||
systemd.services."podman-sonarr" = {
|
||||
serviceConfig = {
|
||||
Restart = pkgs.lib.mkOverride 90 "always";
|
||||
};
|
||||
after = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
requires = [
|
||||
"podman-network-arr-stack_default.service"
|
||||
];
|
||||
partOf = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"podman-compose-arr-stack-root.target"
|
||||
];
|
||||
};
|
||||
|
||||
# Networks
|
||||
systemd.services."podman-network-arr-stack_default" = {
|
||||
path = [pkgs.podman];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
ExecStop = "podman network rm -f arr-stack_default";
|
||||
};
|
||||
script = ''
|
||||
podman network inspect arr-stack_default || podman network create arr-stack_default
|
||||
'';
|
||||
partOf = ["podman-compose-arr-stack-root.target"];
|
||||
wantedBy = ["podman-compose-arr-stack-root.target"];
|
||||
};
|
||||
|
||||
# Root service
|
||||
# When started, this will automatically create all resources and start
|
||||
# the containers. When stopped, this will teardown all resources.
|
||||
systemd.targets."podman-compose-arr-stack-root" = {
|
||||
unitConfig = {
|
||||
Description = "Root target generated by compose2nix.";
|
||||
};
|
||||
wantedBy = ["multi-user.target"];
|
||||
};
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user