{ config, lib, ... }: let rgb = color: "rgb(${color})"; lock_cmd = "${config.programs.hyprlock.package}/bin/hyprlock"; color = { inherit (config.lib.stylix.colors) yellow red; bg = config.lib.stylix.colors.base00; fg = config.lib.stylix.colors.base07; text = config.lib.stylix.colors.base05; }; in { services.hypridle = { enable = true; settings = { general = { before_sleep_cmd = "rbw lock; hyprlock"; after_sleep_cmd = "hyprctl dispatch dpms on"; ignore_dbus_inhibit = false; lock_cmd = "pidof ${lock_cmd} || ${lock_cmd}"; }; listener = [ { timeout = 300; on-timeout = "loginctl lock-session"; } { timeout = 1200; on-timeout = "hyprctl dispatch dpms off"; on-resume = "hyprctl dispatch dpms on"; } ]; }; }; programs.hyprlock = { enable = true; settings = lib.mkForce { # https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/ general = { hide_cursor = true; grace = 10; ignore_empty_input = true; }; background = [ { path = "screenshot"; blur_passes = 3; blur_size = 8; } ]; input-field = [ { dots_center = true; fade_on_empty = true; outline_thickness = 5; shadow_passes = 2; inner_color = rgb color.bg; outer_color = rgb color.fg; font_color = rgb color.text; fail_color = rgb color.red; check_color = rgb color.yellow; } ]; }; }; }