at 25.11-pre 1.4 kB view raw
1{ 2 config, 3 pkgs, 4 lib, 5 ... 6}: 7let 8 cfg = config.services.prowlarr; 9 servarr = import ./settings-options.nix { inherit lib pkgs; }; 10in 11{ 12 options = { 13 services.prowlarr = { 14 enable = lib.mkEnableOption "Prowlarr, an indexer manager/proxy for Torrent trackers and Usenet indexers"; 15 16 package = lib.mkPackageOption pkgs "prowlarr" { }; 17 18 openFirewall = lib.mkOption { 19 type = lib.types.bool; 20 default = false; 21 description = "Open ports in the firewall for the Prowlarr web interface."; 22 }; 23 24 settings = servarr.mkServarrSettingsOptions "prowlarr" 9696; 25 26 environmentFiles = servarr.mkServarrEnvironmentFiles "prowlarr"; 27 }; 28 }; 29 30 config = lib.mkIf cfg.enable { 31 systemd.services.prowlarr = { 32 description = "Prowlarr"; 33 after = [ "network.target" ]; 34 wantedBy = [ "multi-user.target" ]; 35 environment = servarr.mkServarrSettingsEnvVars "PROWLARR" cfg.settings // { 36 HOME = "/var/empty"; 37 }; 38 39 serviceConfig = { 40 Type = "simple"; 41 DynamicUser = true; 42 StateDirectory = "prowlarr"; 43 EnvironmentFile = cfg.environmentFiles; 44 ExecStart = "${lib.getExe cfg.package} -nobrowser -data=/var/lib/prowlarr"; 45 Restart = "on-failure"; 46 }; 47 }; 48 49 networking.firewall = lib.mkIf cfg.openFirewall { 50 allowedTCPPorts = [ cfg.settings.server.port ]; 51 }; 52 }; 53}