grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / misc / radarr.nix
blobd9f78c4e8ee64676090dc42c10d74d3c0e2161f5
1 { config, pkgs, lib, ... }:
3 with lib;
5 let
6   cfg = config.services.radarr;
8 in
10   options = {
11     services.radarr = {
12       enable = mkEnableOption "Radarr, a UsetNet/BitTorrent movie downloader";
14       package = mkPackageOption pkgs "radarr" { };
16       dataDir = mkOption {
17         type = types.str;
18         default = "/var/lib/radarr/.config/Radarr";
19         description = "The directory where Radarr stores its data files.";
20       };
22       openFirewall = mkOption {
23         type = types.bool;
24         default = false;
25         description = "Open ports in the firewall for the Radarr web interface.";
26       };
28       user = mkOption {
29         type = types.str;
30         default = "radarr";
31         description = "User account under which Radarr runs.";
32       };
34       group = mkOption {
35         type = types.str;
36         default = "radarr";
37         description = "Group under which Radarr runs.";
38       };
39     };
40   };
42   config = mkIf cfg.enable {
43     systemd.tmpfiles.settings."10-radarr".${cfg.dataDir}.d = {
44       inherit (cfg) user group;
45       mode = "0700";
46     };
48     systemd.services.radarr = {
49       description = "Radarr";
50       after = [ "network.target" ];
51       wantedBy = [ "multi-user.target" ];
53       serviceConfig = {
54         Type = "simple";
55         User = cfg.user;
56         Group = cfg.group;
57         ExecStart = "${cfg.package}/bin/Radarr -nobrowser -data='${cfg.dataDir}'";
58         Restart = "on-failure";
59       };
60     };
62     networking.firewall = mkIf cfg.openFirewall {
63       allowedTCPPorts = [ 7878 ];
64     };
66     users.users = mkIf (cfg.user == "radarr") {
67       radarr = {
68         group = cfg.group;
69         home = cfg.dataDir;
70         uid = config.ids.uids.radarr;
71       };
72     };
74     users.groups = mkIf (cfg.group == "radarr") {
75       radarr.gid = config.ids.gids.radarr;
76     };
77   };