{ config, pkgs, lib, inputs, ... }:

let
  # inputs
  system = pkgs.stdenv.hostPlatform.system;
  hypridle = inputs.hypridle.packages.${system};
in
{
  config = lib.mkIf config.desktop.enable {

    home-manager.users.${config.user} = {
      services.hypridle = {

        enable = true;
        package = hypridle.hypridle;

        settings = {
          general = {
            lock_cmd = "pidof hyprlock || hyprlock";
            before_sleep_cmd = "loginctl lock-session";
            after_sleep_cmd = "hyprctl dispatch dpms on";
            ignore_dbus_inhibit = false;
          };

          listener = [
            # dim screen
            {
              timeout = 150;
              on-timeout = "brightnessctl -s set 10";
              on-resume = "brightnessctl -r";
            }
            # dim keyboard backlight
            {
              timeout = 150;
              on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0";
              on-resume = "brightnessctl -rd rgb:kbd_backlight";
            }
            # lock
            {
              timeout = 300;
              on-timeout = "loginctl lock-session";
            }
            # turn off screen
            {
              timeout = 350;
              on-timeout = "hyprctl dispatch dpms off";
              on-resume = "hyprctl dispatch dpms on";
            }
          ];
        };
      };
    };

  };
}