From 849cd60632c2da99a4035e614266b0aa86612f4f Mon Sep 17 00:00:00 2001 From: Soispha Date: Fri, 19 Jan 2024 18:55:21 +0100 Subject: feat(hm/conf/nvim/plgs/treesitter): Add custom parser for `yts` --- sys/nixpkgs/pkgs/tree-sitter-yts/package.nix | 63 ++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 sys/nixpkgs/pkgs/tree-sitter-yts/package.nix (limited to 'sys/nixpkgs/pkgs/tree-sitter-yts/package.nix') diff --git a/sys/nixpkgs/pkgs/tree-sitter-yts/package.nix b/sys/nixpkgs/pkgs/tree-sitter-yts/package.nix new file mode 100644 index 00000000..fe9a7326 --- /dev/null +++ b/sys/nixpkgs/pkgs/tree-sitter-yts/package.nix @@ -0,0 +1,63 @@ +# taken from nixpgks: pkgs/development/tools/parsing/tree-sitter/grammar.nix +{ + stdenv, + nodejs, + tree-sitter, + lib, +}: +# Build a parser grammar and put the resulting shared object in `$out/parser` +{ + # language name + language, + version, + src, + location ? null, + generate ? false, + ... +} @ args: +stdenv.mkDerivation ({ + pname = "${language}-grammar"; + + inherit src version; + + nativeBuildInputs = lib.optionals generate [nodejs tree-sitter]; + + CFLAGS = ["-Isrc" "-O2"]; + CXXFLAGS = ["-Isrc" "-O2"]; + + stripDebugList = ["parser"]; + + configurePhase = + lib.optionalString (location != null) '' + cd ${location} + '' + + lib.optionalString generate '' + tree-sitter generate + ''; + + # When both scanner.{c,cc} exist, we should not link both since they may be the same but in + # different languages. Just randomly prefer C++ if that happens. + buildPhase = '' + runHook preBuild + if [[ -e src/scanner.cc ]]; then + $CXX -fPIC -c src/scanner.cc -o scanner.o $CXXFLAGS + elif [[ -e src/scanner.c ]]; then + $CC -fPIC -c src/scanner.c -o scanner.o $CFLAGS + fi + $CC -fPIC -c src/parser.c -o parser.o $CFLAGS + rm -rf parser + $CXX -shared -o parser *.o + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir $out + mv parser $out/ + if [[ -d queries ]]; then + cp -r queries $out + fi + runHook postInstall + ''; + } + // removeAttrs args ["language" "location" "generate"]) -- cgit 1.4.1