{ pkgs, scripts, ... }:
{
  services.hypridle = {
    enable = true;

    settings = {
      general = {
          lock_cmd = "${scripts.lock}";
          before_sleep_cmd = "${pkgs.systemd}/bin/loginctl lock-session";               # lock before suspend.
          after_sleep_cmd = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on";             # to avoid having to press a key twice to turn on the display.
          inhibit_sleep = 3;                                      # wait until screen is locked
      };

      listener = [
        {
            timeout = 60 * 5;                      # 5min
            on-timeout = "${pkgs.systemd}/bin/loginctl lock-session"; # lock screen when timeout has passed
        }
        {
            timeout = 60 * 5.5;                                            # 5.5min
            on-timeout = "${pkgs.hyprland}/bin/hyprctl dispatch dpms off";                   # screen off when timeout has passed
            on-resume = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on && brightnessctl -r"; # screen on when activity is detected
        }
      ];
    };
  };
}
