{ pkgs, config, lib, ... }: with lib; { options.components.gui.suspend.enable = mkOption { type = lib.types.bool; default = config.components.gui.enable; }; config = mkIf (config.components.gui.suspend.enable) { systemd.services.screenlock = { before = [ "sleep.target" ]; requiredBy = [ "sleep.target" ]; environment = let display = if (config.services.xserver.display != null) then config.services.xserver.display else 0; in { DISPLAY = ":${toString display}"; }; script = '' ${pkgs.xlockmore}/bin/xlock -mode life1d -size 1 & sleep 1 ''; serviceConfig = { SyslogIdentifier = "screenlock"; #Type = "simple"; Type = "forking"; User = config.users.users.mainUser.name; }; }; services.logind.lidSwitch = "suspend"; }; }