{ description = "Minimal Rust development environment for Bevy project"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlay.url = "github:oxalica/rust-overlay"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { 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" "clippy" ]; }; in { devShells.default = pkgs.mkShell { nativeBuildInputs = with pkgs; [ pkg-config ]; buildInputs = with pkgs; [ rustup rustToolchain clang llvmPackages_latest.bintools udev alsa-lib vulkan-loader xorg.libX11 xorg.libXcursor xorg.libXi xorg.libXrandr libxkbcommon wayland glibc.dev glib.dev ]; shellHook = '' export PATH=$PATH:''${CARGO_HOME:-~/.cargo}/bin export LD_LIBRARY_PATH=${ pkgs.lib.makeLibraryPath [ pkgs.vulkan-loader pkgs.libxkbcommon pkgs.wayland pkgs.alsa-lib pkgs.udev ] }:$LD_LIBRARY_PATH export LIBCLANG_PATH="${pkgs.llvmPackages_latest.libclang.lib}/lib" export BINDGEN_EXTRA_CLANG_ARGS="-I${pkgs.glibc.dev}/include -I${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include -I${pkgs.glib.dev}/include/glib-2.0 -I${pkgs.glib.out}/lib/glib-2.0/include/" export RUSTFLAGS="-C link-arg=-fuse-ld=lld" echo "Bevy development environment loaded!" ''; }; } ); }