at 25.11-pre 2.2 kB view raw
1{ 2 config, 3 pkgs, 4 lib, 5 ... 6}: 7let 8 cfg = config.services.radarr; 9 servarr = import ./settings-options.nix { inherit lib pkgs; }; 10in 11{ 12 options = { 13 services.radarr = { 14 enable = lib.mkEnableOption "Radarr, a UsetNet/BitTorrent movie downloader"; 15 16 package = lib.mkPackageOption pkgs "radarr" { }; 17 18 dataDir = lib.mkOption { 19 type = lib.types.str; 20 default = "/var/lib/radarr/.config/Radarr"; 21 description = "The directory where Radarr stores its data files."; 22 }; 23 24 openFirewall = lib.mkOption { 25 type = lib.types.bool; 26 default = false; 27 description = "Open ports in the firewall for the Radarr web interface."; 28 }; 29 30 settings = servarr.mkServarrSettingsOptions "radarr" 7878; 31 32 environmentFiles = servarr.mkServarrEnvironmentFiles "radarr"; 33 34 user = lib.mkOption { 35 type = lib.types.str; 36 default = "radarr"; 37 description = "User account under which Radarr runs."; 38 }; 39 40 group = lib.mkOption { 41 type = lib.types.str; 42 default = "radarr"; 43 description = "Group under which Radarr runs."; 44 }; 45 }; 46 }; 47 48 config = lib.mkIf cfg.enable { 49 systemd.tmpfiles.settings."10-radarr".${cfg.dataDir}.d = { 50 inherit (cfg) user group; 51 mode = "0700"; 52 }; 53 54 systemd.services.radarr = { 55 description = "Radarr"; 56 after = [ "network.target" ]; 57 wantedBy = [ "multi-user.target" ]; 58 environment = servarr.mkServarrSettingsEnvVars "RADARR" cfg.settings; 59 60 serviceConfig = { 61 Type = "simple"; 62 User = cfg.user; 63 Group = cfg.group; 64 EnvironmentFile = cfg.environmentFiles; 65 ExecStart = "${cfg.package}/bin/Radarr -nobrowser -data='${cfg.dataDir}'"; 66 Restart = "on-failure"; 67 }; 68 }; 69 70 networking.firewall = lib.mkIf cfg.openFirewall { 71 allowedTCPPorts = [ cfg.settings.server.port ]; 72 }; 73 74 users.users = lib.mkIf (cfg.user == "radarr") { 75 radarr = { 76 group = cfg.group; 77 home = cfg.dataDir; 78 uid = config.ids.uids.radarr; 79 }; 80 }; 81 82 users.groups = lib.mkIf (cfg.group == "radarr") { 83 radarr.gid = config.ids.gids.radarr; 84 }; 85 }; 86}