return {
  {
    "neovim/nvim-lspconfig",
    dependencies = { "saghen/blink.cmp" },
    lazy = false,
    config = function()
      local capabilities = require("blink.cmp").get_lsp_capabilities(vim.lsp.protocol.make_client_capabilities())

      vim.lsp.config.lua_ls = {
        capabilities = capabilities,
        settings = {
          Lua = {
            runtime = {
              version = "LuaJIT",
            },
            diagnostics = {
              globals = { "vim" },
            },
            workspace = {
              checkThirdParty = false,
              library = {
                vim.env.VIMRUNTIME .. "/lua",
                vim.fn.stdpath("config") .. "/lua",
              },
            },
            telemetry = {
              enable = false,
            },
          },
        },
      }

      vim.lsp.config.bashls = {
        capabilities = capabilities,
        filetypes = { "sh", "bash" },
      }

      vim.lsp.config.clangd = {
        capabilities = capabilities,
        cmd = {
          "clangd",
          "--background-index",
          "--clang-tidy",
          "--completion-style=detailed",
          "--header-insertion=iwyu",
          "--header-insertion-decorators",
          "--pch-storage=memory",
          "--all-scopes-completion",
          "--inlay-hints",
          "--function-arg-placeholders",
          "--fallback-style=llvm",
        },
      }

      vim.lsp.config.prismals = {
        capabilities = capabilities,
      }

      vim.lsp.config.jsonls = {
        capabilities = capabilities,
      }

      vim.lsp.config.html = {
        capabilities = capabilities,
      }

      vim.lsp.config.vtsls = {
        capabilities = capabilities,
        settings = {
          typescript = {
            updateImportsOnFileMove = { enabled = "always" },
            suggest = {
              completeFunctionCalls = true,
            },
            inlayHints = {
              enumMemberValues = { enabled = true },
              functionLikeReturnTypes = { enabled = true },
              parameterNames = { enabled = "all" },
              parameterTypes = { enabled = true },
              propertyDeclarationTypes = { enabled = true },
              variableTypes = { enabled = false },
            },
          },
          javascript = {
            suggest = {
              completeFunctionCalls = true,
            },
            inlayHints = {
              parameterNames = { enabled = "all" },
            },
          },
        },
      }

      vim.lsp.config.basedpyright = {
        capabilities = capabilities,
        settings = {
          basedpyright = {
            analysis = {
              diagnosticMode = "openFilesOnly",
              inlayHints = {
                callArgumentNames = true,
              },
              typeCheckingMode = "basic", -- oder "strict" für strenger
              autoSearchPaths = true,
              useLibraryCodeForTypes = true,
            },
          },
        },
      }

      vim.lsp.enable({
        "basedpyright", -- npm install -g basedpyright, brew install basedpyright
        "bashls", -- npm install -g bash-language-server, pkg install hs-ShellCheck
        "clangd", -- pkg install llvm
        "html", -- npm install -g vscode-langservers-extracted
        "jsonls", -- npm install -g vscode-langservers-extracted
        "lua_ls", -- pkg install lua-language-server, brew install lua-language-server
        "prismals", -- npm install -g @prisma/language-server
        "vtsls", -- npm install -g @vtsls/language-server
      })
    end,
  },
}
