aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.nix110
-rw-r--r--guest.nix20
-rw-r--r--rust-format-all.nix5
-rw-r--r--zkvmLib.nix426
-rw-r--r--zkvms/jolt/default.nix80
-rw-r--r--zkvms/nexus/default.nix66
-rw-r--r--zkvms/risc0/default.nix55
-rw-r--r--zkvms/sp1/default.nix43
-rw-r--r--zkvms/zkm/default.nix88
-rw-r--r--zkvms/zkwasm/default.nix75
10 files changed, 443 insertions, 525 deletions
diff --git a/flake.nix b/flake.nix
index 4befe0c..228aca8 100644
--- a/flake.nix
+++ b/flake.nix
@@ -3,75 +3,79 @@
nixConfig = {
extra-substituters = "https://nix-blockchain-development.cachix.org";
- extra-trusted-public-keys = "nix-blockchain-development.cachix.org-1:Ekei3RuW3Se+P/UIo6Q/oAgor/fVhFuuuX5jR8K/cdg=";
+ extra-trusted-public-keys =
+ "nix-blockchain-development.cachix.org-1:Ekei3RuW3Se+P/UIo6Q/oAgor/fVhFuuuX5jR8K/cdg=";
};
inputs = {
mcl-blockchain.url = "github:metacraft-labs/nix-blockchain-development";
- mcl-blockchain-old.url = "github:metacraft-labs/nix-blockchain-development?rev=f717747a4ce11d5764578d8ee1c505d00bf8a81e";
+ mcl-blockchain-old.url =
+ "github:metacraft-labs/nix-blockchain-development?rev=f717747a4ce11d5764578d8ee1c505d00bf8a81e";
nixpkgs.follows = "mcl-blockchain/nixpkgs";
crane.follows = "mcl-blockchain/crane";
rust-overlay.follows = "mcl-blockchain/rust-overlay";
# flake-utils.follows = "mcl-blockchain/flake-utils";
};
- outputs = { self, nixpkgs, mcl-blockchain, mcl-blockchain-old, crane, rust-overlay, ... }:
- let
- system = "x86_64-linux";
- pkgs = import nixpkgs { system = system; overlays = [
- mcl-blockchain.overlays.default
- rust-overlay.overlays.default
- (_: _: {
- metacraft-labs-old = mcl-blockchain-old.legacyPackages.${system}.metacraft-labs;
- })
- ];
- };
- craneLib-default = crane.mkLib pkgs;
- callPackage = pkgs.lib.callPackageWith pkgs;
+ outputs = { self, nixpkgs, mcl-blockchain, mcl-blockchain-old, crane
+ , rust-overlay, ... }:
+ let
+ system = "x86_64-linux";
+ pkgs = import nixpkgs {
+ system = system;
+ overlays = [
+ mcl-blockchain.overlays.default
+ rust-overlay.overlays.default
+ (_: _: {
+ metacraft-labs-old =
+ mcl-blockchain-old.legacyPackages.${system}.metacraft-labs;
+ })
+ ];
+ };
+ craneLib-default = crane.mkLib pkgs;
+ callPackage = pkgs.lib.callPackageWith pkgs;
- zkvms = builtins.attrNames
- (pkgs.lib.filterAttrs
- (_: type: type == "directory")
- (builtins.readDir ./zkvms));
+ zkvms = builtins.attrNames
+ (pkgs.lib.filterAttrs (_: type: type == "directory")
+ (builtins.readDir ./zkvms));
- guests = builtins.attrNames
- (pkgs.lib.filterAttrs
- (_: type: type == "directory")
- (builtins.readDir ./guests));
+ guests = builtins.attrNames
+ (pkgs.lib.filterAttrs (_: type: type == "directory")
+ (builtins.readDir ./guests));
- foldr = pkgs.lib.foldr;
+ foldr = pkgs.lib.foldr;
- createPackages = guestName: let
- guest = if guestName == null then "graph_coloring" else guestName;
- postfix = if guestName == null then "" else "/" + guest;
+ createPackages = guestName:
+ let
+ guest = if guestName == null then "graph_coloring" else guestName;
+ postfix = if guestName == null then "" else "/" + guest;
- args-zkVM = {
- inherit craneLib-default;
- zkvmLib = (import ./zkvmLib.nix) pkgs guest;
- };
- in foldr
- (host: accum: accum // {
- "${host}${postfix}" = callPackage ./zkvms/${host}/default.nix args-zkVM;
- })
- {}
- zkvms;
+ args-zkVM = {
+ inherit craneLib-default;
+ zkvmLib = (import ./zkvmLib.nix) pkgs guest;
+ };
+ in foldr (host: accum:
+ accum // {
+ "${host}${postfix}" =
+ callPackage ./zkvms/${host}/default.nix args-zkVM;
+ }) { } zkvms;
- hostPackages = foldr
- (guest: accum: accum // (createPackages guest))
- {}
- guests;
+ hostPackages =
+ foldr (guest: accum: accum // (createPackages guest)) { } guests;
- guestPackages = foldr
- (guest: accum: accum // {
- ${guest} = callPackage ./guest.nix { inherit guest; inherit zkvms; inherit hostPackages; };
- })
- {}
- guests;
- in {
- packages.${system} = hostPackages // guestPackages // {
- rust-format-all = callPackage ./rust-format-all.nix { };
- };
+ guestPackages = foldr (guest: accum:
+ accum // {
+ ${guest} = callPackage ./guest.nix {
+ inherit guest;
+ inherit zkvms;
+ inherit hostPackages;
+ };
+ }) { } guests;
+ in {
+ packages.${system} = hostPackages // guestPackages // {
+ rust-format-all = callPackage ./rust-format-all.nix { };
+ };
- formatter.${system} = pkgs.nixfmt;
- };
+ formatter.${system} = pkgs.nixfmt;
+ };
}
diff --git a/guest.nix b/guest.nix
index 5b321cc..4b3782f 100644
--- a/guest.nix
+++ b/guest.nix
@@ -1,15 +1,9 @@
-{ writeShellApplication,
- guest,
- zkvms,
- hostPackages,
- lib,
-}:
+{ writeShellApplication, guest, zkvms, hostPackages, lib, }:
writeShellApplication {
name = "${guest}";
- runtimeInputs = lib.foldr
- (zkvm: accum: accum ++ [ hostPackages."${zkvm}/${guest}" ])
- []
+ runtimeInputs =
+ lib.foldr (zkvm: accum: accum ++ [ hostPackages."${zkvm}/${guest}" ]) [ ]
zkvms;
text = ''
@@ -17,8 +11,8 @@ writeShellApplication {
echo "$1"
"$@"
}
- '' + lib.foldr
- (zkvm: accum: "runZKVM \"${hostPackages."${zkvm}/${guest}"}/bin/${zkvm}_${guest}\" \"$@\"\n" + accum)
- ""
- zkvms;
+ '' + lib.foldr (zkvm: accum:
+ ''
+ runZKVM "${hostPackages."${zkvm}/${guest}"}/bin/${zkvm}_${guest}" "$@"
+ '' + accum) "" zkvms;
}
diff --git a/rust-format-all.nix b/rust-format-all.nix
index 710f1ef..90b4e78 100644
--- a/rust-format-all.nix
+++ b/rust-format-all.nix
@@ -1,7 +1,4 @@
-{ writeShellApplication
-, rustfmt
-,
-}:
+{ writeShellApplication, rustfmt, }:
writeShellApplication {
name = "rustfmt_all";
diff --git a/zkvmLib.nix b/zkvmLib.nix
index 686071d..553d4e7 100644
--- a/zkvmLib.nix
+++ b/zkvmLib.nix
@@ -1,108 +1,109 @@
-pkgs: guest: let
+pkgs: guest:
+let
generateCargoLocks = craneLib: args: rec {
cargoLockDrv = pkgs.stdenv.mkDerivation {
- name = "CargoLocks-${args.pname}";
- src = pkgs.lib.fileset.toSource {
- root = ./.;
- fileset = ./.;
- };
-
- installPhase = let
- # Since we're concatenating Cargo.lock files, duplicate package entries
- # are inevitable and cargo crashes when it encounters them.
- # We'll manually remove all duplicates and cargo will be happy.
- # This is a disgusting hack, but it's the best I've come up with.
- removeDuplicates = ''
- BEGIN {
- unique = 1
- }
-
- /^\[\[package\]\]/ { unique = 0; next }
-
- /^name = / {
- match($0, /".*"/)
- name = substr($0, RSTART + 1, RLENGTH - 2)
- next
- }
-
- name && /^version = / {
- match($0, /".*"/)
- version = substr($0, RSTART + 1, RLENGTH - 2)
- next
- }
-
- version && /^source = / {
- match($0, /".*"/)
- source = substr($0, RSTART + 1, RLENGTH - 2)
- next
- }
-
- source && /^checksum = / {
- match($0, /".*"/)
- checksum = substr($0, RSTART + 1, RLENGTH - 2)
- next
- }
+ name = "CargoLocks-${args.pname}";
+ src = pkgs.lib.fileset.toSource {
+ root = ./.;
+ fileset = ./.;
+ };
- name && !unique {
- unique = (index(versions[name], version) == 0) ||
- (source && index(sources[name], source) == 0) ||
- (checksum && index(checksums[name], checksum) == 0)
-
- if (unique) {
- versions[name] = versions[name] version
- sources[name] = sources[name] source
- checksums[name] = checksums[name] checksum
-
- print "[[package]]"
- print "name = \"" name "\""
- print "version = \"" version "\""
- if (source) print "source = \"" source "\""
- if (checksum) print "checksum = \"" checksum "\""
- }
- name = ""; version = ""; source = ""; checksum = ""
+ installPhase = let
+ # Since we're concatenating Cargo.lock files, duplicate package entries
+ # are inevitable and cargo crashes when it encounters them.
+ # We'll manually remove all duplicates and cargo will be happy.
+ # This is a disgusting hack, but it's the best I've come up with.
+ removeDuplicates = ''
+ BEGIN {
+ unique = 1
+ }
+
+ /^\[\[package\]\]/ { unique = 0; next }
+
+ /^name = / {
+ match($0, /".*"/)
+ name = substr($0, RSTART + 1, RLENGTH - 2)
+ next
+ }
+
+ name && /^version = / {
+ match($0, /".*"/)
+ version = substr($0, RSTART + 1, RLENGTH - 2)
+ next
+ }
+
+ version && /^source = / {
+ match($0, /".*"/)
+ source = substr($0, RSTART + 1, RLENGTH - 2)
+ next
+ }
+
+ source && /^checksum = / {
+ match($0, /".*"/)
+ checksum = substr($0, RSTART + 1, RLENGTH - 2)
+ next
+ }
+
+ name && !unique {
+ unique = (index(versions[name], version) == 0) ||
+ (source && index(sources[name], source) == 0) ||
+ (checksum && index(checksums[name], checksum) == 0)
+
+ if (unique) {
+ versions[name] = versions[name] version
+ sources[name] = sources[name] source
+ checksums[name] = checksums[name] checksum
+
+ print "[[package]]"
+ print "name = \"" name "\""
+ print "version = \"" version "\""
+ if (source) print "source = \"" source "\""
+ if (checksum) print "checksum = \"" checksum "\""
}
+ name = ""; version = ""; source = ""; checksum = ""
+ }
- unique || /^$/ { print }
- '';
- in ''
- mkdir -p "$out"
- cd zkvms/${args.pname}
+ unique || /^$/ { print }
+ '';
+ in ''
+ mkdir -p "$out"
+ cd zkvms/${args.pname}
- '' + (if args ? extraLockfile then ''
- cat ${args.extraLockfile} > lockfile
- tail -n +4 ./host/Cargo.lock >> lockfile
- '' else ''
- cat ./host/Cargo.lock > lockfile
- '') + ''
+ '' + (if args ? extraLockfile then ''
+ cat ${args.extraLockfile} > lockfile
+ tail -n +4 ./host/Cargo.lock >> lockfile
+ '' else ''
+ cat ./host/Cargo.lock > lockfile
+ '') + ''
- tail -n +4 ./guest/Cargo.lock >> lockfile
- tail -n +4 ../../guests/${guest}/Cargo.lock >> lockfile
+ tail -n +4 ./guest/Cargo.lock >> lockfile
+ tail -n +4 ../../guests/${guest}/Cargo.lock >> lockfile
- awk '${removeDuplicates}' lockfile > "$out/Cargo.lock"
- '';
- };
+ awk '${removeDuplicates}' lockfile > "$out/Cargo.lock"
+ '';
+ };
cargoVendorDir = craneLib.vendorCargoDeps ({
- src = cargoLockDrv;
- } // (
- if args ? overrideVendorCargoPackage then
- { inherit (args) overrideVendorCargoPackage; }
- else
- { })
- // (
- if args ? overrideVendorGitCheckout then
- { inherit (args) overrideVendorGitCheckout; }
- else
- { }));
+ src = cargoLockDrv;
+ } // (if args ? overrideVendorCargoPackage then {
+ inherit (args) overrideVendorCargoPackage;
+ } else
+ { }) // (if args ? overrideVendorGitCheckout then {
+ inherit (args) overrideVendorGitCheckout;
+ } else
+ { }));
};
-in
-{
- buildDepsOnly = craneLib: args: if builtins.pathExists ./guests/${guest}/.no_${args.pname} then
- { }
- else let
- cargoLocks = generateCargoLocks craneLib args;
- in craneLib.buildDepsOnly (cargoLocks // (builtins.removeAttrs args ["overrideVendorCargoPackage" "overrideVendorGitCheckout"]) // {
+in {
+ buildDepsOnly = craneLib: args:
+ if builtins.pathExists ./guests/${guest}/.no_${args.pname} then
+ { }
+ else
+ let cargoLocks = generateCargoLocks craneLib args;
+ in craneLib.buildDepsOnly (cargoLocks // (builtins.removeAttrs args [
+ "overrideVendorCargoPackage"
+ "overrideVendorGitCheckout"
+ ]) // {
postUnpack = ''
${args.postUnpack or ""}
ln -s ../../../guests ./source/zkvms/${args.pname}/guest/
@@ -117,126 +118,157 @@ in
cd zkvms/${args.pname}/guest
cargo check --release --offline --all-targets
'';
- } // {
- pname = "${args.pname}_${guest}";
- });
-
- buildPackage = craneLib: args: if builtins.pathExists ./guests/${guest}/.no_${args.pname} then
- pkgs.writeShellApplication {
- name = "${args.pname}_${guest}";
+ } // {
+ pname = "${args.pname}_${guest}";
+ });
+
+ buildPackage = craneLib: args:
+ if builtins.pathExists ./guests/${guest}/.no_${args.pname} then
+ pkgs.writeShellApplication {
+ name = "${args.pname}_${guest}";
+
+ text =
+ let contents = builtins.readFile ./guests/${guest}/.no_${args.pname};
+ in ''
+ echo 'Guest program "${guest}" has blacklisted ${args.pname} zkVM!'
+
+ '' + (if builtins.stringLength contents > 1 then ''
+ echo
+ echo 'Reason:'
+ echo '${contents}'
+ '' else
+ "");
+ }
+ else
+ let
+ pname = "${args.pname}_${guest}";
+ cargoLocks = generateCargoLocks craneLib args;
+ in craneLib.buildPackage (cargoLocks // {
+ phases = [
+ "unpackPhase"
+ "patchPhase"
+ "configurePhase" # Standard phases
+ "cargoSetupGuest"
+ "buildGuestPhase" # Custom phases
+ "buildPhase"
+ "checkPhase"
+ "installPhase"
+ "fixupPhase" # Standard phases
+ ];
+
+ cargoSetupGuest = let
+ appended = ''
+ [features]
+ guest = [] # Only used in jolt
+ no_std = ["zkp/no_std"]
+ ${args.pname} = ["zkp/${args.pname}"]
+ '';
+ in ''
+ pushd zkvms/${args.pname}/guest
- text = let
- contents = builtins.readFile ./guests/${guest}/.no_${args.pname};
- in ''
- echo 'Guest program "${guest}" has blacklisted ${args.pname} zkVM!'
+ cp '${cargoLocks.cargoLockDrv}/Cargo.lock' Cargo.lock
+ cargo add --path "../../../guests/${guest}" --rename zkp --offline
+ echo '${appended}' >> Cargo.toml
- '' + (if builtins.stringLength contents > 1 then ''
- echo
- echo 'Reason:'
- echo '${contents}'
- '' else ''
- '');
- }
- else let
- pname = "${args.pname}_${guest}";
- cargoLocks = generateCargoLocks craneLib args;
- in craneLib.buildPackage (cargoLocks // {
- phases = [
- "unpackPhase" "patchPhase" "configurePhase" # Standard phases
- "cargoSetupGuest" "buildGuestPhase" # Custom phases
- "buildPhase" "checkPhase" "installPhase" "fixupPhase" # Standard phases
- ];
-
- cargoSetupGuest = let
- appended = ''
- [features]
- guest = [] # Only used in jolt
- no_std = ["zkp/no_std"]
- ${args.pname} = ["zkp/${args.pname}"]
+ popd
'';
- in ''
- pushd zkvms/${args.pname}/guest
-
- cp '${cargoLocks.cargoLockDrv}/Cargo.lock' Cargo.lock
- cargo add --path "../../../guests/${guest}" --rename zkp --offline
- echo '${appended}' >> Cargo.toml
-
- popd
- '';
-
- buildGuestPhase = ''
- export INPUTS_DIR="$PWD/guests/${guest}"
- export ZKVM="${args.pname}" GUEST="${guest}"
- OLD_PATH="$PATH"
-
- ${if args ? guestToolchain then "export PATH=\"${args.guestToolchain}/bin:$PATH\"" else ""}
- pushd zkvms/${args.pname}/guest
- runHook preBuildGuest
+ buildGuestPhase = ''
+ export INPUTS_DIR="$PWD/guests/${guest}"
+ export ZKVM="${args.pname}" GUEST="${guest}"
+ OLD_PATH="$PATH"
- ${args.buildGuestCommand or "cargo build --release --features ${args.pname}"} \
- ${if args ? guestTarget then "--target " + args.guestTarget else ""} \
- ${args.guestExtraArgs or ""}
-
- ${if args ? guestTarget then "ln -s ../../guest/target/${args.guestTarget}/release/guest ../host/src/guest" else ""}
- unset RUSTUP_TOOLCHAIN RUSTFLAGS CARGO_ENCODED_RUSTFLAGS
- export PATH="$OLD_PATH"
+ ${if args ? guestToolchain then
+ ''export PATH="${args.guestToolchain}/bin:$PATH"''
+ else
+ ""}
+
+ pushd zkvms/${args.pname}/guest
+ runHook preBuildGuest
+
+ ${
+ args.buildGuestCommand or "cargo build --release --features ${args.pname}"
+ } \
+ ${
+ if args ? guestTarget then
+ "--target " + args.guestTarget
+ else
+ ""
+ } \
+ ${args.guestExtraArgs or ""}
+
+ ${if args ? guestTarget then
+ "ln -s ../../guest/target/${args.guestTarget}/release/guest ../host/src/guest"
+ else
+ ""}
+ unset RUSTUP_TOOLCHAIN RUSTFLAGS CARGO_ENCODED_RUSTFLAGS
+ export PATH="$OLD_PATH"
- runHook postBuildGuest
- popd
- '';
+ runHook postBuildGuest
+ popd
+ '';
- buildPhase = ''
- export INPUTS_DIR="$PWD/guests/${guest}"
- export ZKVM="${args.pname}" GUEST="${guest}"
- OLD_PATH="$PATH"
+ buildPhase = ''
+ export INPUTS_DIR="$PWD/guests/${guest}"
+ export ZKVM="${args.pname}" GUEST="${guest}"
+ OLD_PATH="$PATH"
- ${if args ? hostToolchain then "export PATH=\"${args.hostToolchain}/bin:$PATH\"" else ""}
+ ${if args ? hostToolchain then
+ ''export PATH="${args.hostToolchain}/bin:$PATH"''
+ else
+ ""}
- pushd zkvms/${args.pname}/host
- runHook preBuild
+ pushd zkvms/${args.pname}/host
+ runHook preBuild
- cargo --version
- cargo build --release
+ cargo --version
+ cargo build --release
- export PATH="$OLD_PATH"
+ export PATH="$OLD_PATH"
- runHook postBuild
- popd
- '';
+ runHook postBuild
+ popd
+ '';
- installPhase = let
- preRunBinaries =
- if args ? preRunBinaries && builtins.length args.preRunBinaries > 0 then
- "export PATH=\"\\$PATH:" + pkgs.lib.makeBinPath args.preRunBinaries + "\""
+ installPhase = let
+ preRunBinaries = if args ? preRunBinaries
+ && builtins.length args.preRunBinaries > 0 then
+ ''export PATH="\$PATH:'' + pkgs.lib.makeBinPath args.preRunBinaries
+ + ''"''
else
"";
- preRunLibraries =
- if args ? preRunLibraries && builtins.length args.preRunLibraries > 0 then
- "export LD_LIBRARY_PATH=\"\\$LD_LIBRARY_PATH:" + pkgs.lib.makeLibraryPath args.preRunLibraries + "\""
+ preRunLibraries = if args ? preRunLibraries
+ && builtins.length args.preRunLibraries > 0 then
+ ''export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:''
+ + pkgs.lib.makeLibraryPath args.preRunLibraries + ''"''
else
"";
- in ''
- runHook preInstall
-
- mkdir -p "$out"/bin
- for bin in $(find . -type f -regex "./zkvms/.*release/[^/]*" -executable -print)
- do
- mv "$bin" "$out"/bin/
- done
-
- cat <<EOF > "$out"/bin/${pname}
- #!/usr/bin/env sh
- ${preRunBinaries}
- ${preRunLibraries}
- ${args.preRun or ""}
- "$out"/bin/host-${args.pname} \$@
- EOF
- chmod +x "$out"/bin/${pname}
-
- runHook postInstall
- '';
+ in ''
+ runHook preInstall
+
+ mkdir -p "$out"/bin
+ for bin in $(find . -type f -regex "./zkvms/.*release/[^/]*" -executable -print)
+ do
+ mv "$bin" "$out"/bin/
+ done
+
+ cat <<EOF > "$out"/bin/${pname}
+ #!/usr/bin/env sh
+ ${preRunBinaries}
+ ${preRunLibraries}
+ ${args.preRun or ""}
+ "$out"/bin/host-${args.pname} \$@
+ EOF
+ chmod +x "$out"/bin/${pname}
+
+ runHook postInstall
+ '';
- doNotPostBuildInstallCargoBinaries = true;
- } // (builtins.removeAttrs args ["overrideVendorCargoPackage" "overrideVendorGitCheckout"]) // { inherit pname; });
+ doNotPostBuildInstallCargoBinaries = true;
+ } // (builtins.removeAttrs args [
+ "overrideVendorCargoPackage"
+ "overrideVendorGitCheckout"
+ ]) // {
+ inherit pname;
+ });
}
diff --git a/zkvms/jolt/default.nix b/zkvms/jolt/default.nix
index 2e1ad9c..e749ac4 100644
--- a/zkvms/jolt/default.nix
+++ b/zkvms/jolt/default.nix
@@ -1,32 +1,18 @@
-{ zkvmLib,
- stdenv,
- lib,
- just,
- metacraft-labs,
- pkg-config,
- openssl,
- craneLib-default,
-}:
+{ zkvmLib, stdenv, lib, just, metacraft-labs, pkg-config, openssl
+, craneLib-default, }:
let
commonArgs = {
pname = "jolt";
inherit (metacraft-labs.jolt) version;
- src = with lib.fileset; toSource {
- root = ../..;
- fileset = intersection (gitTracked ../..) (unions [
- ./.
- ../../guests
- ../../guests_macro
- ../../zkvms_host_io
- ]);
- };
-
- nativeBuildInputs = [
- metacraft-labs.jolt
- openssl
- pkg-config
- ];
+ src = with lib.fileset;
+ toSource {
+ root = ../..;
+ fileset = intersection (gitTracked ../..)
+ (unions [ ./. ../../guests ../../guests_macro ../../zkvms_host_io ]);
+ };
+
+ nativeBuildInputs = [ metacraft-labs.jolt openssl pkg-config ];
};
craneLib = craneLib-default.overrideToolchain metacraft-labs.jolt;
@@ -35,27 +21,25 @@ let
sed -i '/dependencies.guest/,+1d' zkvms/jolt/host/Cargo.toml
'';
});
-in
- zkvmLib.buildPackage craneLib (commonArgs
- // {
- inherit cargoArtifacts;
-
- guestTarget = "riscv32im-jolt-zkvm-elf";
- guestExtraArgs = "--features guest";
-
- preBuildGuest = ''
- RUSTUP_TOOLCHAIN="x"
- RUSTFLAGS="-C link-arg=-T${./guest/guest.ld} -C passes=lower-atomic -C panic=abort -C strip=symbols -C opt-level=z"
- export RUSTUP_TOOLCHAIN RUSTFLAGS
- '';
-
- preRunBinaries = [
- metacraft-labs.jolt
- ];
-
- preRun = ''
- export ELF_PATH="$out/bin/guest"
- '';
-
- doCheck = false;
- })
+in zkvmLib.buildPackage craneLib (commonArgs // {
+ inherit cargoArtifacts;
+
+ guestTarget = "riscv32im-jolt-zkvm-elf";
+ guestExtraArgs = "--features guest";
+
+ preBuildGuest = ''
+ RUSTUP_TOOLCHAIN="x"
+ RUSTFLAGS="-C link-arg=-T${
+ ./guest/guest.ld
+ } -C passes=lower-atomic -C panic=abort -C strip=symbols -C opt-level=z"
+ export RUSTUP_TOOLCHAIN RUSTFLAGS
+ '';
+
+ preRunBinaries = [ metacraft-labs.jolt ];
+
+ preRun = ''
+ export ELF_PATH="$out/bin/guest"
+ '';
+
+ doCheck = false;
+})
diff --git a/zkvms/nexus/default.nix b/zkvms/nexus/default.nix
index 7693836..44afc96 100644
--- a/zkvms/nexus/default.nix
+++ b/zkvms/nexus/default.nix
@@ -1,56 +1,38 @@
-{ zkvmLib,
- stdenv,
- lib,
- just,
- metacraft-labs,
- openssl,
- pkg-config,
- craneLib-default,
-}:
+{ zkvmLib, stdenv, lib, just, metacraft-labs, openssl, pkg-config
+, craneLib-default, }:
let
commonArgs = {
pname = "nexus";
inherit (metacraft-labs.nexus) version;
- src = with lib.fileset; toSource {
- root = ../..;
- fileset = intersection (gitTracked ../..) (unions [
- ./.
- ../../guests
- ../../guests_macro
- ../../zkvms_host_io
- ]);
- };
-
- nativeBuildInputs = [
- metacraft-labs.nexus
- openssl
- pkg-config
- ];
+ src = with lib.fileset;
+ toSource {
+ root = ../..;
+ fileset = intersection (gitTracked ../..)
+ (unions [ ./. ../../guests ../../guests_macro ../../zkvms_host_io ]);
+ };
+
+ nativeBuildInputs = [ metacraft-labs.nexus openssl pkg-config ];
};
craneLib = craneLib-default.overrideToolchain metacraft-labs.nexus;
cargoArtifacts = zkvmLib.buildDepsOnly craneLib commonArgs;
-in
- zkvmLib.buildPackage craneLib (commonArgs
- // rec {
- inherit cargoArtifacts;
+in zkvmLib.buildPackage craneLib (commonArgs // rec {
+ inherit cargoArtifacts;
- preBuildGuest = ''
- export RUSTFLAGS="-C link-arg=-T${guest/guest.ld}"
- '';
+ preBuildGuest = ''
+ export RUSTFLAGS="-C link-arg=-T${guest/guest.ld}"
+ '';
- guestTarget = "riscv32i-unknown-none-elf";
- guestExtraArgs = "--features no_std";
+ guestTarget = "riscv32i-unknown-none-elf";
+ guestExtraArgs = "--features no_std";
- preRunLibraries = [
- openssl
- ];
+ preRunLibraries = [ openssl ];
- preRun = ''
- export ELF_PATH="$out/bin/guest"
- export PKG_CONFIG_PATH='${openssl.dev}/lib/pkgconfig' # Dirty hack
- '';
+ preRun = ''
+ export ELF_PATH="$out/bin/guest"
+ export PKG_CONFIG_PATH='${openssl.dev}/lib/pkgconfig' # Dirty hack
+ '';
- doCheck = false;
- })
+ doCheck = false;
+})
diff --git a/zkvms/risc0/default.nix b/zkvms/risc0/default.nix
index 4227fc4..6a4b796 100644
--- a/zkvms/risc0/default.nix
+++ b/zkvms/risc0/default.nix
@@ -1,50 +1,35 @@
-{ zkvmLib,
- stdenv,
- lib,
- metacraft-labs,
- pkg-config,
- craneLib-default,
-}:
+{ zkvmLib, stdenv, lib, metacraft-labs, pkg-config, craneLib-default, }:
let
commonArgs = {
pname = "risc0";
inherit (metacraft-labs.risc0) version;
- src = with lib.fileset; toSource {
- root = ../..;
- fileset = intersection (gitTracked ../..) (unions [
- ./.
- ../../guests
- ../../guests_macro
- ../../zkvms_host_io
- ]);
- };
+ src = with lib.fileset;
+ toSource {
+ root = ../..;
+ fileset = intersection (gitTracked ../..)
+ (unions [ ./. ../../guests ../../guests_macro ../../zkvms_host_io ]);
+ };
};
craneLib = craneLib-default.overrideToolchain metacraft-labs.risc0;
cargoArtifacts = zkvmLib.buildDepsOnly craneLib commonArgs;
-in
- zkvmLib.buildPackage craneLib (commonArgs
- // {
- inherit cargoArtifacts;
+in zkvmLib.buildPackage craneLib (commonArgs // {
+ inherit cargoArtifacts;
- nativeBuildInputs = [
- metacraft-labs.risc0
- ];
+ nativeBuildInputs = [ metacraft-labs.risc0 ];
- guestToolchain = metacraft-labs.risc0-rust;
+ guestToolchain = metacraft-labs.risc0-rust;
- guestTarget = "riscv32im-risc0-zkvm-elf";
+ guestTarget = "riscv32im-risc0-zkvm-elf";
- preBuild = ''
- # Used for verification
- # https://github.com/risc0/risc0/blob/881e512732eca72849b2d0e263a1242aba3158af/risc0/build/src/lib.rs#L192-L195
- export GUEST_ID="$(${metacraft-labs.risc0}/bin/r0vm --elf ./host/src/guest --id)"
- '';
+ preBuild = ''
+ # Used for verification
+ # https://github.com/risc0/risc0/blob/881e512732eca72849b2d0e263a1242aba3158af/risc0/build/src/lib.rs#L192-L195
+ export GUEST_ID="$(${metacraft-labs.risc0}/bin/r0vm --elf ./host/src/guest --id)"
+ '';
- preRunBinaries = [
- metacraft-labs.risc0
- ];
+ preRunBinaries = [ metacraft-labs.risc0 ];
- doCheck = false;
- })
+ doCheck = false;
+})
diff --git a/zkvms/sp1/default.nix b/zkvms/sp1/default.nix
index 86a019c..5ab313e 100644
--- a/zkvms/sp1/default.nix
+++ b/zkvms/sp1/default.nix
@@ -1,43 +1,28 @@
-{ zkvmLib,
- stdenv,
- lib,
- just,
- metacraft-labs,
- pkg-config,
- craneLib-default,
- gnum4,
-}:
+{ zkvmLib, stdenv, lib, just, metacraft-labs, pkg-config, craneLib-default
+, gnum4, }:
let
commonArgs = {
pname = "sp1";
inherit (metacraft-labs.sp1) version;
- nativeBuildInputs = [
- metacraft-labs.sp1
- gnum4
- ];
+ nativeBuildInputs = [ metacraft-labs.sp1 gnum4 ];
- src = with lib.fileset; toSource {
- root = ../..;
- fileset = intersection (gitTracked ../..) (unions [
- ./.
- ../../guests
- ../../guests_macro
- ../../zkvms_host_io
- ]);
- };
+ src = with lib.fileset;
+ toSource {
+ root = ../..;
+ fileset = intersection (gitTracked ../..)
+ (unions [ ./. ../../guests ../../guests_macro ../../zkvms_host_io ]);
+ };
extraLockfile = "${metacraft-labs.sp1}/Cargo.lock";
};
craneLib = craneLib-default.overrideToolchain metacraft-labs.sp1;
cargoArtifacts = zkvmLib.buildDepsOnly craneLib commonArgs;
-in
- zkvmLib.buildPackage craneLib (commonArgs
- // {
- inherit cargoArtifacts;
+in zkvmLib.buildPackage craneLib (commonArgs // {
+ inherit cargoArtifacts;
- guestTarget = "riscv32im-succinct-zkvm-elf";
+ guestTarget = "riscv32im-succinct-zkvm-elf";
- doCheck = false;
- })
+ doCheck = false;
+})
diff --git a/zkvms/zkm/default.nix b/zkvms/zkm/default.nix
index 64f148b..7fc52f6 100644
--- a/zkvms/zkm/default.nix
+++ b/zkvms/zkm/default.nix
@@ -1,16 +1,5 @@
-{ zkvmLib,
- lib,
- just,
- metacraft-labs,
- metacraft-labs-old,
- rust-bin,
- protobuf,
- pkg-config,
- openssl,
- buildGoModule,
- fetchFromGitHub,
- craneLib-default,
-}:
+{ zkvmLib, lib, just, metacraft-labs, metacraft-labs-old, rust-bin, protobuf
+, pkg-config, openssl, buildGoModule, fetchFromGitHub, craneLib-default, }:
let
zkm_libsnark = buildGoModule rec {
pname = "zkm_libsnark";
@@ -40,63 +29,48 @@ let
pname = "zkm";
inherit (metacraft-labs.zkm) version;
- src = with lib.fileset; toSource {
- root = ../..;
- fileset = intersection (gitTracked ../..) (unions [
- ./.
- ../../guests
- ../../guests_macro
- ../../zkvms_host_io
- ]);
- };
+ src = with lib.fileset;
+ toSource {
+ root = ../..;
+ fileset = intersection (gitTracked ../..)
+ (unions [ ./. ../../guests ../../guests_macro ../../zkvms_host_io ]);
+ };
- nativeBuildInputs = [
- pkg-config
- openssl
- protobuf
- metacraft-labs.zkm
- ];
+ nativeBuildInputs = [ pkg-config openssl protobuf metacraft-labs.zkm ];
overrideVendorGitCheckout = ps: drv:
- if drv.src.shortRev == "155221d" && builtins.any (p: p.name == "zkm-sdk") ps then
- drv.overrideAttrs (_: {
- patches = [
- ./0001-chore-Increase-DEGREE_BITS_RANGE.patch
- ];
- })
+ if drv.src.shortRev == "155221d"
+ && builtins.any (p: p.name == "zkm-sdk") ps then
+ drv.overrideAttrs
+ (_: { patches = [ ./0001-chore-Increase-DEGREE_BITS_RANGE.patch ]; })
else
drv;
};
craneLib = craneLib-default.overrideToolchain metacraft-labs.zkm;
cargoArtifacts = zkvmLib.buildDepsOnly craneLib commonArgs;
-in
- zkvmLib.buildPackage craneLib (commonArgs
- // {
- inherit cargoArtifacts;
+in zkvmLib.buildPackage craneLib (commonArgs // {
+ inherit cargoArtifacts;
- guestTarget = "mips-zkm-zkvm-elf";
+ 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"
- '';
+ 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"
+ '';
- preBuild = ''
- export RUSTFLAGS="-L ${zkm_libsnark}/lib"
- '';
+ preBuild = ''
+ export RUSTFLAGS="-L ${zkm_libsnark}/lib"
+ '';
- hostToolchain = metacraft-labs-old.zkm;
+ hostToolchain = metacraft-labs-old.zkm;
- preRunLibraries = [
- openssl
- zkm_libsnark
- ];
+ preRunLibraries = [ openssl zkm_libsnark ];
- preRun = ''
- export ELF_PATH="$out/bin/guest"
- export PKG_CONFIG_PATH='${openssl.dev}/lib/pkgconfig' # Dirty hack
- '';
+ preRun = ''
+ export ELF_PATH="$out/bin/guest"
+ export PKG_CONFIG_PATH='${openssl.dev}/lib/pkgconfig' # Dirty hack
+ '';
- doCheck = false;
- })
+ doCheck = false;
+})
diff --git a/zkvms/zkwasm/default.nix b/zkvms/zkwasm/default.nix
index b353bf7..88947ba 100644
--- a/zkvms/zkwasm/default.nix
+++ b/zkvms/zkwasm/default.nix
@@ -1,65 +1,46 @@
-{ zkvmLib,
- lib,
- rust-bin,
- metacraft-labs,
- wasm-pack,
- wasm-bindgen-cli,
- binaryen,
- craneLib-default,
- stdenv,
-}:
+{ zkvmLib, lib, rust-bin, metacraft-labs, wasm-pack, wasm-bindgen-cli, binaryen
+, craneLib-default, stdenv, }:
let
commonArgs = rec {
pname = "zkwasm";
inherit (metacraft-labs.zkwasm) version;
- src = with lib.fileset; toSource {
- root = ../..;
- fileset = intersection (gitTracked ../..) (unions [
- ./.
- ../../guests
- ../../guests_macro
- ../../zkvms_host_io
- ]);
- };
+ src = with lib.fileset;
+ toSource {
+ root = ../..;
+ fileset = intersection (gitTracked ../..)
+ (unions [ ./. ../../guests ../../guests_macro ../../zkvms_host_io ]);
+ };
};
rust-toolchain = rust-bin.nightly."2024-04-09".default.override {
- targets = ["wasm32-unknown-unknown"];
+ targets = [ "wasm32-unknown-unknown" ];
};
craneLib = craneLib-default.overrideToolchain rust-toolchain;
cargoArtifacts = zkvmLib.buildDepsOnly craneLib commonArgs;
-in
- zkvmLib.buildPackage craneLib (commonArgs
- // {
- inherit cargoArtifacts;
+in zkvmLib.buildPackage craneLib (commonArgs // {
+ inherit cargoArtifacts;
- nativeBuildInputs = [
- metacraft-labs.zkwasm
- wasm-pack
- wasm-bindgen-cli
- binaryen
- ];
+ nativeBuildInputs =
+ [ metacraft-labs.zkwasm wasm-pack wasm-bindgen-cli binaryen ];
- preBuildGuest = ''
- # Workaround from
- # https://github.com/rustwasm/wasm-pack/issues/1335
- export WASM_PACK_CACHE=.wasm-pack-cache
- '';
+ preBuildGuest = ''
+ # Workaround from
+ # https://github.com/rustwasm/wasm-pack/issues/1335
+ export WASM_PACK_CACHE=.wasm-pack-cache
+ '';
- buildGuestCommand = "wasm-pack build --release --frozen --features zkwasm";
+ buildGuestCommand = "wasm-pack build --release --frozen --features zkwasm";
- preBuild = ''
- export GUEST_PATH="$out/pkg/guest_bg.wasm"
- '';
+ preBuild = ''
+ export GUEST_PATH="$out/pkg/guest_bg.wasm"
+ '';
- postInstall = ''
- mv zkvms/zkwasm/guest/pkg "$out"/
- '';
+ postInstall = ''
+ mv zkvms/zkwasm/guest/pkg "$out"/
+ '';
- preRunBinaries = [
- metacraft-labs.zkwasm
- ];
+ preRunBinaries = [ metacraft-labs.zkwasm ];
- doCheck = false;
- })
+ doCheck = false;
+})