let
  # Time in seconds
  lockAfter = 1200;
  suspendAfter = 7200;
in
{
  services.hypridle = {
    enable = true;
    settings = {
      general = {
        before_sleep_cmd = "loginctl lock-session";
        after_sleep_cmd = "hyprctl dispatch dpms on";
        lock_cmd = "pidof hyprlock || hyprlock"; # Avoid running multiple instances of hyprlock
      };

      listener = [
        # Lock
        {
          timeout = lockAfter;
          on-timeout = "loginctl lock-session";
        }
        # Turn off screens TODO buggy main monitor, turns off and on after resume
        #        {
        #          timeout = 120;
        #          on-timeout = "hyprctl dispatch dpms off";
        #          on-resume = "hyprctl dispatch dpms on";
        #        }
        # Suspend
        {
          timeout = suspendAfter;
          on-timeout = "systemctl suspend"; # suspend pc
        }
      ];
    };
  };
}
