diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-05-23 13:26:22 +0200 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-05-23 13:26:22 +0200 |
commit | 204731c0a69136c9cebcb54f1afecf5145e26bbe (patch) | |
tree | fc9132e5dc74e4a8e1327cdd411839a90f9410aa /pkgs/by-name/tr/tree-sitter-yts/package.nix | |
parent | refactor(sys): Modularize and move to `modules/system` or `pkgs` (diff) | |
download | nixos-config-204731c0a69136c9cebcb54f1afecf5145e26bbe.tar.gz nixos-config-204731c0a69136c9cebcb54f1afecf5145e26bbe.zip |
refactor(pkgs): Categorize into `by-name` shards
This might not be the perfect way to organize a package set -- especially if the set is not nearly the size of nixpkgs -- but it is _at_ least a way of organization.
Diffstat (limited to '')
-rw-r--r-- | pkgs/by-name/tr/tree-sitter-yts/package.nix | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/pkgs/by-name/tr/tree-sitter-yts/package.nix b/pkgs/by-name/tr/tree-sitter-yts/package.nix new file mode 100644 index 00000000..11ab5a8d --- /dev/null +++ b/pkgs/by-name/tr/tree-sitter-yts/package.nix @@ -0,0 +1,59 @@ +# 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 ? "yts", +# version ? "1.0.0", +# src ? ./., +# location ? null, +# generate ? false, +# ... +# } @ args: +stdenv.mkDerivation { + pname = "yts-grammar"; + version = "1.0.0"; + + src = ./.; + + nativeBuildInputs = [nodejs tree-sitter]; + + CFLAGS = ["-Isrc" "-O2"]; + CXXFLAGS = ["-Isrc" "-O2"]; + + stripDebugList = ["parser"]; + + configurePhase = '' + 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 + ''; +} |