diff --git a/configs/nixos/modules/desktop/session/hyprland/hypridle.nix b/configs/nixos/modules/desktop/session/hyprland/hypridle.nix index aab4bc0..53370db 100644 --- a/configs/nixos/modules/desktop/session/hyprland/hypridle.nix +++ b/configs/nixos/modules/desktop/session/hyprland/hypridle.nix @@ -5,50 +5,32 @@ ... }: # hypridle: idle-triggered locking and display power management. -let - cfg = config.modules.desktop.session.hyprland.hypridle; # NOLINT(let_order) - - # The guard drops the call when a locker is already up, so no idle trigger - # stacks a second hyprlock over the first. - lockCmd = "${pkgs.procps}/bin/pidof hyprlock || ${hyprlock}"; - user = config.user.name; - - hyprctl = "${config.programs.hyprland.package}/bin/hyprctl"; - hyprlock = "${config.home-manager.users.${user}.programs.hyprlock.package}/bin/hyprlock"; - -in { - options.modules.desktop.session.hyprland.hypridle = { - enable = lib.mkEnableOption "hypridle idle management"; + options.modules.desktop.session.hyprland.hypridle.enable = + lib.mkEnableOption "hypridle idle management"; - lockTimeout = lib.mkOption { - type = lib.types.ints.positive; - default = 300; - description = "Seconds of inactivity before the screen locks."; - }; - - }; - - config = lib.mkIf cfg.enable { + config = lib.mkIf config.modules.desktop.session.hyprland.hypridle.enable { # Closing the lid suspends, and every suspend locks first through the # before_sleep_cmd below, so the lid always lands at a locked screen. services.logind.settings.Login.HandleLidSwitch = "suspend"; - home-manager.users.${user}.services.hypridle = { + home-manager.users.${config.user.name}.services.hypridle = { enable = true; settings = { general = { - lock_cmd = lockCmd; + # The guard drops the call when a locker is already up, so no idle + # trigger stacks a second hyprlock over the first. + lock_cmd = "${pkgs.procps}/bin/pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; before_sleep_cmd = "loginctl lock-session"; # Waking pokes the compositor in case firmware leaves displays dark. - after_sleep_cmd = "${hyprctl} dispatch dpms on"; + after_sleep_cmd = "${config.programs.hyprland.package}/bin/hyprctl dispatch 'hl.dsp.dpms({ action = \"enable\" })'"; }; listener = [ # Lock on idle. { - timeout = cfg.lockTimeout; + timeout = 300; on-timeout = "loginctl lock-session"; } ];