| { |
| description = "Synapse Agriculture — WASM-native farm stack development environment"; |
|
|
| inputs = { |
| nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
| rust-overlay.url = "github:oxalica/rust-overlay"; |
| flake-utils.url = "github:numtide/flake-utils"; |
| }; |
|
|
| outputs = { self, nixpkgs, rust-overlay, flake-utils }: |
| flake-utils.lib.eachDefaultSystem (system: |
| let |
| overlays = [ (import rust-overlay) ]; |
| pkgs = import nixpkgs { inherit system overlays; }; |
|
|
| |
| |
| |
| |
| rustToolchain = pkgs.rust-bin.stable.latest.default.override { |
| extensions = [ "rust-src" "rust-analyzer" ]; |
| targets = [ |
| "wasm32-unknown-unknown" |
| "wasm32-wasip1" |
| ]; |
| }; |
|
|
| in |
| { |
| devShells.default = pkgs.mkShell { |
| buildInputs = with pkgs; [ |
| |
| rustToolchain |
|
|
| |
| wasmtime |
| |
|
|
| |
| binaryen |
| |
| |
|
|
| wabt |
| |
|
|
| wasm-tools |
| |
| |
|
|
| |
| trunk |
| |
| wasm-pack |
| wasm-bindgen-cli |
|
|
| |
| twiggy |
| |
| |
| |
|
|
| |
| cmake |
| pkg-config |
| openssl |
|
|
| |
| cargo-watch |
| ]; |
|
|
| shellHook = '' |
| echo "" |
| echo " ┌──────────────────────────────────────────────┐" |
| echo " │ Synapse Agriculture — WASM Dev Environment │" |
| echo " └──────────────────────────────────────────────┘" |
| echo "" |
| echo " Rust: $(rustc --version 2>/dev/null || echo 'loading...')" |
| echo " wasmtime: $(wasmtime --version 2>/dev/null || echo 'loading...')" |
| echo " wasm-opt: $(wasm-opt --version 2>/dev/null || echo 'loading...')" |
| echo "" |
| echo " Build targets:" |
| echo " wasm32-unknown-unknown → MCU (wasm3) + browser" |
| echo " wasm32-wasip1 → gateway/host (wasmtime)" |
| echo "" |
| echo " Quick start:" |
| echo " cargo test all native tests" |
| echo " cargo build -p synapse-sensor --target wasm32-unknown-unknown --release" |
| echo " wasm-opt -Oz -o opt.wasm target/.../synapse_sensor.wasm" |
| echo " twiggy top opt.wasm size check" |
| echo "" |
| ''; |
| }; |
| } |
| ); |
| } |
|
|