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