Download flake.nix from Grumpyaloha/synapse-wasm: direct link, hf CLI and curl.
- Browser
- Download file 4.99 kB
-
https://huggingface.co/Grumpyaloha/synapse-wasm/resolve/main/flake.nix
- Command line
-
hf download hf://Grumpyaloha/synapse-wasm/flake.nix
-
curl -L -o flake.nix https://huggingface.co/Grumpyaloha/synapse-wasm/resolve/main/flake.nix
4.99 kB
| { | |
| 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; }; | |
| # Rust stable with WASM targets. | |
| # Two targets, two purposes: | |
| # wasm32-unknown-unknown → bare WASM for MCU (wasm3) and browser | |
| # wasm32-wasip1 → WASI preview 1 for gateway/host (wasmtime) | |
| 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; [ | |
| # ── Rust compilation ────────────────────────────────────── | |
| rustToolchain | |
| # ── WASM runtimes ───────────────────────────────────────── | |
| wasmtime # Full WASI + Component Model runtime | |
| # Tests gateway/host modules with all capabilities | |
| # ── WASM binary tools ───────────────────────────────────── | |
| binaryen # wasm-opt: aggressive size optimization | |
| # wasm-opt -Oz -o small.wasm big.wasm | |
| # Critical for MCU — can cut binaries 40-60% | |
| wabt # wasm2wat / wat2wasm: bytecode inspection | |
| # When something breaks, read the WAT | |
| wasm-tools # Bytecode Alliance multi-tool: | |
| # validate, component lower, strip, compose | |
| # component lower = component → core wasm for MCU | |
| # ── Web frontend ────────────────────────────────────────── | |
| trunk # Dev server for Leptos/Yew WASM apps | |
| # Handles wasm-bindgen, assets, hot reload | |
| wasm-pack # WASM npm package builder (JS interop) | |
| wasm-bindgen-cli | |
| # ── Size profiling ──────────────────────────────────────── | |
| twiggy # WASM code size profiler | |
| # twiggy top module.wasm — largest functions | |
| # twiggy dominators module.wasm — dep graph | |
| # RP2350 budget: ~400KB for module + heap | |
| # ── Build deps ──────────────────────────────────────────── | |
| cmake # For building wasm3 from source | |
| pkg-config | |
| openssl | |
| # ── Dev workflow ────────────────────────────────────────── | |
| cargo-watch # cargo watch -x test — auto-test on save | |
| ]; | |
| 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 "" | |
| ''; | |
| }; | |
| } | |
| ); | |
| } | |