linuxPackages_latest.broadcom_sta: add patch to compile on Kernel 6.12 (#359484)
[NixPkgs.git] / nixos / modules / services / misc / sonarr.nix
blobb147bf9e69f498daeb731f23d5944dabc48244d5
1 { config, pkgs, lib, utils, ... }:
2 let
3   cfg = config.services.sonarr;
4 in
6   options = {
7     services.sonarr = {
8       enable = lib.mkEnableOption "Sonarr";
10       dataDir = lib.mkOption {
11         type = lib.types.str;
12         default = "/var/lib/sonarr/.config/NzbDrone";
13         description = "The directory where Sonarr stores its data files.";
14       };
16       openFirewall = lib.mkOption {
17         type = lib.types.bool;
18         default = false;
19         description = ''
20           Open ports in the firewall for the Sonarr web interface
21         '';
22       };
24       user = lib.mkOption {
25         type = lib.types.str;
26         default = "sonarr";
27         description = "User account under which Sonaar runs.";
28       };
30       group = lib.mkOption {
31         type = lib.types.str;
32         default = "sonarr";
33         description = "Group under which Sonaar runs.";
34       };
36       package = lib.mkPackageOption pkgs "sonarr" { };
37     };
38   };
40   config = lib.mkIf cfg.enable {
41     systemd.tmpfiles.rules = [
42       "d '${cfg.dataDir}' 0700 ${cfg.user} ${cfg.group} - -"
43     ];
45     systemd.services.sonarr = {
46       description = "Sonarr";
47       after = [ "network.target" ];
48       wantedBy = [ "multi-user.target" ];
50       serviceConfig = {
51         Type = "simple";
52         User = cfg.user;
53         Group = cfg.group;
54         ExecStart = utils.escapeSystemdExecArgs [
55           (lib.getExe cfg.package)
56           "-nobrowser"
57           "-data=${cfg.dataDir}"
58         ];
59         Restart = "on-failure";
60       };
61     };
63     networking.firewall = lib.mkIf cfg.openFirewall {
64       allowedTCPPorts = [ 8989 ];
65     };
67     users.users = lib.mkIf (cfg.user == "sonarr") {
68       sonarr = {
69         group = cfg.group;
70         home = cfg.dataDir;
71         uid = config.ids.uids.sonarr;
72       };
73     };
75     users.groups = lib.mkIf (cfg.group == "sonarr") {
76       sonarr.gid = config.ids.gids.sonarr;
77     };
78   };