diff options
| author | Kamen Mladenov <kamen@syndamia.com> | 2025-02-27 11:35:14 +0200 |
|---|---|---|
| committer | Kamen Mladenov <kamen@syndamia.com> | 2025-02-27 15:08:11 +0200 |
| commit | 39ec264c0d90555237debff519cc890b755a0646 (patch) | |
| tree | 09a9602f5637804fa7bd876fcd971ecb9d0afffe | |
| parent | 3b037df28ccdd905db1e2668b68e78fe07ef6eee (diff) | |
| download | zkVMs-benchmarks-39ec264c0d90555237debff519cc890b755a0646.tar zkVMs-benchmarks-39ec264c0d90555237debff519cc890b755a0646.tar.gz zkVMs-benchmarks-39ec264c0d90555237debff519cc890b755a0646.zip | |
chore: Nix fmt
| -rw-r--r-- | flake.nix | 110 | ||||
| -rw-r--r-- | guest.nix | 20 | ||||
| -rw-r--r-- | rust-format-all.nix | 5 | ||||
| -rw-r--r-- | zkvmLib.nix | 426 | ||||
| -rw-r--r-- | zkvms/jolt/default.nix | 80 | ||||
| -rw-r--r-- | zkvms/nexus/default.nix | 66 | ||||
| -rw-r--r-- | zkvms/risc0/default.nix | 55 | ||||
| -rw-r--r-- | zkvms/sp1/default.nix | 43 | ||||
| -rw-r--r-- | zkvms/zkm/default.nix | 88 | ||||
| -rw-r--r-- | zkvms/zkwasm/default.nix | 75 |
10 files changed, 443 insertions, 525 deletions
@@ -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; + }; } @@ -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; +}) |
