From 5f6f6ad094b442abe2121685ac2394a403a4b0a0 Mon Sep 17 00:00:00 2001 From: pazpi Date: Fri, 16 Aug 2024 18:22:48 +0200 Subject: [PATCH] WIP: Arr services, container ok, missing webpage --- modules/services/download-pod.nix | 115 +++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 2 deletions(-) diff --git a/modules/services/download-pod.nix b/modules/services/download-pod.nix index ddf4b5a..1d49a78 100644 --- a/modules/services/download-pod.nix +++ b/modules/services/download-pod.nix @@ -1,14 +1,125 @@ -{ config, lib, ... }: +{ config, pkgs, lib, ... }: let cfg = config.download-pod; in { options.download-pod = { enable = lib.mkEnableOption "Enable the download searcher stack"; + + proxy = { + enable = lib.mkEnableOption "Enable proxy for the services"; + + hostName = lib.mkOption { + default = "example.com"; + type = lib.types.str; + description = '' + Top level hostname + ''; + }; + + serverName = lib.mkOption { + default = "localhost"; + type = lib.types.str; + description = '' + Server name where Caddy is + ''; + }; + + }; + }; config = lib.mkIf cfg.enable { - nixfiles.oci-containers.pods.download = { }; + + podman.enable = true; + + systemd.services.pod-download = { + description = "Start podman 'download' pod"; + wants = [ "network-online.target" ]; + after = [ "network-online.target" ]; + requiredBy = [ + "podman-jackett.service" + "podman-radarr.service" + "podman-sabnzbd.service" + "podman-sonarr.service" + ]; + unitConfig = { + RequiresMountsFor = "/run/containers"; + }; + serviceConfig = { + Type = "oneshot"; + # - 9117: Jackett + # - 7878: Radarr + # - 8080: Sabnzbd + # - 8989: Sonarr + ExecStart = "-${pkgs.podman}/bin/podman pod create -p 9117:9117 -p 7878:7878 -p 8080:8080 -p 8989:8989 download"; + }; + path = [ pkgs.podman ]; + }; + + virtualisation.oci-containers.containers = { + jackett = { + image = "linuxserver/jackett"; + autoStart = true; + user = "1000:100"; + extraOptions = [ + "--pod=download" + ]; + volumes = [ "jackett_config:/config" "jackett_data:/data" ]; + }; + + radarr = { + image = "linuxserver/radarr"; + autoStart = true; + user = "1000:100"; + extraOptions = [ + "--pod=download" + ]; + volumes = [ "radarr_config:/config" "radarr_data:/data" ]; + }; + + sabnzbd = { + image = "linuxserver/sabnzbd"; + autoStart = true; + user = "1000:100"; + extraOptions = [ + "--pod=download" + ]; + volumes = [ "sabnzbd_config:/config" "sabnzbd_data:/data" ]; + }; + + sonarr = { + image = "linuxserver/sonarr"; + autoStart = true; + user = "1000:100"; + extraOptions = [ + "--pod=download" + ]; + volumes = [ "sonarr_config:/config" "sonarr_data:/data" ]; + }; + + }; + + services.caddy = lib.mkIf cfg.proxy.enable { + enable = true; + enableReload = false; + virtualHosts = { + "jackett.${cfg.proxy.hostName}".extraConfig = '' + reverse_proxy http://${cfg.proxy.serverName}:9117 + ''; + "radarr.${cfg.proxy.hostName}".extraConfig = '' + reverse_proxy http://${cfg.proxy.serverName}:7878 + ''; + "sabnzbd.${cfg.proxy.hostName}".extraConfig = '' + reverse_proxy http://${cfg.proxy.serverName}:8080 + ''; + "sonarr.${cfg.proxy.hostName}".extraConfig = '' + reverse_proxy http://${cfg.proxy.serverName}:8989 + ''; + }; + + }; + };