| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- {
- description = "Deterministic Rust WASM build";
- inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
- crane.url = "github:ipetkov/crane";
- rust-overlay = {
- url = "github:oxalica/rust-overlay";
- inputs.nixpkgs.follows = "nixpkgs";
- };
- flake-utils.url = "github:numtide/flake-utils";
- };
- outputs =
- {
- self,
- nixpkgs,
- crane,
- rust-overlay,
- flake-utils,
- ...
- }:
- flake-utils.lib.eachDefaultSystem (
- system:
- let
- pkgs = import nixpkgs {
- inherit system;
- overlays = [ (import rust-overlay) ];
- };
- rustToolchain = pkgs.rust-bin.stable."1.92.0".default.override {
- targets = [ "wasm32-unknown-unknown" ];
- };
- craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain;
- src = pkgs.lib.cleanSourceWith {
- src = ./.;
- filter =
- path: type:
- let
- baseName = builtins.baseNameOf path;
- parentDir = builtins.baseNameOf (builtins.dirOf path);
- in
- (parentDir == "proof" && pkgs.lib.hasSuffix ".zk.bin" baseName)
- || (craneLib.filterCargoSources path type);
- name = "source";
- };
- commonArgs = {
- inherit src;
- strictDeps = true;
- CARGO_BUILD_TARGET = "wasm32-unknown-unknown";
- CARGO_INCREMENTAL = "0";
- RUSTFLAGS = "";
- cargoExtraArgs = "--lib";
- doCheck = false;
- };
- cargoArtifacts = craneLib.buildDepsOnly commonArgs;
- wasmLib = craneLib.buildPackage (
- commonArgs
- // {
- inherit cargoArtifacts;
- installPhaseCommand = ''
- mkdir -p $out
- cp target/wasm32-unknown-unknown/release/*.wasm $out
- '';
- }
- );
- in
- {
- packages.default = wasmLib;
- devShells.default = craneLib.devShell {
- inputsFrom = [ wasmLib ];
- packages = with pkgs; [
- nixfmt-rfc-style
- ];
- CARGO_BUILD_TARGET = "wasm32-unknown-unknown";
- };
- }
- );
- }
|