1{ config, pkgs, lib, ... }:
2
3with lib;
4
5let
6 cfg = config.services.prowlarr;
7
8in
9{
10 options = {
11 services.prowlarr = {
12 enable = mkEnableOption "Prowlarr, an indexer manager/proxy for Torrent trackers and Usenet indexers";
13
14 package = mkPackageOption pkgs "prowlarr" { };
15
16 openFirewall = mkOption {
17 type = types.bool;
18 default = false;
19 description = "Open ports in the firewall for the Prowlarr web interface.";
20 };
21 };
22 };
23
24 config = mkIf cfg.enable {
25 systemd.services.prowlarr = {
26 description = "Prowlarr";
27 after = [ "network.target" ];
28 wantedBy = [ "multi-user.target" ];
29
30 serviceConfig = {
31 Type = "simple";
32 DynamicUser = true;
33 StateDirectory = "prowlarr";
34 ExecStart = "${lib.getExe cfg.package} -nobrowser -data=/var/lib/prowlarr";
35 Restart = "on-failure";
36 };
37 };
38
39 networking.firewall = mkIf cfg.openFirewall {
40 allowedTCPPorts = [ 9696 ];
41 };
42 };
43}