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

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

    home-manager.users.${config.user} = {
      programs.hyprlock = {

        enable = true;
        package = hyprlock.hyprlock;

        settings = {

          background = {
            monitor = "";
            path = config.wallpaper;
            blur_passes = 3;
            contrast = 0.8916;
            brightness = 0.8172;
            vibrancy = 0.1696;
            vibrancy_darkness = 0.0;
          };

          general = {
            no_fade_in = false;
            grace = 0;
            disable_loading_bar = true;
          };

          input-field = {
            monitor = "";
            size = "250, 60";
            outline_thickness = 2;
            dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
            dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
            dots_center = true;
            outer_color = "rgba(0, 0, 0, 0)";
            inner_color = "rgba(0, 0, 0, 0.5)";
            font_color = "rgb(${config.theme.colors.base05})";
            font_family = config.theme.font;
            fade_on_empty = false;
            placeholder_text = "<i><span foreground=\"#${config.theme.colors.base05}\">Input Password...</span></i>";
            hide_input = false;
            position = "0, -120";
            halign = "center";
            valign = "center";
          };

          label = [
            # Clock
            {
              monitor = "";
              text = "cmd[update:1000] echo \"$(date +\"%-H:%M:%S\")\"";
              font_size = 80;
              font_color = "rgb(${config.theme.colors.base05})";
              font_family = config.theme.headerFont;
              position = "0, 500";
              halign = "center";
              valign = "center";
            }

            # Name
            {
              monitor = "";
              text = config.fullName;
              font_color = "rgb(${config.theme.colors.base05})";
              font_family = config.theme.headerFont;
              font_size = 25;
              position = "0, 50";
              halign = "center";
              valign = "center";
            }
          ];

          # Profile image
          image = {
            monitor = "";
            path = config.avatar;
            size = 300;
            rounding = -1;
            border_size = 0;
            position = "0, 250";
            halign = "center";
            valign = "center";
          };
        };
      };
    };

  };
}