nvim-treesitter: languages parsing

{ config, pkgs, stdenv, lib, ... }:
let

d2-vim vs tree-sitter-d2

When edit a large d2 file using d2-vim, the cursor movement becomes lag. However, tree-sitter-d2 works fluently. So I replace the d2-vim with tree-sitter-d2.

  tree-sitter-d2 = pkgs.tree-sitter.buildGrammar rec {
    language = "d2";
    # tree-sitter language version 14
    version = "0.5.1";
    src = pkgs.fetchFromGitHub {
      owner = "ravsii";
      repo = "tree-sitter-d2";
      rev = "v${version}";
      hash = "sha256-Ru+EAtnBl+Td4HxHPXLwcXOiFB/NbYPE5AhMNFyP2Kg=";
    };
  };
  my-nvim-treesitter = {
    # Available languages see:
    #   https://github.com/nvim-treesitter/nvim-treesitter
    # see `pkgs.tree-sitter.builtGrammars.`
    # with `tree-sitter-` prefix and `-grammar` suffix removed
    plugin = pkgs.vimPlugins.nvim-treesitter.withPlugins (tree-sitter: [
      tree-sitter.c
      tree-sitter.cpp
      tree-sitter.python
      tree-sitter.markdown
      tree-sitter.lua
      tree-sitter-d2
    ]);
    type = "lua";
    config = ''
      require 'nvim-treesitter.configs'.setup {
        -- TODO: https://github.com/NixOS/nixpkgs/issues/189838
        -- ensure_installed = {"c", "cpp", "python", "markdown"},
        ensure_installed = {},
        sync_install = false,
        highlight = {
          enable = true,
          additional_vim_regex_highlighting = false,
          disable = {
            "nix",
          },
        },
      }
    '';
  };
in {
  programs.neovim = {
    plugins = [
      my-nvim-treesitter
    ];
  };
}