aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamen Mladenov <kamen@syndamia.com>2025-01-15 13:11:10 +0200
committerKamen Mladenov <kamen@syndamia.com>2025-01-15 13:11:10 +0200
commit818ba1a13973fe64c3d73e2bf90c45e2dcafec72 (patch)
tree88a2a2c59c6403775eae3f9d6fbb1d5684b5f47a
parentb1825ecc10e33565ea7bab6ed80be82356423446 (diff)
downloadzkVMs-benchmarks-818ba1a13973fe64c3d73e2bf90c45e2dcafec72.tar
zkVMs-benchmarks-818ba1a13973fe64c3d73e2bf90c45e2dcafec72.tar.gz
zkVMs-benchmarks-818ba1a13973fe64c3d73e2bf90c45e2dcafec72.zip
feat(flake): Implement zkwasm package
-rw-r--r--flake.nix9
-rw-r--r--zkvms/zkwasm/default.nix77
2 files changed, 84 insertions, 2 deletions
diff --git a/flake.nix b/flake.nix
index 949a61e..89b0f3e 100644
--- a/flake.nix
+++ b/flake.nix
@@ -14,10 +14,14 @@
# flake-utils.follows = "mcl-blockchain/flake-utils";
};
- outputs = { self, nixpkgs, mcl-blockchain, crane, ... }:
+ outputs = { self, nixpkgs, mcl-blockchain, crane, rust-overlay, ... }:
let
system = "x86_64-linux";
- pkgs = import nixpkgs { system = system; overlays = [ mcl-blockchain.overlays.default ]; };
+ pkgs = import nixpkgs { system = system; overlays = [
+ mcl-blockchain.overlays.default
+ rust-overlay.overlays.default
+ ];
+ };
callPackage = pkgs.lib.callPackageWith pkgs;
fixDeps = commonArgs: commonArgs // {
@@ -96,6 +100,7 @@
packages.${system} = {
risc0 = callPackage ./zkvms/risc0/default.nix args-zkVM;
sp1 = callPackage ./zkvms/sp1/default.nix args-zkVM;
+ zkwasm = callPackage ./zkvms/zkwasm/default.nix args-zkVM;
};
};
}
diff --git a/zkvms/zkwasm/default.nix b/zkvms/zkwasm/default.nix
new file mode 100644
index 0000000..4f4e42f
--- /dev/null
+++ b/zkvms/zkwasm/default.nix
@@ -0,0 +1,77 @@
+{ zkVM-helpers,
+ lib,
+ rust-bin,
+ metacraft-labs,
+ wasm-pack,
+ wasm-bindgen-cli,
+ binaryen,
+ craneLib-default,
+}:
+let
+ commonArgs = {
+ pname = "zkwasm";
+ version = "infdev";
+
+ src = with lib.fileset; toSource {
+ root = ../..;
+ fileset = intersection (gitTracked ../..) (unions [
+ ./.
+ ../../guests
+ ../../guests_macro
+ ../../zkvms_host_io
+ ../../Vertices-010.in
+ ]);
+ };
+
+ cargoLock = ./Cargo.lock;
+ };
+
+ rust-toolchain = rust-bin.nightly."2024-04-09".default.override {
+ targets = ["wasm32-unknown-unknown"];
+ };
+ craneLib = craneLib-default.overrideToolchain rust-toolchain;
+ cargoArtifacts = craneLib.buildDepsOnly (zkVM-helpers.fixDeps commonArgs);
+in
+ craneLib.buildPackage (zkVM-helpers.withCustomPhases (commonArgs
+ // {
+ inherit cargoArtifacts;
+
+ nativeBuildInputs = [
+ metacraft-labs.zkwasm
+ wasm-pack
+ wasm-bindgen-cli
+ binaryen
+ ];
+
+ postPatch = ''
+ ln -s ../../../../guests/graph_coloring ./zkvms/zkwasm/guest/src/zkp
+ ln -s ../../../Cargo.lock ./zkvms/zkwasm/guest/
+ '';
+
+ hostBin = "host-zkwasm";
+
+ buildGuestPhase = ''
+ pushd guest
+
+ # Workaround from
+ # https://github.com/rustwasm/wasm-pack/issues/1335
+ export WASM_PACK_CACHE=.wasm-pack-cache
+
+ wasm-pack build --release --frozen
+ popd
+ '';
+
+ postInstall = ''
+ mv zkvms/zkwasm/guest/pkg "$out"/
+ '';
+
+ preBuild = ''
+ export GUEST_PATH="$out/pkg/guest_bg.wasm"
+ '';
+
+ preRun = ''
+ export PATH="\$PATH:${metacraft-labs.zkwasm}/bin"
+ '';
+
+ doCheck = false;
+ }))