I am trying to make vimPlugins.nvim-treesitter-parsers.*
overridable, so I created this patch, but for some reason it doesn’t work.
diff --git a/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix b/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix
index ef1fd6363c71..d153eb3f3063 100644
--- a/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix
+++ b/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix
@@ -25,7 +25,7 @@ let
# tree-sitter-ocaml-interface
# tree-sitter-ocaml_interface
builtGrammars =
- generatedGrammars
+ self.nvim-treesitter.generatedGrammars
// lib.concatMapAttrs (
k: v:
let
@@ -38,9 +38,9 @@ let
${replaced} = v;
"tree-sitter-${replaced}" = v;
}
- ) generatedDerivations;
+ ) self.nvim-treesitter.generatedGrammars;
- allGrammars = lib.attrValues generatedDerivations;
+ allGrammars = lib.attrValues self.nvim-treesitter.generatedGrammars;
# Usage:
# pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.c p.java ... ])
@@ -49,10 +49,12 @@ let
withPlugins =
f:
self.nvim-treesitter.overrideAttrs {
- passthru.dependencies = map grammarToPlugin (f (tree-sitter.builtGrammars // builtGrammars));
+ passthru.dependencies = map grammarToPlugin (
+ f (tree-sitter.builtGrammars // self.nvim-treesitter.builtGrammars)
+ );
};
- withAllGrammars = withPlugins (_: allGrammars);
+ withAllGrammars = withPlugins (_: self.nvim-treesitter.allGrammars);
in
{
@@ -69,7 +71,9 @@ in
withAllGrammars
;
- grammarPlugins = lib.mapAttrs (_: grammarToPlugin) generatedDerivations;
+ generatedGrammars = generatedDerivations;
+
+ grammarPlugins = lib.mapAttrs (_: grammarToPlugin) self.nvim-treesitter.generatedGrammars;
tests = {
check-queries =
# my.nix
import ./. {
overlays = [
(final: prev: {
vimPlugins = prev.vimPlugins // {
nvim-treesitter = prev.vimPlugins.nvim-treesitter // {
generatedGrammars = prev.vimPlugins.nvim-treesitter.generatedGrammars // {
nu = prev.vimPlugins.nvim-treesitter.generatedGrammars.nu.overrideAttrs {
version = "aaaaaa";
installQueries = true;
src = final.fetchFromGitHub {
owner = "nushell";
repo = "tree-sitter-nu";
rev = "e36dde8d98549da7c9ef9e8f8698a3e77d4015ac";
hash = "";
};
};
};
};
};
})
];
}
$ nix repl
Lix 2.92.0-dev-pre20241211-92ed9fe
Type :? for help.
nix-repl> :l my.nix
Added 23168 variables.
nix-repl> :b builtins.elemAt (builtins.filter (x: x.pname == "nu-grammar") vimPlugins.nvim-treesitter.allGrammars) 0
This derivation produced the following outputs:
out -> /nix/store/hp771sjfnk1bwwvz0m897qjg0ydva302-nu-grammar-0.0.0+rev=a94fdf1
nix-repl> :b vimPlugins.nvim-treesitter.generatedGrammars.nu
warning: found empty hash, assuming 'sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='
error: hash mismatch in fixed-output derivation '/nix/store/na4vk9zf50khdp3qlnnzfkxm0xdcm7v4-source.drv'
I don’t understand why generatedGrammars.nu
gets overridden, but allGrammars.nu
doesn’t. Even though I explicitly reference final.generatedGrammars.nu
in the nvim-treesitter overlay.
Useful links: