{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; }; outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } ( { systems = [ "x86_64-linux" ]; perSystem = { config, system, pkgs, lib, ... }: let packageJson = builtins.fromJSON (builtins.readFile ./package.json); runtimeDeps = [ ]; # e. g. pkgs.jq runtimePath = lib.makeSearchPath "bin" runtimeDeps; basePackage = { pname = packageJson.name; version = packageJson.version; src = ./.; npmDepsHash = "sha256-qZIr0vUhSx/B64kNRAwLPuOTSEBs5wtbEn9rRUAXtaA="; npmBuildScript = "build"; }; in { # runtime deps included packages.bundled = pkgs.buildNpmPackage (basePackage // { makeWrapperArgs = [ "--prefix" "PATH" ":" runtimePath ]; }); packages.default = config.packages.bundled; packages.unbundled = pkgs.buildNpmPackage basePackage; devShells.default = pkgs.mkShell { packages = with pkgs; [ nodejs typescript typescript-language-server ]; }; formatter = pkgs.nixpkgs-fmt; }; } ); }