{ description = "STM32U575ZI-Q Rust Embedded Development Environment"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; }; outputs = { self, nixpkgs }: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; }; in { devShells.${system}.default = pkgs.mkShell { packages = with pkgs; [ # Base toolchain rustup llvm gcc gnumake cmake pkg-config python3 git curl wget unzip # ARM embedded cross toolchain gcc-arm-embedded # Flashing / Debug openocd probe-rs cargo-binutils cargo-generate flip-link ]; shellHook = '' # Set up Rust target rustup target add thumbv7em-none-eabihf 2>/dev/null || true # Ensure probe-rs binary is in PATH if ! command -v probe-rs >/dev/null; then echo "⚠️ probe-rs not found! (check nix installation)" fi export RUST_TARGET=thumbv7em-none-eabihf export CARGO_TARGET_DIR=target export PATH=$PATH:${pkgs.gcc-arm-embedded}/bin rustc --version arm-none-eabi-gcc --version | head -n1 echo "cargo build --release --target thumbv8m.main-none-eabihf" echo "cargo flash --release --chip STM32U575ZI" echo "export DEFMT_LOG=info" echo "cargo run --bin main" echo "probe-rs run --chip STM32U575ZITxQ target/thumbv8m.main-none-eabihf/release/main" ''; }; }; }