{ pkgs, lib, ... }: with lib; let program = "${pkgs.xidlehook}/bin/xidlehook"; lockCmd = escapeShellArg '' ${pkgs.i3lock-color}/bin/i3lock-color -B 10 --greeter-text="Welcome back $USER" --greeter-color="#ffffff" --date-color="#ffffff" --time-color="#ffffff" ''; script = concatStringsSep " " [ ''${program}'' ''--not-when-fullscreen'' ''--not-when-audio'' ''--timer 300 ${lockCmd} ""'' ]; in { systemd.user.services.xidlehook = { Unit = { Description = "xidlehook service"; PartOf = [ "graphical-session.target" ]; After = [ "graphical-session.target" ]; ConditionEnvironment = [ "DISPLAY" ]; }; Service = { Type = "simple"; ExecStart = "${script}"; }; Install.WantedBy = [ "graphical-session.target" ]; }; }