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

let
  cfg = config.plugins.dressing-nvim;
in
{
  options.plugins.dressing-nvim = {
    enable = lib.mkEnableOption "dressing.nvim configuration";

    package = helpers.mkPackageOption "dressing.nvim" pkgs.vimPlugins.dressing-nvim;

    settings = lib.mkOption {
      type = with lib.types; attrsOf anything;
      default = { };
      example = {
        input = {
          enabled = true;
          default_prompt = "Input";
          trim_prompt = false;
        };
        select = {
          enabled = true;
          backend = [ "telescope" "fzf_lua" "builtin" "nui" ];
        };
      };
      description = ''
        Settings to be passed as argument to plugin's `setup` method.
      '';
    };
  };

  config = lib.mkIf cfg.enable {
    extraPlugins = [ cfg.package ];

    extraConfigLua = ''
      require('dressing').setup(${helpers.toLuaObject cfg.settings})
    '';
  };
}