return {
	"neovim/nvim-lspconfig",
	dependencies = { "saghen/blink.cmp", "williamboman/mason.nvim" },

	-- example calling setup directly for each LSP
	config = function()
		vim.diagnostic.config({
			underline = true,
			signs = true,
			update_in_insert = true,
			virtual_text = { spacing = 2, prefix = "●" },
			severity_sort = true,
			float = {
				border = "rounded",
			},
		})

		local capabilities = require("blink.cmp").get_lsp_capabilities()
		local lspconfig = require("lspconfig")

		lspconfig["lua_ls"].setup({ capabilities = capabilities })
		lspconfig["pyright"].setup({ capabilities = capabilities })
		lspconfig["clangd"].setup({ capabilities = capabilities })

		-- Use LspAttach autocommand to only map the following keys
		-- after the language server attaches to the current buffer
		-- vim.api.nvim_create_autocmd("LspAttach", {
		-- 	group = vim.api.nvim_create_augroup("UserLspConfig", {}),
		-- callback = function(ev)
		-- vim.keymap.set("n", "K", vim.lsp.buf.hover)
		-- vim.keymap.set("n", "<leader>ld", vim.diagnostic.open_float, {
		-- buffer = ev.buf,
		-- desc = "[LSP] Show diagnostic",
		-- })
		-- vim.keymap.set("n", "<leader>gk", vim.lsp.buf.signature_help, { desc = "[LSP] Signature help" })
		-- vim.keymap.set(
		-- 	"n",
		-- 	"<leader>wa",
		-- 	vim.lsp.buf.add_workspace_folder,
		-- 	{ desc = "[LSP] Add workspace folder" }
		-- )
		-- vim.keymap.set(
		-- 	"n",
		-- 	"<leader>wr",
		-- 	vim.lsp.buf.remove_workspace_folder,
		-- 	{ desc = "[LSP] Remove workspace folder" }
		-- )
		-- vim.keymap.set("n", "<leader>wl", function()
		-- 	print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
		-- end, { desc = "[LSP] List workspace folders" })
		-- vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, { buffer = ev.buf, desc = "[LSP] Rename" })
		-- end,
		-- })
	end,
}
