diff --git a/.nix/flake.nix b/.nix/flake.nix index ba9bd6271..da61ceafa 100644 --- a/.nix/flake.nix +++ b/.nix/flake.nix @@ -34,11 +34,48 @@ inherit system overlays; }; - rustc-wasm = pkgs.rust-bin.stable.latest.default.override { + rustExtensions = [ "rust-src" "rust-analyzer" "clippy" "cargo" ]; + + rust = pkgs.rust-bin.stable.latest.default.override { targets = [ "wasm32-unknown-unknown" ]; - extensions = [ "rust-src" "rust-analyzer" "clippy" "cargo" ]; + extensions = rustExtensions; }; + rustNightlyPkg = pkgs.rust-bin.nightly."2025-06-23".default.override { + extensions = rustExtensions ++ [ "rustc-dev" "llvm-tools" ]; + }; + + rustPlatformNightly = pkgs.makeRustPlatform { + cargo = rustNightlyPkg; + rustc = rustNightlyPkg; + }; + + rustc_codegen_spirv = (rustPlatformNightly.buildRustPackage.override { + stdenv = pkgs.llvmPackages.stdenv; + }) (finalAttrs: { + pname = "rustc_codegen_spirv"; + version = "0-unstable-2025-08-04"; + src = pkgs.fetchFromGitHub { + owner = "Rust-GPU"; + repo = "rust-gpu"; + rev = "df1628a032d22c864397417c2871b74d602af986"; + hash = "sha256-AFt3Nc+NqK8DxNUhDBcOUmk3XDVcoToVeFIMYNszdbY="; + }; + cargoHash = "sha256-en3BYJWQabH064xeAwYQrvcr6EuWg/QjvsG+Jd6HHCk"; + + cargoBuildFlags = [ "-p" "rustc_codegen_spirv" ]; + + doCheck = false; + }); + + cargoRustGpuBuild = pkgs.writeShellScriptBin "cargo-rust-gpu" '' + #!${pkgs.bash}/bin/bash + + export PATH="${pkgs.lib.makeBinPath [rustNightlyPkg]}" + export RUSTFLAGS="-Zcodegen-backend=${rustc_codegen_spirv}/lib/librustc_codegen_spirv.so" + exec cargo +nightly $@ + ''; + libcef = pkgs.libcef.overrideAttrs (finalAttrs: previousAttrs: { version = "139.0.17"; gitRevision = "6c347eb"; @@ -85,7 +122,7 @@ # Development tools that don't need to be in LD_LIBRARY_PATH buildTools = [ - rustc-wasm + rust pkgs.nodejs pkgs.nodePackages.npm pkgs.binaryen @@ -97,6 +134,8 @@ # Linker pkgs.mold + + cargoRustGpuBuild ]; # Development tools that don't need to be in LD_LIBRARY_PATH devTools = with pkgs; [