return {
  {
    "williamboman/mason.nvim",
    lazy = false,
    config = function()
      require("mason").setup()
    end,
  },
  {
    "williamboman/mason-lspconfig.nvim",
    lazy = false,
    opts = {
      auto_install = true,
    },
  },
  {
    "neovim/nvim-lspconfig",
    lazy = false,
    config = function()
      local capabilities = require('cmp_nvim_lsp').default_capabilities()
      
      -- Define server configurations
      local servers = {
        ts_ls = {},
        solargraph = {},
        html = {},
        lua_ls = {},
        pyright = {},
        -- ltex = {
        --   cmd_env = {
        --     JAVA_TOOL_OPTIONS = "-Djdk.xml.totalEntitySizeLimit=0 -Djdk.xml.entityExpansionLimit=0"
        --   },
        --   filetypes = { "markdown", "text", "tex", "gitcommit" },
        --   settings = {
        --     ltex = {
        --       language = "en-US",
        --       additionalRules = {
        --         enablePickyRules = true,
        --         motherTongue = "de-DE",
        --       },
        --     }
        --   }
        -- },
      }

      -- Setup each server with the new API
      for server, config in pairs(servers) do
        config.capabilities = capabilities
        vim.lsp.config[server] = config
        vim.lsp.enable(server)
      end

      -- LSP keymaps
      vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
      vim.keymap.set("n", "<leader>gd", vim.lsp.buf.definition, {})
      vim.keymap.set("n", "<leader>gr", vim.lsp.buf.references, {})
      vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, {})
    end,
  },
}
