local npm deps

This commit is contained in:
Robin Appelman 2023-12-24 19:14:29 +01:00
commit e2f74f1fa5
4 changed files with 21 additions and 47 deletions

2
.gitignore vendored
View file

@ -1,4 +1,4 @@
/target
target
**/*.rs.bk
bin/
pkg/

11
flake.lock generated
View file

@ -18,15 +18,16 @@
"npmlock2nix": {
"flake": false,
"locked": {
"lastModified": 1673447413,
"narHash": "sha256-sJM82Sj8yfQYs9axEmGZ9Evzdv/kDcI9sddqJ45frrU=",
"owner": "nix-community",
"lastModified": 1703439378,
"narHash": "sha256-3hUfLQzQs+yFm6m8UKwVWk3YYGO+mJz30hiY7Rzl2IU=",
"owner": "icewind1991",
"repo": "npmlock2nix",
"rev": "9197bbf397d76059a76310523d45df10d2e4ca81",
"rev": "5007d6470672585fcb28712606af195f73bf9bab",
"type": "github"
},
"original": {
"owner": "nix-community",
"owner": "icewind1991",
"ref": "local-packages",
"repo": "npmlock2nix",
"type": "github"
}

View file

@ -8,7 +8,7 @@
inputs.flake-utils.follows = "utils";
};
npmlock2nix = {
url = "github:nix-community/npmlock2nix";
url = "github:icewind1991/npmlock2nix/local-packages";
flake = false;
};
};
@ -30,42 +30,14 @@
});
demo-inspector-wasm = import ./wasm.nix final;
nodejs = final.nodejs_20;
node_modules = let
without-local-deps =
prev.stdenv.mkDerivation {
name = "demo-inspector-without-local-deps";
src = ./www;
buildInputs = [ prev.jq ];
installPhase = ''
mkdir $out
cat $src/package.json \
| jq 'del( .dependencies."demo-inspector" )' \
> $out/package.json
cat $src/package-lock.json \
| jq 'del( .packages."".dependencies."demo-inspector" )' \
| jq 'del( .dependencies."demo-inspector" )' \
| jq 'del( .packages."demo-inspector" )' \
| jq 'del( .packages."../wasm/pkg" )' \
| jq 'del( .packages."node_modules/demo-inspector" )' \
> $out/package-lock.json
'';
};
npmlock2nix-d =
final.npmlock2nix.v2.node_modules {
src = without-local-deps;
nodejs = final.nodejs;
};
with-local-deps =
pkgs.runCommand "demo-inspector-with-local-deps" {} ''
mkdir $out
cp -r -- ${npmlock2nix-d}/node_modules $out
chmod +w -R $out/node_modules
cp -r -- ${final.demo-inspector-wasm} $out/node_modules/demo-inspector
'';
in with-local-deps;
node_modules = final.npmlock2nix.v2.node_modules {
src = ./www;
nodejs = final.nodejs;
localPackages = {
"demo-inspector" = final.demo-inspector-wasm;
};
};
})
];
pkgs = import nixpkgs {

View file

@ -5,24 +5,25 @@ pkgs: let
version = deps.wasm-bindgen.version;
src = pkgs.fetchCrate {
inherit pname version;
sha256 = "sha256-+PWxeRL5MkIfJtfN3/DjaDlqRgBgWZMa6dBt1Q+lpd0=";
sha256 = "sha256-IPxP68xtNSpwJjV2yNMeepAS0anzGl02hYlSTvPocz8=";
};
cargoSha256 = "sha256-GwLeA6xLt7I+NzRaqjwVpt1pzRex1/snq30DPv4FR+g=";
cargoSha256 = "sha256-pBeQaG6i65uJrJptZQLuIaCb/WCQMhba1Z1OhYqA8Zc=";
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = with pkgs; [ openssl ];
checkInputs = [ pkgs.nodejs_20 ];
# other tests require it to be ran in the wasm-bindgen monorepo
cargoTestFlags = [ "--test=interface-types" ];
dontCargoCheck = true;
};
in pkgs.rustPlatform.buildRustPackage rec {
name = "demo-inspector-wasm";
version = "0.1.0";
cargoSha256 = "sha256-WjYIwkvMi82Wq4eCTve44sAL6DHtQBK2x7Ng5uw3fqQ=";
cargoLock = {
lockFile = ./wasm/Cargo.lock;
};
src = ./wasm;