return {
  {
    'nvim-treesitter/nvim-treesitter',
    build = function()
      require('nvim-treesitter.install').update({ with_sync = true })()
    end,
    config = function()
      require('nvim-treesitter.configs').setup({
        ensure_installed = {
          'authzed',
          'bash',
          'c',
          'c_sharp',
          'cpp',
          'css',
          'diff',
          'dockerfile',
          'git_config',
          'git_rebase',
          'gitcommit',
          'gitignore',
          'go',
          'gomod',
          'gosum',
          'gotmpl',
          'gowork',
          'hcl',
          'helm',
          'html',
          'http',
          'ini',
          'javascript',
          'json',
          'jsonnet',
          'just',
          'latex',
          'lua',
          'make',
          'markdown',
          'markdown_inline',
          'norg',
          'python',
          'query',
          'regex',
          'ruby',
          'rust',
          'scss',
          'sql',
          'strace',
          'svelte',
          'terraform',
          'toml',
          'tsx',
          'typescript',
          'typst',
          'vim',
          'vimdoc',
          'vue',
          'yaml',
          'zig',
        },
        sync_install = true,
        auto_install = true,
        highlight = {
          enable = true,
        },
        matchup = {
          enable = true,
        },
        endwise = {
          enable = true,
        },
      })
    end,
    opts = {},
  },
  { 'nvim-treesitter/nvim-treesitter-textobjects' },
  { 'RRethy/nvim-treesitter-endwise' },
}
