{ lib, config, pkgs, inputs, system, ... }: with lib; let cfg = config.modules.desktop.hyprlock; in { options.modules.desktop.hyprlock = { enable = mkEnableOption "Enable hyprlock, a simple, fast, multithreaded screen lock for wayland compositors"; package = mkOption { type = types.package; default = inputs.hyprlock.packages.${system}.hyprlock; example = "pkgs.hyprlock"; }; }; config = mkIf cfg.enable { security.pam.services.hyprlock.text = "auth include login"; hm.home.packages = with pkgs; [ cfg.package wlinhibit ]; hm.programs.hyprlock = { enable = true; package = cfg.package; settings = let inherit (config.modules.desktop.themes) rounding; in with config.scheme; { general = { hide_cursor = false; text_trim = true; immediate_render = true; }; background = [ { path = "${config.modules.desktop.awww.lastWallpaperSym}"; color = "rgb(${base00})"; blur_passes = 3; blur_size = 6; } ]; shape = [ { size = "280, 280"; color = "rgb(${base00})"; rounding = rounding; position = "0, 45"; halign = "center"; valign = "center"; shadow_passes = 3; shadow_size = 8; } ]; label = [ { position = "0, 105"; text = "cmd[update:1000] echo \"$(date +'%H')\""; font_size = 78; color = "rgb(${base05})"; font_family = config.modules.desktop.fonts.fonts.sansSerif.family; halign = "center"; valign = "center"; } { position = "0, 20"; text = "cmd[update:1000] echo \"$(date +'%M')\""; font_size = 78; color = "rgb(${base05})"; font_family = config.modules.desktop.fonts.fonts.sansSerif.family; halign = "center"; valign = "center"; } { position = "0, -45"; text = "cmd[update:1000] echo \"$(date +'%A, %d %B')\""; font_size = 14; color = "rgb(${base05})"; font_family = config.modules.desktop.fonts.fonts.sansSerif.family; halign = "center"; valign = "center"; } ] ++ optionals config.modules.core.laptop [ { position = "-15, -11"; halign = "right"; valign = "top"; color = "rgb(${base05})"; font_size = 14; font_family = "Font Awesome 6 Free"; text = "cmd[update:4000] echo \"$(${lib.getExe pkgs.acpi} | grep -q \"Battery\" && echo \"\")\""; shadow_passes = 3; shadow_size = 8; } { position = "-41, -10"; halign = "right"; valign = "top"; color = "rgb(${base05})"; font_size = 14; font_family = config.modules.desktop.fonts.fonts.sansSerif.family; text = "cmd[update:4000] echo \"$(${lib.getExe pkgs.acpi} -b | grep -oP \"\\d+%\" | head -n 1)\""; shadow_passes = 3; shadow_size = 8; } ]; input-field = [ { position = "0, -140"; size = "280, 48"; rounding = rounding; outline_thickness = 1; dots_size = 0.3; fade_on_empty = false; placeholder_text = ""; outer_color = "rgb(${base00})"; inner_color = "rgb(${base00})"; font_color = "rgb(${base05})"; check_color = "rgb(${base02})"; fail_color = "rgb(${base08})"; capslock_color = "rgb(${base09})"; } ]; }; }; }; }