{ self, nix-filter, pkgs, }: let inherit (pkgs.lib) cleanSource; packageJson = pkgs.runCommand "package.json" { nativeBuildInputs = with pkgs; [yj]; src = ""; } '' cat ${self}/package.yaml | yj > $out ''; prePatch = '' ln -s ${packageJson} package.json; ''; node_modules_attrs = { packageJson = "${packageJson}"; # Dependencies that should be available in the node build buildInputs = with pkgs; [ pkg-config python3 vips glib ]; }; # Dependencies that should be available outside of the node build buildInputs = with pkgs; [ util-linux ]; in { package = pkgs.npmlock2nix.build { inherit buildInputs prePatch node_modules_attrs; src = cleanSource self; buildCommands = ["npm run build-dist"]; installPhase = '' cp -r dist $out/ ''; }; shell = pkgs.npmlock2nix.shell { inherit prePatch node_modules_attrs; buildInputs = buildInputs ++ (with pkgs; [ clang-tools ]); src = nix-filter { root = self; include = [ "package.yaml" "package-lock.json" ]; }; shellHook = '' if [ -e package.json ]; then unlink package.json fi ln -s ${packageJson} package.json ''; }; }