From daee75e5b32a00c9d5261be4de29ff9a8ccc1dd2 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sun, 24 Apr 2022 07:44:40 +1200 Subject: [PATCH] emacs.pkgs.tree-sitter-langs: Make language plugins configurable By using an expression like: ``` nix emacs.pkgs.tree-sitter-langs.passthru.withPlugins (p: [ p.tree-sitter-agda ]) ``` --- .../editors/emacs/elisp-packages/manual-packages.nix | 2 +- .../elisp-packages/tree-sitter-langs/default.nix | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix index 6d8dbce2b32b..4dc546c6263d 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix @@ -233,7 +233,7 @@ sv-kalender = callPackage ./sv-kalender { }; - tree-sitter-langs = callPackage ./tree-sitter-langs { }; + tree-sitter-langs = callPackage ./tree-sitter-langs { final = self; }; tsc = callPackage ./tsc { }; youtube-dl = callPackage ./youtube-dl { }; diff --git a/pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix b/pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix index 99fa87abf018..e62a37565c83 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nix @@ -9,13 +9,13 @@ , melpaStablePackages , runCommand , tree-sitter-grammars +, plugins ? map (g: tree-sitter-grammars.${g}) (lib.importJSON ./default-grammars.json) +, final }: let inherit (melpaStablePackages) tree-sitter-langs; - grammars = map (g: tree-sitter-grammars.${g}) (lib.importJSON ./default-grammars.json); - libSuffix = if stdenv.isDarwin then "dylib" else "so"; soName = g: lib.removeSuffix "-grammar" (lib.removePrefix "tree-sitter-" g.pname) + "." + libSuffix; @@ -26,7 +26,7 @@ let install -d $out/langs/bin echo -n $version > $out/langs/bin/BUNDLE-VERSION '' + lib.concatStringsSep "\n" (map ( - g: "ln -s ${g}/parser $out/langs/bin/${soName g}") grammars + g: "ln -s ${g}/parser $out/langs/bin/${soName g}") plugins )); in @@ -35,4 +35,10 @@ melpaStablePackages.tree-sitter-langs.overrideAttrs(old: { substituteInPlace ./tree-sitter-langs-build.el \ --replace "tree-sitter-langs-grammar-dir tree-sitter-langs--dir" "tree-sitter-langs-grammar-dir \"${grammarDir}/langs\"" ''; + + passthru = old.passthru or {} // { + inherit plugins; + withPlugins = fn: final.tree-sitter-langs.override { plugins = fn tree-sitter-grammars; }; + }; + })