aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorKamen Mladenov <kamen@syndamia.com>2025-01-21 17:31:02 +0200
committerKamen Mladenov <kamen@syndamia.com>2025-01-21 17:31:02 +0200
commitb0608ca2c0d8f739bead99eb93adc520ce2e1df1 (patch)
tree3f0381fccc5f700b5696ef6c878aa0e9ed706f00 /flake.nix
parentcf9d2b10b8fe0670e9b3b47b2326c4d587401985 (diff)
downloadzkVMs-benchmarks-b0608ca2c0d8f739bead99eb93adc520ce2e1df1.tar
zkVMs-benchmarks-b0608ca2c0d8f739bead99eb93adc520ce2e1df1.tar.gz
zkVMs-benchmarks-b0608ca2c0d8f739bead99eb93adc520ce2e1df1.zip
feat(flake): Rework withCustomPhases variables
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix43
1 files changed, 35 insertions, 8 deletions
diff --git a/flake.nix b/flake.nix
index f7b4a92..02a601a 100644
--- a/flake.nix
+++ b/flake.nix
@@ -39,17 +39,32 @@
};
- # Overrides build and install phases for use with zkVMs
+ # Creates custom build and install phases
+ # Adds the "buildGuest" phase
+ # Adds the "run" pseudo-phase (running your zkVM is done with a shell script,
+ # this "phase" allows one to add things to the script)
# Requirements:
# - zkVM is inside zkvms/pname/
# - guest crate is located at zkvms/pname/guest and is named "guest"
- withCustomPhases = currentPackage: with currentPackage; {
+ withCustomPhases = currentPackage: let
+ hostBin = currentPackage.hostBin or ("host-" + currentPackage.pname);
+ in with currentPackage; {
+ phases = [
+ "unpackPhase" "patchPhase" "configurePhase" # Standard phases
+ "buildGuestPhase" # Custom phase
+ "buildPhase" "checkPhase" "installPhase" "fixupPhase" # Standard phases
+ ];
+
buildGuestPhase = ''
- pushd guest
+ pushd zkvms/${currentPackage.pname}/guest
runHook preBuildGuest
- cargo build --release --target ${currentPackage.guestTarget} ${currentPackage.extraGuestArgs or ""}
- ln -s ../../guest/target/${currentPackage.guestTarget}/release/guest ../host/src/guest
+ ${currentPackage.buildGuestCommand or "cargo build --release"} \
+ ${if currentPackage ? guestTarget then "--target " + currentPackage.guestTarget else ""} \
+ ${currentPackage.guestExtraArgs or ""}
+
+ ${if currentPackage ? guestTarget then "ln -s ../../guest/target/${currentPackage.guestTarget}/release/guest ../host/src/guest" else ""}
+ unset RUSTUP_TOOLCHAIN RUSTFLAGS CARGO_ENCODED_RUSTFLAGS
runHook postBuildGuest
popd
@@ -59,7 +74,6 @@
export INPUTS="$PWD/Vertices-010.in"
pushd zkvms/${currentPackage.pname}
- runPhase buildGuestPhase
runHook preBuild
cargo build --bin ${hostBin} --release
@@ -68,7 +82,18 @@
popd
'';
- installPhase = ''
+ installPhase = let
+ preRunBinaries =
+ if currentPackage ? preRunBinaries && builtins.length currentPackage.preRunBinaries > 0 then
+ "export PATH=\"\\$PATH:" + pkgs.lib.makeBinPath currentPackage.preRunBinaries + "\""
+ else
+ "";
+ preRunLibraries =
+ if currentPackage ? preRunLibraries && builtins.length currentPackage.preRunLibraries > 0 then
+ "export LD_LIBRARY_PATH=\"\\$LD_LIBRARY_PATH:" + pkgs.lib.makeLibraryPath currentPackage.preRunLibraries + "\""
+ else
+ "";
+ in ''
runHook preInstall
mkdir -p "$out"/bin
@@ -79,7 +104,9 @@
cat <<EOF > "$out"/bin/${pname}
#!/usr/bin/env sh
- ${if currentPackage ? preRun then preRun else ""}
+ ${preRunBinaries}
+ ${preRunLibraries}
+ ${currentPackage.preRun or ""}
"$out"/bin/${hostBin} \$@
EOF
chmod +x "$out"/bin/${pname}