{
  options,
  config,
  lib,
  pkgs,
  inputs,
  ...
}:
let
  cfg = config.modules.desktop.addons.hyprlock;
  inherit (inputs.nix-colors.colorschemes.${builtins.toString config.modules.desktop.colorscheme})
    palette
    ;
in
{
  options.modules.desktop.addons.hyprlock =
    with lib.frajul;
    with lib.types;
    {
      enable = mkBoolOpt false "Enable or disable the hyprlock screen locker.";
    };

  config = lib.mkIf cfg.enable {
    programs.hyprlock.enable = true;
    programs.hyprlock.settings = {
      general = {
        disable_loading_bar = true;
        hide_cursor = true;
        ignore_empty_input = true;
      };

      background = [
        {
          color = "#${palette.base00}";
          # path = "screenshot";
          # blur_passes = 3;
          # blur_size = 8;
        }
      ];

      input-field = [
        {
          size = "200, 50";
          position = "0, -80";
          monitor = "";
          dots_center = true;
          fade_on_empty = false;
          font_color = "#${palette.base0B}";
          inner_color = "#${palette.base01}";
          outer_color = "#${palette.base05}";
          outline_thickness = 5;
          placeholder_text = "Password...";
        }
      ];
    };
  };
}