{lib, ...}: let
  inherit (lib.options) mkOption mkEnableOption;
  inherit (lib.types) listOf str either;
  inherit (lib.nvim.types) mkPluginSetupOption luaInline;
in {
  options.vim.lsp = {
    lightbulb = {
      enable = mkEnableOption "Lightbulb for code actions. Requires an emoji font";
      setupOpts = mkPluginSetupOption "nvim-lightbulb" {};
      autocmd = {
        enable = mkEnableOption "updating lightbulb glyph automatically" // {default = true;};
        events = mkOption {
          type = listOf str;
          default = ["CursorHold" "CursorHoldI"];
          description = "Events on which to update nvim-lightbulb glyphs";
        };

        pattern = mkOption {
          type = either str luaInline;
          default = "*";
          description = ''
            File patterns or buffer names to match, determining which files or buffers trigger
            glyph updates.
          '';
        };
      };
    };
  };
}