aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamen Mladenov <kamen@syndamia.com>2025-01-17 18:50:17 +0200
committerKamen Mladenov <kamen@syndamia.com>2025-01-17 18:50:17 +0200
commitce1293a6bef3fa34948bd72bdcbf4c66eb688782 (patch)
tree6192e2a6373ed87e5b361c0c1b5193c2a2079a6d
parent1bb44c826b745daad6ccbb48f2e91550a9c4ec00 (diff)
downloadzkVMs-benchmarks-ce1293a6bef3fa34948bd72bdcbf4c66eb688782.tar
zkVMs-benchmarks-ce1293a6bef3fa34948bd72bdcbf4c66eb688782.tar.gz
zkVMs-benchmarks-ce1293a6bef3fa34948bd72bdcbf4c66eb688782.zip
feat(flake); Implement nexus package
-rw-r--r--flake.nix1
-rw-r--r--zkvms/nexus/default.nix66
2 files changed, 67 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
index ad73c17..f7b4a92 100644
--- a/flake.nix
+++ b/flake.nix
@@ -105,6 +105,7 @@
zkwasm = callPackage ./zkvms/zkwasm/default.nix args-zkVM;
zkm = callPackage ./zkvms/zkm/default.nix args-zkVM;
jolt = callPackage ./zkvms/jolt/default.nix args-zkVM;
+ nexus = callPackage ./zkvms/nexus/default.nix args-zkVM;
};
};
}
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;
+ }))