diff options
Diffstat (limited to 'zkvms/nexus/default.nix')
| -rw-r--r-- | zkvms/nexus/default.nix | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/zkvms/nexus/default.nix b/zkvms/nexus/default.nix new file mode 100644 index 0000000..a7f74e0 --- /dev/null +++ b/zkvms/nexus/default.nix @@ -0,0 +1,66 @@ +{ zkVM-helpers, + stdenv, + lib, + just, + metacraft-labs, + openssl, + pkg-config, + craneLib-default, +}: +let + commonArgs = { + pname = "nexus"; + 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.nexus + openssl + pkg-config + ]; + }; + + craneLib = craneLib-default.overrideToolchain metacraft-labs.nexus; + cargoArtifacts = craneLib.buildDepsOnly (zkVM-helpers.fixDeps commonArgs); +in + craneLib.buildPackage (zkVM-helpers.withCustomPhases (commonArgs + // rec { + inherit cargoArtifacts; + + postPatch = '' + ln -s ../../../../guests/graph_coloring ./zkvms/nexus/guest/src/zkp + ''; + + hostBin = "host-nexus"; + guestTarget = "riscv32i-unknown-none-elf"; + extraGuestArgs = "-- --cfg 'feature=\"no_std\"' -C link-arg=-T${guest/guest.ld}"; + + buildGuestPhase = '' + pushd guest + + cargo rustc --release --target ${guestTarget} ${extraGuestArgs} + ln -s ../../guest/target/${guestTarget}/release/guest ../host/src/guest + + popd + ''; + + preRun = '' + export ELF_PATH="$out/bin/guest" + export PKG_CONFIG_PATH='${openssl.dev}/lib/pkgconfig' # Dirty hack + export LD_LIBRARY_PATH='${lib.makeLibraryPath [ openssl ]}' + ''; + + doCheck = false; + })) |
