{
  lib,
  helpers,
  config,
  pkgs,
  ...
}:
with lib;
let
  cfg = config.plugins.quickmath;
in
{
  options.plugins.quickmath = {
    enable = mkEnableOption "quickmath.nvim";

    package = lib.mkPackageOption pkgs "quickmath.nvim" {
      default = [
        "vimPlugins"
        "quickmath-nvim"
      ];
    };

    keymap = {
      key = helpers.mkNullOrOption types.str "Keymap to run the `:Quickmath` command.";

      silent = mkOption {
        type = types.bool;
        description = "Whether the quickmath keymap should be silent.";
        default = false;
      };
    };
  };

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

    keymaps =
      with cfg.keymap;
      optional (key != null) {
        mode = "n";
        inherit key;
        action = ":Quickmath<CR>";
        options.silent = cfg.keymap.silent;
      };
  };
}