python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / misc / radarr.nix
blob834b092c0d14c39987a66c577bdbc409ad43a248
1 { config, pkgs, lib, ... }:
3 with lib;
5 let
6   cfg = config.services.radarr;
8 in
10   options = {
11     services.radarr = {
12       enable = mkEnableOption (lib.mdDoc "Radarr");
14       package = mkOption {
15         description = lib.mdDoc "Radarr package to use";
16         default = pkgs.radarr;
17         defaultText = literalExpression "pkgs.radarr";
18         example = literalExpression "pkgs.radarr";
19         type = types.package;
20       };
22       dataDir = mkOption {
23         type = types.str;
24         default = "/var/lib/radarr/.config/Radarr";
25         description = lib.mdDoc "The directory where Radarr stores its data files.";
26       };
28       openFirewall = mkOption {
29         type = types.bool;
30         default = false;
31         description = lib.mdDoc "Open ports in the firewall for the Radarr web interface.";
32       };
34       user = mkOption {
35         type = types.str;
36         default = "radarr";
37         description = lib.mdDoc "User account under which Radarr runs.";
38       };
40       group = mkOption {
41         type = types.str;
42         default = "radarr";
43         description = lib.mdDoc "Group under which Radarr runs.";
44       };
45     };
46   };
48   config = mkIf cfg.enable {
49     systemd.tmpfiles.rules = [
50       "d '${cfg.dataDir}' 0700 ${cfg.user} ${cfg.group} - -"
51     ];
53     systemd.services.radarr = {
54       description = "Radarr";
55       after = [ "network.target" ];
56       wantedBy = [ "multi-user.target" ];
58       serviceConfig = {
59         Type = "simple";
60         User = cfg.user;
61         Group = cfg.group;
62         ExecStart = "${cfg.package}/bin/Radarr -nobrowser -data='${cfg.dataDir}'";
63         Restart = "on-failure";
64       };
65     };
67     networking.firewall = mkIf cfg.openFirewall {
68       allowedTCPPorts = [ 7878 ];
69     };
71     users.users = mkIf (cfg.user == "radarr") {
72       radarr = {
73         group = cfg.group;
74         home = cfg.dataDir;
75         uid = config.ids.uids.radarr;
76       };
77     };
79     users.groups = mkIf (cfg.group == "radarr") {
80       radarr.gid = config.ids.gids.radarr;
81     };
82   };