Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
};

packages = perSystemPkgs (pkgs: {
risc0-rust = pkgs.risc0-rust;
rust-bin-risc0-latest = pkgs.rust-bin.risc0.latest;
default = inputs.self.packages.${pkgs.system}.rust-bin-risc0-latest;
});
Expand Down
3 changes: 3 additions & 0 deletions overlay.nix
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,7 @@ in
cargoExtraArgs = (args.cargoExtraArgs or "") + " --target riscv32im-risc0-zkvm-elf";
}
);

# NOTE: Test package for building risc0's rust fork from source.
risc0-rust = prev.callPackage ./pkgs/rust.nix { };
}
52 changes: 52 additions & 0 deletions pkgs/rust.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# risc0-rust.nix
{
lib,
rustc,
fetchFromGitHub,
}:

let
version = "1.85.0";

risc0Src = fetchFromGitHub {
owner = "risc0";
repo = "rust";
rev = "r0.${version}";
fetchSubmodules = true;
sha256 = "sha256-uxo6Sx9I+x9Gi9/JttRLIzAa+WzTmJ5DTempRwrsp/U=";
};

in
rustc.unwrapped.overrideAttrs (oldAttrs: {
pname = "risc0-rustc";
src = risc0Src // {
# Override the passthru on the source to indicate it's not a release tarball
passthru = (risc0Src.passthru or {}) // {
isReleaseTarball = false;
};
};
inherit version;

# Override configure flags to add RISC Zero target
configureFlags =
let
# Remove existing --target flag and add our own with RISC Zero target included
flagsWithoutTarget = builtins.filter
(flag: !(lib.hasPrefix "--target=" flag))
oldAttrs.configureFlags;

# Get the existing target list and add our target
existingTargets = "x86_64-unknown-linux-gnu,wasm32-unknown-unknown,wasm32v1-none,bpfel-unknown-none,bpfeb-unknown-none";
newTargets = "${existingTargets},riscv32im-risc0-zkvm-elf";
in
flagsWithoutTarget ++ [
"--target=${newTargets}"
];

# Add RISC Zero environment variables
preBuild =
(oldAttrs.preBuild or "")
+ ''
export CARGO_TARGET_RISCV32IM_RISC0_ZKVM_ELF_RUSTFLAGS="-Cpasses=lower-atomic"
'';
})
Loading