{ config, pkgs, lib, ... }: let cfg = config.soispha.programs.nvim; in { home-manager.users.soispha. programs.nixvim = lib.mkIf cfg.enable { plugins.treesitter = { enable = true; # NOTE: These are required to build grammars, but I already use the nix grammars <2024-07-13> gccPackage = null; nodejsPackage = null; treesitterPackage = null; # inject nixvim specific highlighting (eg in extraConfigLua). nixvimInjections = true; nixGrammars = true; grammarPackages = # Append the `tree-sitter-yts` grammar to all the other grammars. # TODO: Find a better way to do this. <2024-11-08> config.home-manager.users.soispha.programs.nixvim.plugins.treesitter.package.passthru.allGrammars ++ [pkgs.tree-sitter-yts]; settings = { auto_install = false; ensureInstalled = "all"; indent.enable = true; disabledLanguages = []; highlight = { enable = true; disable = []; # Setting this to true will run `:h syntax` and tree-sitter at the same time. # Set this to `true` if you depend on 'syntax' being enabled (like for indentation). # Using this option may slow down your editor; and you may see some duplicate highlights. # Instead of true it can also be a list of languages additionalVimRegexHighlighting = ["latex"]; }; incrementalSelection = { enable = true; keymaps = { # TODO: include these in the which-key description initSelection = "gnn"; # set to `false` to disable one of the mappings nodeIncremental = "grn"; scopeIncremental = "grc"; nodeDecremental = "grm"; }; }; }; }; extraFiles = { "queries/yts/highlights.scm".text = '' ${lib.strings.fileContents "${pkgs.tree-sitter-yts}/queries/highlights.scm"} ''; }; }; }