return {
  'neovim/nvim-lspconfig',
  dependencies = {
    'williamboman/mason.nvim',
    'williamboman/mason-lspconfig.nvim',

    'neovim/nvim-lspconfig',
    'hrsh7th/cmp-nvim-lsp',
    'hrsh7th/cmp-buffer',
    'hrsh7th/cmp-path',
    'hrsh7th/cmp-cmdline',
    'hrsh7th/nvim-cmp',

    'folke/neodev.nvim',

    -- TODO: https://github.com/j-hui/fidget.nvim
    -- TODO: https://github.com/nvimtools/none-ls.nvim
    -- TODO: https://github.com/mfussenegger/nvim-dap
    -- TODO: https://github.com/rcarriga/nvim-dap-ui
  },
  config = function()
    require('neodev').setup()

    require('mason').setup()
    require('mason-lspconfig').setup({
      ensure_installed = {
        'clangd',
        'cmake',
        'lua_ls',
      },
      automatic_installation = false,
      handlers = {
        function(server_name)
          require('lspconfig')[server_name].setup({})
        end,
      },
    })

    require('cmp').setup({
      sources = {
        { name = 'nvim_lsp' },
        -- TODO: snippets
      },
    })
  end,
}