Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
5b04e78
feat(pkgs/zkwasm): Implement package for version unstable-2024-10-19
Syndamia Jan 16, 2025
7c9d162
feat(pkgs/zkwasm): Fetch toolchain file instead of hard-coding it
Syndamia Nov 27, 2024
9d56e9c
feat(pkgs/jolt): Implement package for version unstable-2024-11-22
Syndamia Dec 4, 2024
145f368
feat(pkgs): Move zkVMs from craneLib-stable to craneLib-nightly
Syndamia Dec 4, 2024
38a3bb0
feat(pkgs/zkm): Implement package for version unstable-2024-12-04
Syndamia Dec 5, 2024
e1bd788
feat(pkgs/nexus): Implement package for version unstable-2024-12-04
Syndamia Dec 5, 2024
219cc89
chore(pkgs): Rename wasm32-wasi to wasm32-wasip1
Syndamia Dec 5, 2024
6a8ebbf
feat(pkgs/jolt): Useful install phase
Syndamia Dec 9, 2024
b7ca6bf
feat(pkgs): Outsource zkVMs args to a variable
Syndamia Dec 9, 2024
f8bdd07
feat(pkgs): Replace fetchurl for rust-toolchain with fetchGitHubFile …
Syndamia Dec 9, 2024
f317f33
feat(pkgs): Move rust-bin from pkgs to args-zkVM
Syndamia Dec 9, 2024
0693173
fix(pkgs): Update zkVM pkgs inputs
Syndamia Dec 9, 2024
86bc47c
feat(pkgs/jolt): Better outputs and usage
Syndamia Dec 9, 2024
082be5d
feat(pkgs/zkm): Output codebase, target, cargo and helper scripts
Syndamia Dec 9, 2024
bf40ade
feat(pkgs/nexus): Implement package for version unstable-2024-12-04
Syndamia Dec 11, 2024
e18c509
feat(shells/nexus): Implement shell of nexus zkVM
Syndamia Dec 12, 2024
4e1adfd
feat(pkgs): Move install phase zkVM logic to a function
Syndamia Dec 12, 2024
479fbe5
fix(pkgs/zkm): Downgrade Cargo.lock version
Syndamia Dec 12, 2024
4191381
feat(shells): Implement jolt, zkm and zkwasm zkVM dev shells
Syndamia Dec 12, 2024
574fb78
fix(pkgs/jolt): Move new project dependency patching to patch phase
Syndamia Dec 12, 2024
50cc195
feat(pkgs/nexus): Patch new projects nexus-rt dependency
Syndamia Dec 12, 2024
d8c5512
fix(pkgs/zkm): Allow predefining values for variables
Syndamia Dec 12, 2024
53863cd
feat(pkgs/zkm): Add comment on mips-musl
Syndamia Dec 12, 2024
b8e4a77
feat(pkgs/sp1-rust): Implement fetching prebuilt sp1 rust compiler v1…
Syndamia Dec 13, 2024
f741fc2
feat(pkgs/sp1): Implement for version 2024-12-07
Syndamia Dec 13, 2024
89948b5
feat(shells): Implement sp1 dev shell
Syndamia Dec 13, 2024
39b2dd0
feat(pkgs/risc0-rust): Implement fetching prebuilt risc0 rust compile…
Syndamia Dec 16, 2024
fb2c229
feat(pkgs/risc0): Implement for version unstable-2024-12-12
Syndamia Dec 16, 2024
19c2d70
feat(shells): Implement risc0 dev shell
Syndamia Dec 16, 2024
df187d7
chore(all-packages): Fix formatting of zkVM helper attributes
Syndamia Dec 17, 2024
1ddadb0
chore(all-packages): Flatten arguments for fetchGitHubFile function
Syndamia Dec 17, 2024
d488666
chore(risc0-rust): Move leading version number to src.tag
Syndamia Dec 17, 2024
7524008
chore(risc0): Formatting updates
Syndamia Dec 17, 2024
5d7bede
fix(jolt): Remove call to rustup
Syndamia Dec 17, 2024
ebbcb31
feat(pkgs/jolt-guest-rust): Implement fetching prebuilt jolt std gues…
Syndamia Dec 17, 2024
ac447f4
fix(pkgs/jolt): Make cargo command select the correct binary dependin…
Syndamia Dec 17, 2024
c3c15a3
fix(pkgs/jolt): Make cargo script which updates path instead of rustc…
Syndamia Dec 17, 2024
0986656
chore(README): Replace (un)ordered lists with heading
Syndamia Dec 19, 2024
c7221b9
fix(pkgs): Make zkVM packages available only on Linux
Syndamia Dec 19, 2024
7a37014
feat(README): Add tables about zkVM packages
Syndamia Dec 19, 2024
5a46b30
feat(pkgs/jolt): Update to latest version (2024-12-18)
Syndamia Jan 6, 2025
e5cdefc
feat(pkgs/nexus): Update to latest version (2024-12-18)
Syndamia Jan 6, 2025
bf36d12
feat(pkgs/risc0): Update to latest version (2024-12-21)
Syndamia Jan 6, 2025
706adb2
feat(pkgs/sp1): Update to latest version (2024-12-23)
Syndamia Jan 6, 2025
57e6387
feat(pkgs/zkm-rust): Implement fetching prebuilt zkm rust compiler v2…
Syndamia Jan 7, 2025
b71ec4b
feat(pkgs/zkm): Update to latest version (2025-01-05)
Syndamia Jan 7, 2025
79cfb53
fix(pkgs/jolt): Fix cargo script RUSTUP_TOOLCHAIN logic
Syndamia Jan 16, 2025
4fccdef
fix(pkgs/jolt): Use runtime path instead of compile-time one
Syndamia Jan 16, 2025
29afd27
style: Reformat zkVM-related source
Syndamia Jan 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 79 additions & 51 deletions README.md

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@
pkgs = final;
inherit config;
};
devShells.nexus = import ./shells/nexus.nix { pkgs = final; };
devShells.jolt = import ./shells/jolt.nix { pkgs = final; };
devShells.zkm = import ./shells/zkm.nix { pkgs = final; };
devShells.zkwasm = import ./shells/zkwasm.nix { pkgs = final; };
devShells.sp1 = import ./shells/sp1.nix { pkgs = final; };
devShells.risc0 = import ./shells/risc0.nix { pkgs = final; };
};
};
}
67 changes: 67 additions & 0 deletions packages/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@
inherit (self'.legacyPackages)
rustPlatformStable
craneLib-stable
craneLib-nightly
cardano-node
cardano-cli
pkgs-with-rust-overlay
;
python3Packages = pkgs.python3Packages;

Expand Down Expand Up @@ -127,6 +129,60 @@
};
polkadot = polkadot-generic { };
polkadot-fast = polkadot-generic { enableFastRuntime = true; };

fetchGitHubFile =
{
owner,
repo,
rev,
file,
hash,
}:
pkgs.fetchurl {
url = "https://raw.githubusercontent.com/${owner}/${repo}/${rev}/${file}";
inherit hash;
};

fetchGitHubReleaseAsset =
{
owner,
repo,
tag,
asset,
hash,
}:
pkgs.fetchzip {
url = "https://github.com/${owner}/${repo}/releases/download/${tag}/${asset}";
inherit hash;
stripRoot = false;
};

installSourceAndCargo = rust-toolchain: rec {
installPhaseCommand = ''
mkdir -p "$out"/bin
# Install source code
cp -r /build/source/. "$out"
# Install cargo commands
ln -s "${rust-toolchain}"/bin/* "$out"/bin/
# Install binaries
for result in target/release/*
do
[ "''${result:15:5}" != 'crane' -a -f "$result" -a -x "$result" ] \
&& ln -s "$out/$result" "$out"/bin/
done
'';
};

args-zkVM = {
inherit (pkgs-with-rust-overlay) rust-bin;
inherit craneLib-nightly;
inherit fetchGitHubFile;
inherit installSourceAndCargo;
};

args-zkVM-rust = {
inherit fetchGitHubReleaseAsset;
};
in
{
legacyPackages.metacraft-labs =
Expand Down Expand Up @@ -186,6 +242,17 @@
leap = callPackage ./leap/default.nix { };
eos-vm = callPackage ./eos-vm/default.nix { };
cdt = callPackage ./cdt/default.nix { };

zkwasm = callPackage ./zkwasm/default.nix args-zkVM;
jolt-guest-rust = callPackage ./jolt-guest-rust/default.nix args-zkVM-rust;
jolt = callPackage ./jolt/default.nix (args-zkVM // { inherit jolt-guest-rust; });
zkm-rust = callPackage ./zkm-rust/default.nix args-zkVM-rust;
zkm = callPackage ./zkm/default.nix (args-zkVM // { inherit zkm-rust; });
nexus = callPackage ./nexus/default.nix args-zkVM;
sp1-rust = callPackage ./sp1-rust/default.nix args-zkVM-rust;
sp1 = callPackage ./sp1/default.nix (args-zkVM // { inherit sp1-rust; });
risc0-rust = callPackage ./risc0-rust/default.nix args-zkVM-rust;
risc0 = callPackage ./risc0/default.nix (args-zkVM // { inherit risc0-rust; });
}
// lib.optionalAttrs hostPlatform.isx86 rec {
inherit
Expand Down
2 changes: 1 addition & 1 deletion packages/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
rust-nightly = pkgs-with-rust-overlay.rust-bin.nightly.latest.default.override {
extensions = [ "rust-src" ];
targets = [
"wasm32-wasi"
"wasm32-wasip1"
"wasm32-unknown-unknown"
];
};
Expand Down
35 changes: 35 additions & 0 deletions packages/jolt-guest-rust/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
stdenv,
fetchGitHubReleaseAsset,
autoPatchelfHook,
zlib,
...
}:
let
nightly-hash = "8af9d45d5e09a04832cc9b2e1df993fd1ce49d02";
in
stdenv.mkDerivation rec {
name = "jolt-guest-rust"; # Used when guest is compiled with std
version = "nightly-${nightly-hash}";

nativeBuildInputs = [
autoPatchelfHook
stdenv.cc.cc.lib
zlib
];

installPhase = ''
runHook preInstall
mkdir -p $out
cp -r ./* $out/
runHook postInstall
'';

src = fetchGitHubReleaseAsset {
owner = "a16z";
repo = "rust";
tag = "${version}";
asset = "rust-toolchain-x86_64-unknown-linux-gnu.tar.gz";
hash = "sha256-aAhqLAvbeIh60R/E1c85KxWmYDH2SOpXhQChW3y3wgQ=";
};
}
71 changes: 71 additions & 0 deletions packages/jolt/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
{
rust-bin,
craneLib-nightly,
fetchFromGitHub,
fetchGitHubFile,
installSourceAndCargo,
pkg-config,
openssl,
jolt-guest-rust,
...
}:
let
commonArgs = rec {
pname = "jolt";
version = "unstable-2024-12-18";

nativeBuildInputs = [
pkg-config
openssl
];

preBuild = ''
sed -i 's/%2F/\//g' $CARGO_HOME/config.toml
'';

src = fetchFromGitHub {
owner = "a16z";
repo = "jolt";
rev = "f1e5ab3cb2f55eb49c17c249039294184d27fdba";
hash = "sha256-yr+JzZ3GIbwncEzfcrDmfxzph3YAI8dNLxcCXWT8520=";
fetchSubmodules = true;
};
};

rust-toolchain = rust-bin.fromRustupToolchainFile (fetchGitHubFile {
inherit (commonArgs.src) owner repo rev;
file = "rust-toolchain.toml";
hash = "sha256-Fyj+Bp/dt3epuTN9kXN+r7Z3gzXYCDrcVEPWTr1sQqk=";
});
craneLib = craneLib-nightly.overrideToolchain rust-toolchain;
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
in
craneLib.buildPackage (
commonArgs
// (installSourceAndCargo rust-toolchain)
// rec {
inherit cargoArtifacts;

postPatch = ''
sed -i 's|package =.*git = "https://github.com/a16z/jolt"|path = "'$out'"|' src/main.rs
sed -i '44,46d' jolt-core/src/host/toolchain.rs
'';

# Different toolchain is used when guest has std features
# https://github.com/a16z/jolt/blob/fa45507aaddb1815bafd54332e4b14173a7f8699/jolt-core/src/host/mod.rs#L132-L134
postInstall = ''
rm $out/bin/cargo
cat <<EOF > $out/bin/cargo
#!/bin/sh
if [ -n "\''${RUSTUP_TOOLCHAIN+x}" ]
then
export PATH="${jolt-guest-rust}/rust/build/host/stage2/bin:\$PATH"
fi
${rust-toolchain}/bin/cargo \$@
EOF
chmod +x $out/bin/cargo
'';

doCheck = false;
}
)
Loading