diff options
| -rw-r--r-- | flake.nix | 9 | ||||
| -rw-r--r-- | zkvms/zkwasm/default.nix | 77 |
2 files changed, 84 insertions, 2 deletions
@@ -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; + })) |
