70 lines
2.0 KiB
Nix
70 lines
2.0 KiB
Nix
{
|
|
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; [
|
|
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!"
|
|
'';
|
|
};
|
|
}
|
|
);
|
|
}
|