{
lib,
lib',
inputs,
pkgs,
config,
...
}: let
inherit (lib) mkIf;
inherit (lib'.generators) toHyprConf;
inherit (config.local.systemVars) username;
inherit (inputs.hyprlock.packages.${pkgs.system}) hyprlock;
styleCfg = config.local.style;
rgbaPalette = builtins.mapAttrs (_: c: (lib'.rgba c 1)) styleCfg.scheme.palette;
in {
config = mkIf config.local.modules.hyprland.enable {
hjem.users.${username} = {
packages = [hyprlock];
files = {
".config/hypr/hyprlock.conf".text = toHyprConf {
attrs =
{
general = {
disable_loading_bar = true;
hide_cursor = true;
};
}
// (with rgbaPalette;
lib.optionalAttrs styleCfg.enable {
background = [
{
path = "screenshot";
blur_passes = 3;
blur_size = 8;
}
];
label = [
{
monitor = "";
text = "Layout: $LAYOUT";
font_size = 25;
color = base05;
position = "30, -30";
halign = "left";
valign = "top";
}
{
monitor = "";
text = "$TIME";
font_size = 90;
color = base05;
position = "-30, 0";
halign = "right";
valign = "top";
}
{
monitor = "";
text = "cmd[update:43200000] date +\"%A, %d %B %Y\"";
font_size = 25;
color = base05;
position = "-30, -150";
halign = "right";
valign = "top";
}
];
image = {
monitor = "";
path = "${styleCfg.avatar}"; # Replace with your avatar path
size = 100;
border_color = base0D;
position = "0, 75";
halign = "center";
valign = "center";
};
input-field = [
{
monitor = "";
size = "300, 60";
outline_thickness = 4;
dots_size = 0.2;
dots_spacing = 0.2;
dots_center = true;
outer_color = base0D;
inner_color = base02;
font_color = base05;
fade_on_empty = false;
# the span elements still use #RRGGBB, so we use scheme directly
placeholder_text = " Logged in as $USER";
hide_input = false;
check_color = base0D;
fail_color = base08;
fail_text = "$FAIL ($ATTEMPTS)";
capslock_color = base0E;
position = "0, -47";
halign = "center";
valign = "center";
}
];
});
};
};
};
};
}