let
  # Time in seconds
  lockAfter = 1200;
  screenOffAfter = 1500;
  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
        {
          timeout = screenOffAfter;
          on-timeout = "hyprctl dispatch dpms off";
          on-resume = "hyprctl dispatch dpms on";
        }
        # Suspend
        {
          timeout = suspendAfter;
          on-timeout = "systemctl suspend"; # suspend pc
        }
      ];
    };
  };
  wayland.windowManager.hyprland.settings.exec-once = [ "hypridle" ];
}
