This commit is contained in:
2025-07-22 17:47:50 +02:00
parent c2e41bf4b3
commit 9ee68fe27d
7 changed files with 115 additions and 2 deletions

View File

@@ -32,6 +32,8 @@
192.168.88.14 sobotka 192.168.88.14 sobotka
192.168.88.14 cnst.dev 192.168.88.14 cnst.dev
192.168.88.14 lidarr.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 prowlarr.cnst.dev
192.168.88.14 qbt.cnst.dev 192.168.88.14 qbt.cnst.dev
''; '';

View File

@@ -30,6 +30,12 @@
radarr = { radarr = {
enable = true; enable = true;
}; };
jellyseerr = {
enable = true;
};
jellyfin = {
enable = true;
};
vaultwarden = { vaultwarden = {
enable = true; enable = true;
url = "vault.cnst.dev"; url = "vault.cnst.dev";

View File

@@ -129,6 +129,8 @@
./server/lidarr ./server/lidarr
./server/radarr ./server/radarr
./server/sonarr ./server/sonarr
./server/jellyseerr
./server/jellyfin
./server/qbittorrent ./server/qbittorrent
]; ];
}; };

View File

@@ -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
'';
};
};
}

View File

@@ -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}
'';
};
};
}

View File

@@ -25,7 +25,7 @@ in {
}; };
homepage.description = lib.mkOption { homepage.description = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "Music collection manager"; default = "Film collection manager";
}; };
homepage.icon = lib.mkOption { homepage.icon = lib.mkOption {
type = lib.types.str; type = lib.types.str;

View File

@@ -25,7 +25,7 @@ in {
}; };
homepage.description = lib.mkOption { homepage.description = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "Music collection manager"; default = "Series collection manager";
}; };
homepage.icon = lib.mkOption { homepage.icon = lib.mkOption {
type = lib.types.str; type = lib.types.str;