From 9ee68fe27de85d04f4da5a2c0044820c5f4c99bf Mon Sep 17 00:00:00 2001 From: cnst Date: Tue, 22 Jul 2025 17:47:50 +0200 Subject: [PATCH] jelly --- hosts/kima/modules.nix | 2 ++ hosts/sobotka/server.nix | 6 ++++ modules/default.nix | 2 ++ modules/server/jellyfin/default.nix | 52 +++++++++++++++++++++++++++ modules/server/jellyseerr/default.nix | 51 ++++++++++++++++++++++++++ modules/server/radarr/default.nix | 2 +- modules/server/sonarr/default.nix | 2 +- 7 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 modules/server/jellyfin/default.nix create mode 100644 modules/server/jellyseerr/default.nix diff --git a/hosts/kima/modules.nix b/hosts/kima/modules.nix index ca5ef062..2960a3c0 100644 --- a/hosts/kima/modules.nix +++ b/hosts/kima/modules.nix @@ -32,6 +32,8 @@ 192.168.88.14 sobotka 192.168.88.14 cnst.dev 192.168.88.14 lidarr.cnst.dev + 192.168.88.14 radarr.cnst.dev + 192.168.88.14 sonarr.cnst.dev 192.168.88.14 prowlarr.cnst.dev 192.168.88.14 qbt.cnst.dev ''; diff --git a/hosts/sobotka/server.nix b/hosts/sobotka/server.nix index baeeb0d2..c2371046 100644 --- a/hosts/sobotka/server.nix +++ b/hosts/sobotka/server.nix @@ -30,6 +30,12 @@ radarr = { enable = true; }; + jellyseerr = { + enable = true; + }; + jellyfin = { + enable = true; + }; vaultwarden = { enable = true; url = "vault.cnst.dev"; diff --git a/modules/default.nix b/modules/default.nix index 32f36e6f..3a0955b6 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -129,6 +129,8 @@ ./server/lidarr ./server/radarr ./server/sonarr + ./server/jellyseerr + ./server/jellyfin ./server/qbittorrent ]; }; diff --git a/modules/server/jellyfin/default.nix b/modules/server/jellyfin/default.nix new file mode 100644 index 00000000..34459777 --- /dev/null +++ b/modules/server/jellyfin/default.nix @@ -0,0 +1,52 @@ +{ + config, + lib, + ... +}: let + service = "jellyfin"; + cfg = config.server.${service}; + srv = config.server; +in { + options.server.${service} = { + enable = lib.mkEnableOption { + description = "Enable ${service}"; + }; + configDir = lib.mkOption { + type = lib.types.str; + default = "/var/lib/${service}"; + }; + url = lib.mkOption { + type = lib.types.str; + default = "jellyfin.${srv.domain}"; + }; + homepage.name = lib.mkOption { + type = lib.types.str; + default = "Jellyfin"; + }; + homepage.description = lib.mkOption { + type = lib.types.str; + default = "The Free Software Media System"; + }; + homepage.icon = lib.mkOption { + type = lib.types.str; + default = "jellyfin.svg"; + }; + homepage.category = lib.mkOption { + type = lib.types.str; + default = "Media"; + }; + }; + config = lib.mkIf cfg.enable { + services.${service} = { + enable = true; + user = srv.user; + group = srv.group; + }; + services.caddy.virtualHosts."${cfg.url}" = { + useACMEHost = srv.domain; + extraConfig = '' + reverse_proxy http://127.0.0.1:8096 + ''; + }; + }; +} diff --git a/modules/server/jellyseerr/default.nix b/modules/server/jellyseerr/default.nix new file mode 100644 index 00000000..46fbf56b --- /dev/null +++ b/modules/server/jellyseerr/default.nix @@ -0,0 +1,51 @@ +{ + config, + lib, + ... +}: let + service = "jellyseerr"; + srv = config.server; + cfg = config.server.${service}; +in { + options.server.${service} = { + enable = lib.mkEnableOption { + description = "Enable ${service}"; + }; + url = lib.mkOption { + type = lib.types.str; + default = "${service}.${srv.domain}"; + }; + port = lib.mkOption { + type = lib.types.port; + default = 5055; + }; + homepage.name = lib.mkOption { + type = lib.types.str; + default = "Jellyseerr"; + }; + homepage.description = lib.mkOption { + type = lib.types.str; + default = "Media request and discovery manager"; + }; + homepage.icon = lib.mkOption { + type = lib.types.str; + default = "jellyseerr.svg"; + }; + homepage.category = lib.mkOption { + type = lib.types.str; + default = "Arr"; + }; + }; + config = lib.mkIf cfg.enable { + services.${service} = { + enable = true; + port = cfg.port; + }; + services.caddy.virtualHosts."${cfg.url}" = { + useACMEHost = srv.domain; + extraConfig = '' + reverse_proxy http://127.0.0.1:${toString cfg.port} + ''; + }; + }; +} diff --git a/modules/server/radarr/default.nix b/modules/server/radarr/default.nix index fb238e00..56cde7cd 100644 --- a/modules/server/radarr/default.nix +++ b/modules/server/radarr/default.nix @@ -25,7 +25,7 @@ in { }; homepage.description = lib.mkOption { type = lib.types.str; - default = "Music collection manager"; + default = "Film collection manager"; }; homepage.icon = lib.mkOption { type = lib.types.str; diff --git a/modules/server/sonarr/default.nix b/modules/server/sonarr/default.nix index 6b621299..2efc9fdc 100644 --- a/modules/server/sonarr/default.nix +++ b/modules/server/sonarr/default.nix @@ -25,7 +25,7 @@ in { }; homepage.description = lib.mkOption { type = lib.types.str; - default = "Music collection manager"; + default = "Series collection manager"; }; homepage.icon = lib.mkOption { type = lib.types.str;