at main 1.4 kB view raw
1{ 2 rustPlatform, 3 lib, 4 wasm-pack, 5 binaryen, 6 wasm-bindgen-cli_0_2_104, 7 lld, 8 stdenv, 9 ... 10}: 11let 12 # First derivation: wasm-pack build 13 wasmBuild = rustPlatform.buildRustPackage { 14 pname = "faunu-wasm-build"; 15 version = "main"; 16 17 src = lib.fileset.toSource { 18 root = ../.; 19 fileset = lib.fileset.unions [ 20 ../Cargo.toml 21 ../Cargo.lock 22 ../src 23 ../.cargo 24 ../embedded 25 ]; 26 }; 27 28 cargoLock = { 29 lockFile = ../Cargo.lock; 30 outputHashes = { 31 "vfs-0.12.1" = "sha256-arpgwVsBhnn/2qawTR+NeyWRJOipr0kafg7VaiISufM="; 32 "jacquard-0.9.4" = "sha256-TEu4coueWzzkmFCkGb610Xrly7n8LUGMa5tdde/OElg="; 33 "nu-cmd-base-0.109.2" = "sha256-Q+6PxSmeiV/K6QP0I9xCiqZM37+p+CRLs7LMBUWurPo="; 34 }; 35 }; 36 37 nativeBuildInputs = [wasm-pack wasm-bindgen-cli_0_2_104 lld]; 38 39 phases = ["unpackPhase" "buildPhase"]; 40 41 buildPhase = '' 42 mkdir -p $out 43 HOME=$TMPDIR wasm-pack build --target web --release --no-opt -d $out 44 ''; 45 }; 46 47 # Second derivation: wasm-opt 48 wasmOpt = stdenv.mkDerivation { 49 pname = "faunu-wasm"; 50 version = "main"; 51 52 src = wasmBuild; 53 54 nativeBuildInputs = [binaryen]; 55 56 phases = ["unpackPhase" "buildPhase"]; 57 58 buildPhase = '' 59 mkdir -p $out 60 cp -r --no-preserve=ownership,mode ${wasmBuild}/* $out/ 61 wasm-opt $out/faunu_bg.wasm -O4 -all -o $out/faunu_bg.wasm 62 ''; 63 }; 64in 65 wasmOpt