{pkgs, ...}: let treesitterWithGrammars = pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.bash p.comment p.css p.dockerfile p.fish p.gitattributes p.gitignore p.go p.gomod p.gowork p.hcl p.javascript p.jq p.json5 p.json p.lua p.make p.markdown p.nix p.python p.rust p.toml p.typescript p.vue p.yaml ]); treesitter-parsers = pkgs.symlinkJoin { name = "treesitter-parsers"; paths = treesitterWithGrammars.dependencies; }; in { programs.neovim = { enable = true; defaultEditor = true; package = pkgs.neovim-unwrapped; vimAlias = true; coc.enable = false; withNodeJs = true; #package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; plugins = [ treesitterWithGrammars ]; }; home.file."./.config/nvim/" = { source = ./nvim; recursive = true; }; home.file."./.config/nvim/lua/cnst/init.lua".text = '' require("cnst.set") require("cnst.remap") vim.opt.runtimepath:append("${treesitter-parsers}") ''; # Treesitter is configured as a locally developed module in lazy.nvim # we hardcode a symlink here so that we can refer to it in our lazy config home.file."./.local/share/nvim/nix/nvim-treesitter/" = { recursive = true; source = treesitterWithGrammars; }; }