Files
stm32_rust/flake.nix
2026-04-28 14:49:48 +02:00

67 lines
1.8 KiB
Nix

{
description = "STM32U575ZI-Q Rust Embedded Development Environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
};
outputs = { self, nixpkgs, rust-overlay}: let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
overlays = [ (import rust-overlay) ];
};
rust = pkgs.rust-bin.stable.latest.default.override {
targets = [ "thumbv8m.main-none-eabihf" ];
extensions = [ "rust-src" "rustfmt" "clippy" "rust-analyzer" ];
};
in {
devShells.${system}.default = pkgs.mkShell {
packages = with pkgs; [
# Base toolchain
rust
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 = ''
echo ">>> STM32 DevShell"
export RUST_TARGET=thumbv8m.main-none-eabihf
export CARGO_TARGET_DIR=target
export DEFMT_LOG=info
export PATH=$PATH:${pkgs.gcc-arm-embedded}/bin
export RUST_SRC_PATH="$(rustc --print sysroot)/lib/rustlib/src/rust/library"
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 "cargo run --bin main"
echo "probe-rs run --chip STM32U575ZITxQ target/thumbv8m.main-none-eabihf/release/main"
echo "probe-rs erase --chip STM32U575ZITxQ"
echo "target/**/build/embassy-stm32-*/out/_generated.rs"
'';
};
};
}