about summary refs log tree commit diff stats
path: root/pkgs/sources/tree-sitter-yts/flake.nix
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-20 16:10:21 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-20 16:14:26 +0200
commit368cb6b0d25db2ae23be42ad51584de059997e51 (patch)
tree3282e45d3ebced63c8498a47e83a255c35de620b /pkgs/sources/tree-sitter-yts/flake.nix
parentrefactor(hm): Rename to `modules/home` (diff)
downloadnixos-config-368cb6b0d25db2ae23be42ad51584de059997e51.tar.gz
nixos-config-368cb6b0d25db2ae23be42ad51584de059997e51.zip
refactor(sys): Modularize and move to `modules/system` or `pkgs`
Diffstat (limited to 'pkgs/sources/tree-sitter-yts/flake.nix')
-rw-r--r--pkgs/sources/tree-sitter-yts/flake.nix82
1 files changed, 82 insertions, 0 deletions
diff --git a/pkgs/sources/tree-sitter-yts/flake.nix b/pkgs/sources/tree-sitter-yts/flake.nix
new file mode 100644
index 00000000..1b6f8ab0
--- /dev/null
+++ b/pkgs/sources/tree-sitter-yts/flake.nix
@@ -0,0 +1,82 @@
+{
+  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
+      ];
+    };
+  }));
+}