nix all the things

topiary-nu: cleanup topiary-nu building

karitham.dev bbb9d5ef ab6bc18a

verified
+24 -42
+24 -42
pkgs/topiary-nu.nix
··· 1 1 { 2 2 lib, 3 3 stdenv, 4 - fetchFromGitHub, 5 4 tree-sitter, 6 - nodejs, 7 5 topiary, 8 6 makeWrapper, 9 7 runCommand, 10 - }: 11 - 12 - let 13 - treeSitterNu = stdenv.mkDerivation { 14 - name = "tree-sitter-nu"; 15 - src = fetchFromGitHub { 16 - owner = "nushell"; 17 - repo = "tree-sitter-nu"; 18 - rev = "18b7f951e0c511f854685dfcc9f6a34981101dd6"; 19 - hash = "sha256-OSazwPrUD7kWz/oVeStnnXEJiDDmI7itiDPmg062Kl8="; 8 + fetchFromGitHub, 9 + }: let 10 + treeSitterWithLatestNu = tree-sitter.override { 11 + extraGrammars = { 12 + tree-sitter-nu = { 13 + url = "https://github.com/nushell/tree-sitter-nu"; 14 + rev = "18b7f951e0c511f854685dfcc9f6a34981101dd6"; 15 + sha256 = "sha256-OSazwPrUD7kWz/oVeStnnXEJiDDmI7itiDPmg062Kl8="; 16 + fetchSubmodules = false; 17 + }; 20 18 }; 21 - 22 - buildInputs = [ 23 - tree-sitter 24 - nodejs 25 - ]; 26 - 27 - buildPhase = '' 28 - tree-sitter generate --abi=14 29 - ''; 30 - 31 - installPhase = '' 32 - mkdir -p $out/lib 33 - if [[ -e src/scanner.c ]]; then 34 - $CC -fPIC -c src/scanner.c -o scanner.o -Isrc -O2 35 - fi 36 - $CC -fPIC -c src/parser.c -o parser.o -Isrc -O2 37 - $CC -shared -o $out/lib/tree_sitter_nu.so *.o 38 - ''; 39 19 }; 20 + 21 + treeSitterNu = treeSitterWithLatestNu.builtGrammars.tree-sitter-nu; 40 22 41 23 topiaryNushell = fetchFromGitHub { 42 24 owner = "blindFS"; ··· 56 38 languages = { 57 39 nu = { 58 40 extensions = ["nu"], 59 - grammar.source.path = "${treeSitterNu}/lib/tree_sitter_nu.so" 41 + grammar.source.path = "${treeSitterNu}/parser" 60 42 }, 61 43 }, 62 44 } ··· 68 50 ''; 69 51 }; 70 52 in 71 - runCommand "topiary-nu" { 72 - buildInputs = [ makeWrapper ]; 73 - meta = { 74 - mainProgram = "topiary-nu"; 75 - }; 76 - } '' 77 - mkdir -p $out/bin 78 - makeWrapper ${lib.getExe topiary} $out/bin/topiary-nu \ 79 - --set TOPIARY_LANGUAGE_DIR "${configDir}/languages" \ 80 - --set TOPIARY_CONFIG_FILE "${configDir}/languages.ncl" 81 - '' 53 + runCommand "topiary-nu" { 54 + buildInputs = [makeWrapper]; 55 + meta = { 56 + mainProgram = "topiary-nu"; 57 + }; 58 + } '' 59 + mkdir -p $out/bin 60 + makeWrapper ${lib.getExe topiary} $out/bin/topiary-nu \ 61 + --set TOPIARY_LANGUAGE_DIR "${configDir}/languages" \ 62 + --set TOPIARY_CONFIG_FILE "${configDir}/languages.ncl" 63 + ''