From ee610f5476dbab5a25e2532e77cca165dd141d08 Mon Sep 17 00:00:00 2001 From: Kamen Mladenov Date: Thu, 30 Jan 2025 11:04:10 +0200 Subject: feat(flake): Replace zkVM-helpers with zkvmLib --- flake.nix | 124 +------------------------------------------------------------- 1 file changed, 1 insertion(+), 123 deletions(-) (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix index a6d8282..d59043f 100644 --- a/flake.nix +++ b/flake.nix @@ -25,135 +25,13 @@ craneLib-default = crane.mkLib pkgs; callPackage = pkgs.lib.callPackageWith pkgs; - fixDeps = commonArgs: commonArgs // { - postUnpack = '' - ${commonArgs.postUnpack or ""} - ln -s ../../../guests ./source/zkvms/${commonArgs.pname}/guest/ - ln -s ../../../guests_macro ./source/zkvms/${commonArgs.pname}/guest/ - ''; - - preBuild = '' - ${commonArgs.preBuild or ""} - cd zkvms/${commonArgs.pname}/host - cargo check --release --offline --all-targets - ''; - }; - - withGeneratedLockfile = guest: commonArgs: with pkgs; { - cargoVendorDir = craneLib-default.vendorCargoDeps { - src = stdenv.mkDerivation { - name = "cargolock"; - src = lib.fileset.toSource { - root = ./.; - fileset = ./.; - }; - - installPhase = '' - mkdir -p "$out" - cd zkvms/${commonArgs.pname} - cat ./host/Cargo.lock > "$out/Cargo.lock" - tail -n +4 ./guest/Cargo.lock >> "$out/Cargo.lock" - tail -n +4 ../../guests/${guest}/Cargo.lock >> "$out/Cargo.lock" - ''; - }; - }; - } // commonArgs; - - # 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 = guest: currentPackage: let - hostBin = currentPackage.hostBin or ("host-" + currentPackage.pname); - in with currentPackage; { - phases = [ - "unpackPhase" # Standard phases - "linkGuest" # Custom phase - "patchPhase" "configurePhase" # Standard phases - "buildGuestPhase" # Custom phase - "buildPhase" "checkPhase" "installPhase" "fixupPhase" # Standard phases - ]; - - linkGuest = '' - echo 'zkp = { path = "../../../guests/${guest}", package = "${guest}" }' >> zkvms/${currentPackage.pname}/guest/Cargo.toml - ''; - - buildGuestPhase = '' - pushd zkvms/${currentPackage.pname}/guest - runHook preBuildGuest - - ${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 - ''; - - buildPhase = '' - export INPUTS_DIR="$PWD/guests/${guest}" - - pushd zkvms/${currentPackage.pname}/host - runHook preBuild - - cargo build --release - - runHook postBuild - popd - ''; - - 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 - for bin in $(find . -type f -regex "./zkvms/.*release/[^/]*" -executable -print) - do - mv "$bin" "$out"/bin/ - done - - cat < "$out"/bin/${pname} - #!/usr/bin/env sh - ${preRunBinaries} - ${preRunLibraries} - ${currentPackage.preRun or ""} - "$out"/bin/${hostBin} \$@ - EOF - chmod +x "$out"/bin/${pname} - - runHook postInstall - ''; - - doNotPostBuildInstallCargoBinaries = true; - } // currentPackage; - createPackages = guestName: let guest = if guestName == null then "graph_coloring" else guestName; postfix = if guestName == null then "" else "/" + guest; args-zkVM = { inherit craneLib-default; - zkVM-helpers = { - inherit fixDeps; - withGeneratedLockfile = withGeneratedLockfile guest; - withCustomPhases = withCustomPhases guest; - }; + zkvmLib = (import ./zkvmLib.nix) pkgs guest; }; in { "risc0${postfix}" = callPackage ./zkvms/risc0/default.nix args-zkVM; -- cgit v1.2.3