From e56b1b461e606cf11f8430a2ac9a5862f6055756 Mon Sep 17 00:00:00 2001 From: cnst Date: Sun, 20 Jul 2025 09:55:26 +0200 Subject: [PATCH] server modules --- hosts/sobotka/server.nix | 6 ++++ modules/default.nix | 2 ++ modules/server/lidarr/default.nix | 52 +++++++++++++++++++++++++++++ modules/server/prowlarr/default.nix | 50 +++++++++++++++++++++++++++ 4 files changed, 110 insertions(+) create mode 100644 modules/server/lidarr/default.nix create mode 100644 modules/server/prowlarr/default.nix diff --git a/hosts/sobotka/server.nix b/hosts/sobotka/server.nix index 967d85f0..6db4f057 100644 --- a/hosts/sobotka/server.nix +++ b/hosts/sobotka/server.nix @@ -13,6 +13,12 @@ homepage = { enable = true; }; + prowlarr = { + enable = true; + }; + lidarr = { + enable = true; + }; vaultwarden = { enable = true; url = "vault.cnst.dev"; diff --git a/modules/default.nix b/modules/default.nix index f3e10667..fa9b6cd0 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -124,6 +124,8 @@ ./server/fail2ban ./server/homepage ./server/vaultwarden + ./server/prowlarr + ./server/lidarr ]; }; settings = { diff --git a/modules/server/lidarr/default.nix b/modules/server/lidarr/default.nix new file mode 100644 index 00000000..25faedbf --- /dev/null +++ b/modules/server/lidarr/default.nix @@ -0,0 +1,52 @@ +{ + config, + lib, + ... +}: let + unit = "lidarr"; + srv = config.server; + cfg = config.server.${unit}; +in { + options.server.${unit} = { + enable = lib.mkEnableOption { + description = "Enable ${unit}"; + }; + configDir = lib.mkOption { + type = lib.types.str; + default = "/var/lib/${unit}"; + }; + url = lib.mkOption { + type = lib.types.str; + default = "${unit}.${srv.domain}"; + }; + homepage.name = lib.mkOption { + type = lib.types.str; + default = "Lidarr"; + }; + homepage.description = lib.mkOption { + type = lib.types.str; + default = "Music collection manager"; + }; + homepage.icon = lib.mkOption { + type = lib.types.str; + default = "lidarr.svg"; + }; + homepage.category = lib.mkOption { + type = lib.types.str; + default = "Arr"; + }; + }; + config = lib.mkIf cfg.enable { + services.${unit} = { + enable = true; + user = srv.user; + group = srv.group; + }; + services.caddy.virtualHosts."${cfg.url}" = { + useACMEHost = srv.domain; + extraConfig = '' + reverse_proxy http://127.0.0.1:8686 + ''; + }; + }; +} diff --git a/modules/server/prowlarr/default.nix b/modules/server/prowlarr/default.nix new file mode 100644 index 00000000..c4d34216 --- /dev/null +++ b/modules/server/prowlarr/default.nix @@ -0,0 +1,50 @@ +{ + config, + lib, + ... +}: let + unit = "prowlarr"; + srv = config.server; + cfg = config.server.${unit}; +in { + options.server.${unit} = { + enable = lib.mkEnableOption { + description = "Enable ${unit}"; + }; + configDir = lib.mkOption { + type = lib.types.str; + default = "/var/lib/${unit}"; + }; + url = lib.mkOption { + type = lib.types.str; + default = "${unit}.${srv.domain}"; + }; + homepage.name = lib.mkOption { + type = lib.types.str; + default = "Prowlarr"; + }; + homepage.description = lib.mkOption { + type = lib.types.str; + default = "PVR indexer"; + }; + homepage.icon = lib.mkOption { + type = lib.types.str; + default = "prowlarr.svg"; + }; + homepage.category = lib.mkOption { + type = lib.types.str; + default = "Arr"; + }; + }; + config = lib.mkIf cfg.enable { + services.${unit} = { + enable = true; + }; + services.caddy.virtualHosts."${cfg.url}" = { + useACMEHost = srv.domain; + extraConfig = '' + reverse_proxy http://127.0.0.1:9696 + ''; + }; + }; +}