From 249f6fcac00611b4b75ff325eed61f51a41382c1 Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Thu, 10 Jul 2025 12:20:48 +0100 Subject: [PATCH] Clean up media names Signed-off-by: Nikolaos Karaolidis --- .../configs/console/podman/media/default.nix | 318 +++++++++++++----- .../libraries/movies/Anime Films.json | 2 +- .../libraries/tvshows/Anime Shows.json | 2 +- 3 files changed, 242 insertions(+), 80 deletions(-) diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/default.nix b/hosts/jupiter/users/storm/configs/console/podman/media/default.nix index 15e7f11..a98a907 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/media/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/media/default.nix @@ -22,8 +22,8 @@ in "d /mnt/storage/private/storm/containers/storage/volumes/media/_data 700 storm storm" "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/films 755 storm storm" "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/shows 755 storm storm" - "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/anime-films 755 storm storm" - "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/anime-shows 755 storm storm" + "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/anime/films 755 storm storm" + "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/anime/shows 755 storm storm" ]; sops = { @@ -34,10 +34,12 @@ in "prowlarr/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; - "radarr-films/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; - "radarr-anime-films/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; - "sonarr-shows/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; - "sonarr-anime-shows/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; + "radarr/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; + "radarr-uhd/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; + "radarr-anime/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; + "sonarr/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; + "sonarr-uhd/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; + "sonarr-anime/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; }; templates = { @@ -84,10 +86,10 @@ in PROWLARR_API_KEY=${hmConfig.sops.placeholder."prowlarr/apiKey"} ''; - prowlarr-radarr-films.content = builtins.readFile ( - (pkgs.formats.json { }).generate "radarr-films.json" { + prowlarr-radarr.content = builtins.readFile ( + (pkgs.formats.json { }).generate "radarr.json" { enable = true; - name = "Radarr (Films)"; + name = "Radarr"; implementation = "Radarr"; configContract = "RadarrSettings"; syncLevel = "fullSync"; @@ -98,20 +100,20 @@ in } { name = "baseUrl"; - value = "http://radarr-films:7878"; + value = "http://radarr:7878"; } { name = "apiKey"; - value = hmConfig.sops.placeholder."radarr-films/apiKey"; + value = hmConfig.sops.placeholder."radarr/apiKey"; } ]; } ); - prowlarr-radarr-anime-films.content = builtins.readFile ( - (pkgs.formats.json { }).generate "radarr-anime-films.json" { + prowlarr-radarr-uhd.content = builtins.readFile ( + (pkgs.formats.json { }).generate "radarr-uhd.json" { enable = true; - name = "Radarr (Anime Films)"; + name = "Radarr (UHD)"; implementation = "Radarr"; configContract = "RadarrSettings"; syncLevel = "fullSync"; @@ -122,20 +124,44 @@ in } { name = "baseUrl"; - value = "http://radarr-anime-films:7878"; + value = "http://radarr-uhd:7878"; } { name = "apiKey"; - value = hmConfig.sops.placeholder."radarr-anime-films/apiKey"; + value = hmConfig.sops.placeholder."radarr-uhd/apiKey"; } ]; } ); - prowlarr-sonarr-shows.content = builtins.readFile ( - (pkgs.formats.json { }).generate "sonarr-shows.json" { + prowlarr-radarr-anime.content = builtins.readFile ( + (pkgs.formats.json { }).generate "radarr-anime.json" { enable = true; - name = "Sonarr (Shows)"; + name = "Radarr (Anime)"; + implementation = "Radarr"; + configContract = "RadarrSettings"; + syncLevel = "fullSync"; + fields = [ + { + name = "prowlarrUrl"; + value = "http://prowlarr:9696"; + } + { + name = "baseUrl"; + value = "http://radarr-anime:7878"; + } + { + name = "apiKey"; + value = hmConfig.sops.placeholder."radarr-anime/apiKey"; + } + ]; + } + ); + + prowlarr-sonarr.content = builtins.readFile ( + (pkgs.formats.json { }).generate "sonarr.json" { + enable = true; + name = "Sonarr"; implementation = "Sonarr"; configContract = "SonarrSettings"; syncLevel = "fullSync"; @@ -146,20 +172,20 @@ in } { name = "baseUrl"; - value = "http://sonarr-shows:8989"; + value = "http://sonarr:8989"; } { name = "apiKey"; - value = hmConfig.sops.placeholder."sonarr-shows/apiKey"; + value = hmConfig.sops.placeholder."sonarr/apiKey"; } ]; } ); - prowlarr-sonarr-anime-shows.content = builtins.readFile ( - (pkgs.formats.json { }).generate "sonarr-anime-shows.json" { + prowlarr-sonarr-uhd.content = builtins.readFile ( + (pkgs.formats.json { }).generate "sonarr-uhd.json" { enable = true; - name = "Sonarr (Anime Shows)"; + name = "Sonarr (UHD)"; implementation = "Sonarr"; configContract = "SonarrSettings"; syncLevel = "fullSync"; @@ -170,30 +196,62 @@ in } { name = "baseUrl"; - value = "http://sonarr-anime-shows:8989"; + value = "http://sonarr-uhd:8989"; } { name = "apiKey"; - value = hmConfig.sops.placeholder."sonarr-anime-shows/apiKey"; + value = hmConfig.sops.placeholder."sonarr-uhd/apiKey"; } ]; } ); - radarr-films-env.content = '' - RADARR_API_KEY=${hmConfig.sops.placeholder."radarr-films/apiKey"} + prowlarr-sonarr-anime.content = builtins.readFile ( + (pkgs.formats.json { }).generate "sonarr-anime.json" { + enable = true; + name = "Sonarr (Anime)"; + implementation = "Sonarr"; + configContract = "SonarrSettings"; + syncLevel = "fullSync"; + fields = [ + { + name = "prowlarrUrl"; + value = "http://prowlarr:9696"; + } + { + name = "baseUrl"; + value = "http://sonarr-anime:8989"; + } + { + name = "apiKey"; + value = hmConfig.sops.placeholder."sonarr-anime/apiKey"; + } + ]; + } + ); + + radarr-env.content = '' + RADARR_API_KEY=${hmConfig.sops.placeholder."radarr/apiKey"} ''; - radarr-anime-films-env.content = '' - RADARR_API_KEY=${hmConfig.sops.placeholder."radarr-anime-films/apiKey"} + radarr-uhd-env.content = '' + RADARR_API_KEY=${hmConfig.sops.placeholder."radarr-uhd/apiKey"} ''; - sonarr-shows-env.content = '' - SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr-shows/apiKey"} + radarr-anime-env.content = '' + RADARR_API_KEY=${hmConfig.sops.placeholder."radarr-anime/apiKey"} ''; - sonarr-anime-shows-env.content = '' - SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr-anime-shows/apiKey"} + sonarr-env.content = '' + SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr/apiKey"} + ''; + + sonarr-uhd-env.content = '' + SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr-uhd/apiKey"} + ''; + + sonarr-anime-env.content = '' + SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr-anime/apiKey"} ''; }; }; @@ -213,10 +271,12 @@ in prowlarr = { }; - radarr-films = { }; - radarr-anime-films = { }; - sonarr-shows = { }; - sonarr-anime-shows = { }; + radarr = { }; + radarr-uhd = { }; + radarr-anime = { }; + sonarr = { }; + sonarr-uhd = { }; + sonarr-anime = { }; }; containers = { @@ -296,10 +356,12 @@ in "${setup}:/etc/prowlarr/setup.sh:ro" "${postStart}:/etc/prowlarr/post-start.sh:ro" "${./prowlarr/indexers}:/etc/prowlarr/indexers:ro" - "${hmConfig.sops.templates.prowlarr-radarr-films.path}:/etc/prowlarr/apps/radarr-films.json:ro" - "${hmConfig.sops.templates.prowlarr-radarr-anime-films.path}:/etc/prowlarr/apps/radarr-anime-films.json:ro" - "${hmConfig.sops.templates.prowlarr-sonarr-shows.path}:/etc/prowlarr/apps/sonarr-shows.json:ro" - "${hmConfig.sops.templates.prowlarr-sonarr-anime-shows.path}:/etc/prowlarr/apps/sonarr-anime-shows.json:ro" + "${hmConfig.sops.templates.prowlarr-radarr.path}:/etc/prowlarr/apps/radarr.json:ro" + "${hmConfig.sops.templates.prowlarr-radarr-uhd.path}:/etc/prowlarr/apps/radarr-uhd.json:ro" + "${hmConfig.sops.templates.prowlarr-radarr-anime.path}:/etc/prowlarr/apps/radarr-anime.json:ro" + "${hmConfig.sops.templates.prowlarr-sonarr.path}:/etc/prowlarr/apps/sonarr.json:ro" + "${hmConfig.sops.templates.prowlarr-sonarr-uhd.path}:/etc/prowlarr/apps/sonarr-uhd.json:ro" + "${hmConfig.sops.templates.prowlarr-sonarr-anime.path}:/etc/prowlarr/apps/sonarr-anime.json:ro" "${volumes.prowlarr.ref}:/var/lib/prowlarr" ]; environments.PROWLARR_URL_BASE = "/manage/indexers"; @@ -317,10 +379,12 @@ in "sops-nix.service" "${containers.transmission._serviceName}.service" "${containers.flaresolverr._serviceName}.service" - "${containers.radarr-films._serviceName}.service" - "${containers.radarr-anime-films._serviceName}.service" - "${containers.sonarr-shows._serviceName}.service" - "${containers.sonarr-anime-shows._serviceName}.service" + "${containers.radarr._serviceName}.service" + "${containers.radarr-uhd._serviceName}.service" + "${containers.radarr-anime._serviceName}.service" + "${containers.sonarr._serviceName}.service" + "${containers.sonarr-uhd._serviceName}.service" + "${containers.sonarr-anime._serviceName}.service" ]; in { @@ -329,7 +393,7 @@ in }; }; - radarr-films = { + radarr = { containerConfig = { image = "docker-archive:${selfPkgs.docker-radarr}"; networks = [ @@ -347,21 +411,21 @@ in in [ "${setup}:/etc/radarr/setup.sh:ro" - "${volumes.radarr-films.ref}:/var/lib/radarr" + "${volumes.radarr.ref}:/var/lib/radarr" "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" ]; environments = { - RADARR_INSTANCE_NAME = "Radarr (Films)"; + RADARR_INSTANCE_NAME = "Radarr"; RADARR_URL_BASE = "/manage/films"; RADARR_ROOT_FOLDER = "/var/lib/media/films"; - RADARR_DOWNLOAD_CATEGORY = "radarr-films"; + RADARR_DOWNLOAD_CATEGORY = "radarr"; }; - environmentFiles = [ hmConfig.sops.templates.radarr-films-env.path ]; + environmentFiles = [ hmConfig.sops.templates.radarr-env.path ]; labels = [ "traefik.enable=true" - "traefik.http.routers.radarr-films.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/films`)" - "traefik.http.routers.radarr-films.middlewares=authelia@docker" + "traefik.http.routers.radarr.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/films`)" + "traefik.http.routers.radarr.middlewares=authelia@docker" ]; }; @@ -378,7 +442,7 @@ in }; }; - radarr-anime-films = { + radarr-uhd = { containerConfig = { image = "docker-archive:${selfPkgs.docker-radarr}"; networks = [ @@ -396,21 +460,21 @@ in in [ "${setup}:/etc/radarr/setup.sh:ro" - "${volumes.radarr-anime-films.ref}:/var/lib/radarr" + "${volumes.radarr-uhd.ref}:/var/lib/radarr" "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" ]; environments = { - RADARR_INSTANCE_NAME = "Radarr (Anime Films)"; - RADARR_URL_BASE = "/manage/anime-films"; - RADARR_ROOT_FOLDER = "/var/lib/media/anime-films"; - RADARR_DOWNLOAD_CATEGORY = "radarr-anime-films"; + RADARR_INSTANCE_NAME = "Radarr (UHD)"; + RADARR_URL_BASE = "/manage/films/uhd"; + RADARR_ROOT_FOLDER = "/var/lib/media/films"; + RADARR_DOWNLOAD_CATEGORY = "radarr-uhd"; }; - environmentFiles = [ hmConfig.sops.templates.radarr-anime-films-env.path ]; + environmentFiles = [ hmConfig.sops.templates.radarr-uhd-env.path ]; labels = [ "traefik.enable=true" - "traefik.http.routers.radarr-anime-films.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/anime-films`)" - "traefik.http.routers.radarr-anime-films.middlewares=authelia@docker" + "traefik.http.routers.radarr-uhd.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/films/uhd`)" + "traefik.http.routers.radarr-uhd.middlewares=authelia@docker" ]; }; @@ -427,7 +491,56 @@ in }; }; - sonarr-shows = { + radarr-anime = { + containerConfig = { + image = "docker-archive:${selfPkgs.docker-radarr}"; + networks = [ + networks.media.ref + networks.transmission.ref + networks.traefik.ref + ]; + volumes = + let + setup = pkgs.writeTextFile { + name = "setup.sh"; + executable = true; + text = builtins.readFile ./radarr/setup.sh; + }; + in + [ + "${setup}:/etc/radarr/setup.sh:ro" + "${volumes.radarr-anime.ref}:/var/lib/radarr" + "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" + "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" + ]; + environments = { + RADARR_INSTANCE_NAME = "Radarr (Anime)"; + RADARR_URL_BASE = "/manage/anime/films"; + RADARR_ROOT_FOLDER = "/var/lib/media/anime/films"; + RADARR_DOWNLOAD_CATEGORY = "radarr-anime"; + }; + environmentFiles = [ hmConfig.sops.templates.radarr-anime-env.path ]; + labels = [ + "traefik.enable=true" + "traefik.http.routers.radarr-anime.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/anime/films`)" + "traefik.http.routers.radarr-anime.middlewares=authelia@docker" + ]; + }; + + unitConfig = + let + dependencies = [ + "${containers.transmission._serviceName}.service" + "sops-nix.service" + ]; + in + { + After = dependencies; + Requires = dependencies; + }; + }; + + sonarr = { containerConfig = { image = "docker-archive:${selfPkgs.docker-sonarr}"; networks = [ @@ -445,21 +558,21 @@ in in [ "${setup}:/etc/sonarr/setup.sh:ro" - "${volumes.sonarr-shows.ref}:/var/lib/sonarr" + "${volumes.sonarr.ref}:/var/lib/sonarr" "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" ]; environments = { - SONARR_INSTANCE_NAME = "Sonarr (Shows)"; + SONARR_INSTANCE_NAME = "Sonarr"; SONARR_URL_BASE = "/manage/shows"; SONARR_ROOT_FOLDER = "/var/lib/media/shows"; - SONARR_DOWNLOAD_CATEGORY = "sonarr-shows"; + SONARR_DOWNLOAD_CATEGORY = "sonarr"; }; - environmentFiles = [ hmConfig.sops.templates.sonarr-shows-env.path ]; + environmentFiles = [ hmConfig.sops.templates.sonarr-env.path ]; labels = [ "traefik.enable=true" - "traefik.http.routers.sonarr-shows.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/shows`)" - "traefik.http.routers.sonarr-shows.middlewares=authelia@docker" + "traefik.http.routers.sonarr.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/shows`)" + "traefik.http.routers.sonarr.middlewares=authelia@docker" ]; }; @@ -476,7 +589,7 @@ in }; }; - sonarr-anime-shows = { + sonarr-uhd = { containerConfig = { image = "docker-archive:${selfPkgs.docker-sonarr}"; networks = [ @@ -494,21 +607,70 @@ in in [ "${setup}:/etc/sonarr/setup.sh:ro" - "${volumes.sonarr-anime-shows.ref}:/var/lib/sonarr" + "${volumes.sonarr-uhd.ref}:/var/lib/sonarr" "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" ]; environments = { - SONARR_INSTANCE_NAME = "Sonarr (Anime Shows)"; - SONARR_URL_BASE = "/manage/anime-shows"; - SONARR_ROOT_FOLDER = "/var/lib/media/anime-shows"; - SONARR_DOWNLOAD_CATEGORY = "sonarr-anime-shows"; + SONARR_INSTANCE_NAME = "Sonarr (UHD)"; + SONARR_URL_BASE = "/manage/shows/uhd"; + SONARR_ROOT_FOLDER = "/var/lib/media/shows"; + SONARR_DOWNLOAD_CATEGORY = "sonarr-uhd"; }; - environmentFiles = [ hmConfig.sops.templates.sonarr-anime-shows-env.path ]; + environmentFiles = [ hmConfig.sops.templates.sonarr-uhd-env.path ]; labels = [ "traefik.enable=true" - "traefik.http.routers.sonarr-anime-shows.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/anime-shows`)" - "traefik.http.routers.sonarr-anime-shows.middlewares=authelia@docker" + "traefik.http.routers.sonarr-uhd.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/shows/uhd`)" + "traefik.http.routers.sonarr-uhd.middlewares=authelia@docker" + ]; + }; + + unitConfig = + let + dependencies = [ + "${containers.transmission._serviceName}.service" + "sops-nix.service" + ]; + in + { + After = dependencies; + Requires = dependencies; + }; + }; + + sonarr-anime = { + containerConfig = { + image = "docker-archive:${selfPkgs.docker-sonarr}"; + networks = [ + networks.media.ref + networks.transmission.ref + networks.traefik.ref + ]; + volumes = + let + setup = pkgs.writeTextFile { + name = "setup.sh"; + executable = true; + text = builtins.readFile ./sonarr/setup.sh; + }; + in + [ + "${setup}:/etc/sonarr/setup.sh:ro" + "${volumes.sonarr-anime.ref}:/var/lib/sonarr" + "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" + "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" + ]; + environments = { + SONARR_INSTANCE_NAME = "Sonarr (Anime)"; + SONARR_URL_BASE = "/manage/anime/shows"; + SONARR_ROOT_FOLDER = "/var/lib/media/anime/shows"; + SONARR_DOWNLOAD_CATEGORY = "sonarr-anime"; + }; + environmentFiles = [ hmConfig.sops.templates.sonarr-anime-env.path ]; + labels = [ + "traefik.enable=true" + "traefik.http.routers.sonarr-anime.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/anime/shows`)" + "traefik.http.routers.sonarr-anime.middlewares=authelia@docker" ]; }; diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/libraries/movies/Anime Films.json b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/libraries/movies/Anime Films.json index 6202525..284e74c 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/libraries/movies/Anime Films.json +++ b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/libraries/movies/Anime Films.json @@ -121,7 +121,7 @@ "LyricFetcherOrder": [], "PathInfos": [ { - "Path": "/var/lib/media/anime-films" + "Path": "/var/lib/media/anime/films" } ] } diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/libraries/tvshows/Anime Shows.json b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/libraries/tvshows/Anime Shows.json index f5d3b03..7c34caa 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/libraries/tvshows/Anime Shows.json +++ b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/libraries/tvshows/Anime Shows.json @@ -197,7 +197,7 @@ "LyricFetcherOrder": [], "PathInfos": [ { - "Path": "/var/lib/media/anime-shows" + "Path": "/var/lib/media/anime/shows" } ] }