{ lib, config, pkgs, ... }: lib.mkIf (lib.elem "nvim::treesitter" config.machine.pkgs) { programs.nvim-lazy.lazyPlugins = let treesitter = pkgs.vimPlugins.nvim-treesitter.withAllGrammars; grammars = pkgs.symlinkJoin { name = "treesitter-parsers"; paths = treesitter.dependencies; }; in [ { lazy = false; dir = treesitter; event = [ "BufReadPost" "BufWritePost" "BufNewFile" "VeryLazy" ]; config = # lua '' function() vim.opt.rtp:prepend("${grammars}") require("nvim-treesitter.configs").setup({ auto_install = false, highlight = { enable = true, }, incremental_selection = { enable = true, keymaps = { init_selection = "gnn", -- set to `false` to disable one of the mappings node_incremental = "grn", scope_incremental = "grc", node_decremental = "grm", }, }, indent = { enable = true } }) end ''; } ]; }