75 lines
1.3 KiB
Nix
75 lines
1.3 KiB
Nix
{
|
|
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
|
|
'';
|
|
};
|
|
}
|