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