···
boot.extraModulePackages = [ (lib.mkIf cfg.netatop.enable cfg.netatop.package) ];
-
mkSystemd = type: cond: name: restartTriggers: {
-
${name} = lib.mkIf cond {
wantedBy = [ (if type == "services" then "multi-user.target" else if type == "timers" then "timers.target" else null) ];
···
packages = [ atop (lib.mkIf cfg.netatop.enable cfg.netatop.package) ];
-
mkService cfg.atopService.enable "atop" [ atop ]
-
// lib.mkIf cfg.atopService.enable {
-
# always convert logs to newer version first
-
# XXX might trigger TimeoutStart but restarting atop.service will
-
# convert remainings logs and start eventually
-
atop.serviceConfig.ExecStartPre = pkgs.writeShellScript "atop-update-log-format" ''
-
for logfile in "$LOGPATH"/atop_*
-
${atop}/bin/atopconvert "$logfile" "$logfile".new
-
# only replace old file if version was upgraded to avoid
-
# false positives for atop-rotate.service
-
if ! ${pkgs.diffutils}/bin/cmp -s "$logfile" "$logfile".new
-
${pkgs.coreutils}/bin/mv -v -f "$logfile".new "$logfile"
-
${pkgs.coreutils}/bin/rm -f "$logfile".new
-
// mkService cfg.atopacctService.enable "atopacct" [ atop ]
-
// mkService cfg.netatop.enable "netatop" [ cfg.netatop.package ]
-
// mkService cfg.atopgpu.enable "atopgpu" [ atop ];
-
timers = mkTimer cfg.atopRotateTimer.enable "atop-rotate" [ atop ];
security.wrappers = lib.mkIf cfg.setuidWrapper.enable {
-
source = "${atop}/bin/atop";