at 23.11-pre 2.0 kB view raw
1{ config, pkgs, lib, ... }: 2 3with lib; 4 5let 6 cfg = config.services.radarr; 7 8in 9{ 10 options = { 11 services.radarr = { 12 enable = mkEnableOption (lib.mdDoc "Radarr"); 13 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 }; 21 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 }; 27 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 }; 33 34 user = mkOption { 35 type = types.str; 36 default = "radarr"; 37 description = lib.mdDoc "User account under which Radarr runs."; 38 }; 39 40 group = mkOption { 41 type = types.str; 42 default = "radarr"; 43 description = lib.mdDoc "Group under which Radarr runs."; 44 }; 45 }; 46 }; 47 48 config = mkIf cfg.enable { 49 systemd.tmpfiles.rules = [ 50 "d '${cfg.dataDir}' 0700 ${cfg.user} ${cfg.group} - -" 51 ]; 52 53 systemd.services.radarr = { 54 description = "Radarr"; 55 after = [ "network.target" ]; 56 wantedBy = [ "multi-user.target" ]; 57 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 }; 66 67 networking.firewall = mkIf cfg.openFirewall { 68 allowedTCPPorts = [ 7878 ]; 69 }; 70 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 }; 78 79 users.groups = mkIf (cfg.group == "radarr") { 80 radarr.gid = config.ids.gids.radarr; 81 }; 82 }; 83}