at 17.09-beta 2.5 kB view raw
1{ config, pkgs, lib, ... }: 2 3with lib; 4 5let 6 cfg = config.services.nzbget; 7 nzbget = pkgs.nzbget; 8in 9{ 10 options = { 11 services.nzbget = { 12 enable = mkEnableOption "NZBGet"; 13 14 package = mkOption { 15 type = types.package; 16 default = pkgs.nzbget; 17 defaultText = "pkgs.nzbget"; 18 description = "The NZBGet package to use"; 19 }; 20 21 user = mkOption { 22 type = types.str; 23 default = "nzbget"; 24 description = "User account under which NZBGet runs"; 25 }; 26 27 group = mkOption { 28 type = types.str; 29 default = "nzbget"; 30 description = "Group under which NZBGet runs"; 31 }; 32 }; 33 }; 34 35 config = mkIf cfg.enable { 36 systemd.services.nzbget = { 37 description = "NZBGet Daemon"; 38 after = [ "network.target" ]; 39 wantedBy = [ "multi-user.target" ]; 40 path = with pkgs; [ 41 unrar 42 p7zip 43 ]; 44 preStart = '' 45 test -d /var/lib/nzbget || { 46 echo "Creating nzbget state directoy in /var/lib/" 47 mkdir -p /var/lib/nzbget 48 } 49 test -f /var/lib/nzbget/nzbget.conf || { 50 echo "nzbget.conf not found. Copying default config to /var/lib/nzbget/nzbget.conf" 51 cp ${cfg.package}/share/nzbget/nzbget.conf /var/lib/nzbget/nzbget.conf 52 echo "Setting file mode of nzbget.conf to 0700 (needs to be written and contains plaintext credentials)" 53 chmod 0700 /var/lib/nzbget/nzbget.conf 54 echo "Setting temporary \$MAINDIR variable in default config required in order to allow nzbget to complete initial start" 55 echo "Remember to change this to a proper value once NZBGet startup has been completed" 56 sed -i -e 's/MainDir=.*/MainDir=\/tmp/g' /var/lib/nzbget/nzbget.conf 57 } 58 echo "Ensuring proper ownership of /var/lib/nzbget (${cfg.user}:${cfg.group})." 59 chown -R ${cfg.user}:${cfg.group} /var/lib/nzbget 60 ''; 61 62 serviceConfig = { 63 Type = "forking"; 64 User = cfg.user; 65 Group = cfg.group; 66 PermissionsStartOnly = "true"; 67 ExecStart = "${cfg.package}/bin/nzbget --daemon --configfile /var/lib/nzbget/nzbget.conf"; 68 Restart = "on-failure"; 69 }; 70 }; 71 72 users.extraUsers = mkIf (cfg.user == "nzbget") { 73 nzbget = { 74 group = cfg.group; 75 uid = config.ids.uids.nzbget; 76 }; 77 }; 78 79 users.extraGroups = mkIf (cfg.group == "nzbget") { 80 nzbget = { 81 gid = config.ids.gids.nzbget; 82 }; 83 }; 84 }; 85}