{ pkgs, lib, nglib, config, ... }: let cfg = config.services.nzbget; cfgInit = config.init.services.nzbget; stateDir = "/home/nzbget"; configFile = "${stateDir}/nzbget.conf"; in { options.services.nzbget = { enable = lib.mkEnableOption "nzbget"; package = lib.mkPackageOption pkgs "nzbget" {}; }; config = lib.mkIf cfg.enable { init.services.nzbget = { enabled = true; user = lib.mkDefault "nzbget"; group = lib.mkDefault "nzbget"; execStartPre = pkgs.writeShellScript "nzbget-pre.sh" '' if [ ! -f ${configFile} ]; then ${pkgs.coreutils}/bin/install -m 0700 ${cfg.package}/share/nzbget/nzbget.conf ${configFile} fi ''; script = pkgs.writeShellScript "nzbget-run.sh" '' umask 0002 ${lib.getExe cfg.package} --server --configfile ${configFile} ''; }; environment.systemPackages = with pkgs; [cfg.package unrar p7zip]; users.users.${cfgInit.user} = lib.mkIf (cfgInit.user == "nzbget") (nglib.mkDefaultRec { description = "nzbget"; inherit (cfgInit) group; createHome = true; home = "/home/nzbget"; useDefaultShell = true; uid = config.ids.uids.nzbget; }); users.groups.${cfgInit.group} = lib.mkIf (cfgInit.group == "nzbget") (nglib.mkDefaultRec {gid = config.ids.gids.nzbget;}); }; }