{
  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";

  };
}