{ description = "tree-sitter-yts"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; npmlock2nix = { url = "github:nix-community/npmlock2nix"; flake = false; }; crane = { url = "github:ipetkov/crane"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, flake-utils, npmlock2nix, crane, }: (flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; inherit (pkgs) lib; npmlock2nix' = pkgs.callPackage npmlock2nix {}; craneLib = crane.lib.${system}; in { build = self.packages.${system}.tree-sitter-nix; rust-bindings = craneLib.buildPackage { src = self; }; # Requires xcode node-bindings = npmlock2nix'.v2.build { src = self; inherit (self.devShells.${system}.default) nativeBuildInputs; inherit (pkgs) nodejs; buildCommands = [ "${pkgs.nodePackages.node-gyp}/bin/node-gyp configure" "npm run build" ]; installPhase = '' touch $out ''; }; packages.tree-sitter-yts = (pkgs.callPackage ./grammar.nix {}) { language = "yts"; version = "1.0"; src = self; }; packages.default = self.packages.${system}.tree-sitter-yts; devShells.default = pkgs.mkShell { packages = [ pkgs.nodejs pkgs.python3 pkgs.tree-sitter pkgs.editorconfig-checker pkgs.rustc pkgs.cargo # Formatters pkgs.treefmt pkgs.nixpkgs-fmt pkgs.nodePackages.prettier pkgs.rustfmt pkgs.clang-tools ]; }; })); }