about summary refs log blame commit diff stats
path: root/pkgs/by-name/tr/tree-sitter-yts/flake.nix
blob: ca8825789931a78c815be86dc531e69ae7e12398 (plain) (tree)

























                                                        
                                                   
                                

















































                                                                    
{
  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};

    npmlock2nix' = pkgs.callPackage npmlock2nix {};
    craneLib = crane.mkLib pkgs;
  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
      ];
    };
  }));
}