From 254e1ebf2127d2469639a2f0f786b6876a3eb78c Mon Sep 17 00:00:00 2001 From: Kamen Mladenov Date: Fri, 17 Jan 2025 17:14:46 +0200 Subject: feat(flake): Implement jolt package --- flake.lock | 6 ++--- flake.nix | 1 + zkvms/jolt/default.nix | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 zkvms/jolt/default.nix diff --git a/flake.lock b/flake.lock index 4b8accf..9658e5c 100644 --- a/flake.lock +++ b/flake.lock @@ -771,11 +771,11 @@ ] }, "locked": { - "lastModified": 1736247961, - "narHash": "sha256-0xRRICi+99KCxpiFEyvypoJUH2OgaDWR2ZP1ZZzdJ7M=", + "lastModified": 1737036108, + "narHash": "sha256-qnf/IHRjYt58qq2ZAc3ZUTlXiauyOkTp6akyLwO1ybo=", "owner": "metacraft-labs", "repo": "nix-blockchain-development", - "rev": "a9a78f503adbaaac6420a854b9e7f9abba5455d5", + "rev": "2e84b74773ea26032cf5bdb6c0e5e795c81401cf", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index dd466cc..ad73c17 100644 --- a/flake.nix +++ b/flake.nix @@ -104,6 +104,7 @@ sp1 = callPackage ./zkvms/sp1/default.nix args-zkVM; zkwasm = callPackage ./zkvms/zkwasm/default.nix args-zkVM; zkm = callPackage ./zkvms/zkm/default.nix args-zkVM; + jolt = callPackage ./zkvms/jolt/default.nix args-zkVM; }; }; } diff --git a/zkvms/jolt/default.nix b/zkvms/jolt/default.nix new file mode 100644 index 0000000..2c6399c --- /dev/null +++ b/zkvms/jolt/default.nix @@ -0,0 +1,72 @@ +{ zkVM-helpers, + stdenv, + lib, + just, + metacraft-labs, + pkg-config, + openssl, + craneLib-default, +}: +let + commonArgs = { + pname = "jolt"; + 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 = [ + metacraft-labs.jolt + openssl + pkg-config + ]; + }; + + craneLib = craneLib-default.overrideToolchain metacraft-labs.jolt; + cargoArtifacts = craneLib.buildDepsOnly (zkVM-helpers.fixDeps (commonArgs // { + postConfigure = '' + sed -i 's/"guest",//' zkvms/jolt/Cargo.toml + sed -i '/dependencies.guest/,+1d' zkvms/jolt/host/Cargo.toml + ''; + })); +in + craneLib.buildPackage (zkVM-helpers.withCustomPhases (commonArgs + // { + inherit cargoArtifacts; + + postPatch = '' + ln -s ../../../../guests/graph_coloring ./zkvms/jolt/guest/src/zkp + sed -i '/guest\/guests/d' ./zkvms/jolt/Cargo.toml + ''; + + hostBin = "host-jolt"; + guestTarget = "riscv32im-jolt-zkvm-elf"; + extraGuestArgs = "--features guest"; + + preBuildGuest = '' + export RUSTUP_TOOLCHAIN="x" + export RUSTFLAGS="-C link-arg=-T${./guest/guest.ld} -C passes=lower-atomic -C panic=abort -C strip=symbols -C opt-level=z" + ''; + + preBuild = '' + unset RUSTUP_TOOLCHAIN + export RUSTFLAGS="-Z macro-backtrace" + ''; + + preRun = '' + export ELF_PATH="$out/bin/guest" + export PATH="$PATH:${metacraft-labs.jolt}/bin" + ''; + + doCheck = false; + })) -- cgit v1.2.3