{
  pkgs,
  lib,
  config,
  ...
}:
with lib;
with builtins; let
  cfg = config.vim.autopairs;
in {
  options.vim = {
    autopairs = {
      enable = mkOption {
        type = types.bool;
        default = false;
        description = "enable autopairs";
      };

      type = mkOption {
        type = types.enum ["nvim-autopairs"];
        default = "nvim-autopairs";
        description = "Set the autopairs type. Options: nvim-autopairs [nvim-autopairs]";
      };
    };
  };

  config =
    mkIf cfg.enable
    {
      vim.startPlugins = ["nvim-autopairs"];

      vim.luaConfigRC.autopairs = nvim.dag.entryAnywhere ''
        require("nvim-autopairs").setup{}
        ${optionalString (config.vim.autocomplete.type == "nvim-compe") ''
          require('nvim-autopairs.completion.compe').setup({
            map_cr = true,
            map_complete = true,
            auto_select = false,
          })
        ''}
      '';
    };
}