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