return {
  "neovim/nvim-lspconfig",
  dependencies = { "saghen/blink.cmp" },
  event = {
    "BufReadPost",
    "BufWritePost",
    "BufNewFile",
  },

  -- example using `opts` for defining servers
  opts = {
    servers = {
      lua_ls = {},
      bashls = {},
      clangd = {},
      eslint = {}, -- JavaScript
      gopls = {}, -- Go
      jsonls = {}, -- JSON
      markdown_oxide = {}, -- Markdown
      omnisharp = {}, -- C# & F#
      powershell_es = {}, -- PowerShell
      pyright = {}, -- Python
      taplo = {}, -- TOML
      rust_analyzer = {}, -- Rust
      ts_ls = {}, -- TypeScript
      vimls = {}, -- vimscript
      yamlls = {}, -- YAML
      beancount = {}, -- Beancount
    },
  },
  config = function(_, opts)
    local lspconfig = require("lspconfig")
    for server, config in pairs(opts.servers) do
      -- passing config.capabilities to blink.cmp merges with the capabilities in your
      -- `opts[server].capabilities, if you've defined it
      config.capabilities = require("blink.cmp").get_lsp_capabilities(config.capabilities)
      lspconfig[server].setup(config)
    end
  end,

