diff options
| author | Kamen Mladenov <kamen@syndamia.com> | 2025-01-16 12:50:08 +0200 |
|---|---|---|
| committer | Kamen Mladenov <kamen@syndamia.com> | 2025-01-16 12:50:08 +0200 |
| commit | 6874b8cbd027da0e1c06eb36b218bd6868660358 (patch) | |
| tree | a72a960061b0e7871a05ae508481951f13808704 | |
| parent | ed6901beb52ec2132d5da3176608a0d0eb7df1b3 (diff) | |
| download | zkVMs-benchmarks-6874b8cbd027da0e1c06eb36b218bd6868660358.tar zkVMs-benchmarks-6874b8cbd027da0e1c06eb36b218bd6868660358.tar.gz zkVMs-benchmarks-6874b8cbd027da0e1c06eb36b218bd6868660358.zip | |
feat(flake): Implement zkm package
| -rw-r--r-- | flake.nix | 1 | ||||
| -rw-r--r-- | zkvms/zkm/default.nix | 89 |
2 files changed, 90 insertions, 0 deletions
@@ -101,6 +101,7 @@ risc0 = callPackage ./zkvms/risc0/default.nix args-zkVM; sp1 = callPackage ./zkvms/sp1/default.nix args-zkVM; zkwasm = callPackage ./zkvms/zkwasm/default.nix args-zkVM; + zkm = callPackage ./zkvms/zkm/default.nix args-zkVM; }; }; } diff --git a/zkvms/zkm/default.nix b/zkvms/zkm/default.nix new file mode 100644 index 0000000..da7224b --- /dev/null +++ b/zkvms/zkm/default.nix @@ -0,0 +1,89 @@ +{ zkVM-helpers, + stdenv, + lib, + just, + metacraft-labs, + rust-bin, + protobuf, + pkg-config, + openssl, + buildGoModule, + craneLib-default, +}: +let + zkm_libsnark = buildGoModule { + pname = "zkm_libsnark"; + version = "0.1.0"; + src = with lib.fileset; toSource { + root = ./sdk/src/local/libsnark; + fileset = ./sdk/src/local/libsnark; + }; + vendorHash = "sha256-tGajRfJ8G4M89QSiJnjpTzQ3+VA2RLkavD1ipANeOSI="; + + buildPhase = "sh ./compile.sh"; + installPhase = '' + mkdir -p "$out"/lib + mv libsnark.so "$out"/lib/ + ''; + }; + + commonArgs = { + pname = "zkm"; + version = "infdev"; + + src = with lib.fileset; toSource { + root = ../..; + fileset = intersection (gitTracked ../..) (unions [ + ./. + ../../guests + ../../guests_macro + ../../zkvms_host_io + ../../Vertices-010.in + ]); + }; + + cargoLock = ./Cargo.lock; + + nativeBuildInputs = [ + pkg-config + openssl + protobuf + metacraft-labs.zkm + ]; + }; + + craneLib = craneLib-default.overrideToolchain metacraft-labs.zkm; + cargoArtifacts = craneLib.buildDepsOnly (zkVM-helpers.fixDeps commonArgs); +in + craneLib.buildPackage (zkVM-helpers.withCustomPhases (commonArgs + // { + inherit cargoArtifacts; + + postPatch = '' + ln -s ../../../../guests/graph_coloring ./zkvms/zkm/guest/src/zkp + ''; + + hostBin = "host-zkm"; + guestTarget = "mips-zkm-zkvm-elf"; + + preBuildGuest = '' + # https://github.com/zkMIPS/zkm/blob/0e62a053970eb25c81aa409d0c7234f5611a192d/build/src/command/utils.rs#L45-L61 + export RUSTFLAGS="-C target-cpu=mips2 -C target-feature=+crt-static -C link-arg=-nostdlib -C link-arg=-g -C link-arg=--entry=main" + ''; + + postBuildGuest = '' + unset RUSTFLAGS + ''; + + preBuild = '' + export RUSTFLAGS="-L ${zkm_libsnark}/lib $RUSTFLAGS" + ''; + + preRun = '' + export ELF_PATH="$out/bin/guest" + export PKG_CONFIG_PATH='${openssl.dev}/lib/pkgconfig' # Dirty hack + export LD_LIBRARY_PATH='${lib.makeLibraryPath [ openssl zkm_libsnark ]}' + ''; + + doCheck = false; + })) |
