From 7fc75e024224b8ad1c9238f9100f880b825344c8 Mon Sep 17 00:00:00 2001
From: PerchunPak <git@perchun.it>
Date: Tue, 10 Sep 2024 06:34:47 +0200
Subject: [PATCH 1/2] Revert "vimPlugins.nvim-treesitter: collate grammars"

This reverts PR #319233. It caused a lot of weird regressions and a lot
of headaches for me. Even a 20% improvement isn't worth it.

Also see https://github.com/NixOS/nixpkgs/pull/319233#issuecomment-2339271761
---
 .../vim/plugins/nvim-treesitter/overrides.nix  | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)

diff --git a/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix b/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix
index c7cd3266d9c7..8e3b39e6c177 100644
--- a/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix
+++ b/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix
@@ -36,22 +36,8 @@ let
   # pkgs.vimPlugins.nvim-treesitter.withAllGrammars
   withPlugins =
     f: self.nvim-treesitter.overrideAttrs {
-      passthru.dependencies =
-        let
-          grammars = map grammarToPlugin
-            (f (tree-sitter.builtGrammars // builtGrammars));
-          copyGrammar = grammar:
-            let name = lib.last (lib.splitString "-" grammar.name); in
-            "ln -sf ${grammar}/parser/${name}.so $out/parser/${name}.so";
-        in
-        [
-          (runCommand "vimplugin-treesitter-grammars"
-            { meta.platforms = lib.platforms.all; }
-            ''
-              mkdir -p $out/parser
-              ${lib.concatMapStringsSep "\n" copyGrammar grammars}
-            '')
-        ];
+      passthru.dependencies = map grammarToPlugin
+        (f (tree-sitter.builtGrammars // builtGrammars));
     };
 
   withAllGrammars = withPlugins (_: allGrammars);

From 98ca865c9dce24c4eba0c163448a9b171453da1c Mon Sep 17 00:00:00 2001
From: PerchunPak <git@perchun.it>
Date: Tue, 10 Sep 2024 06:43:26 +0200
Subject: [PATCH 2/2] vimPlugins.nvim-treesitter: add workaround for #332580

A #319233 accidentally reverted #321550. Last one caused a very annoying
regression to any Nix user (see #332580). I suppose this is a bug in
upstream grammar, so I workaround it this way until it is properly
resolved.
---
 .../editors/vim/plugins/nvim-treesitter/overrides.nix  | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix b/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix
index 8e3b39e6c177..137d364e5472 100644
--- a/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix
+++ b/pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix
@@ -4,9 +4,17 @@ self: super:
 
 let
   inherit (neovimUtils) grammarToPlugin;
-  generatedGrammars = callPackage ./generated.nix {
+
+  initialGeneratedGrammars = callPackage ./generated.nix {
     inherit (tree-sitter) buildGrammar;
   };
+  grammarOverrides = final: prev: {
+    nix = prev.nix.overrideAttrs {
+      # workaround for https://github.com/NixOS/nixpkgs/issues/332580
+      prePatch = "rm queries/highlights.scm";
+    };
+  };
+  generatedGrammars = lib.fix (lib.extends grammarOverrides (_: initialGeneratedGrammars));
 
   generatedDerivations = lib.filterAttrs (_: lib.isDerivation) generatedGrammars;