diff --git a/pkgs/build-support/build-mozilla-mach/default.nix b/pkgs/build-support/build-mozilla-mach/default.nix index e484f6b0bde2..c192b9eb97f3 100644 --- a/pkgs/build-support/build-mozilla-mach/default.nix +++ b/pkgs/build-support/build-mozilla-mach/default.nix @@ -58,9 +58,7 @@ in pkgsCross, # wasm32 rlbox python3, runCommand, - rustc, rust-cbindgen, - rustPlatform, unzip, which, wrapGAppsHook3, @@ -201,9 +199,25 @@ assert elfhackSupport -> isElfhackPlatform stdenv; let inherit (lib) enableFeature; + rustPackages = + pkgs: + (pkgs.rust.override ( + # aarch64-darwin firefox crashes on loading favicons due to a llvm 21 bug: + # https://github.com/NixOS/nixpkgs/issues/453372 + # https://bugzilla.mozilla.org/show_bug.cgi?id=1995582#c16 + lib.optionalAttrs (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) { + llvmPackages = pkgs.llvmPackages_20; + } + )).packages.stable; + + toRustC = pkgs: (rustPackages pkgs).rustc; + + rustc = toRustC pkgs; + inherit (rustPackages pkgs) rustPlatform; + # Target the LLVM version that rustc is built with for LTO. llvmPackages0 = rustc.llvmPackages; - llvmPackagesBuildBuild0 = pkgsBuildBuild.rustc.llvmPackages; + llvmPackagesBuildBuild0 = (toRustC pkgsBuildBuild).llvmPackages; # Force the use of lld and other llvm tools for LTO llvmPackages = llvmPackages0.override { @@ -218,7 +232,7 @@ let # LTO requires LLVM bintools including ld.lld and llvm-ar. buildStdenv = overrideCC llvmPackages.stdenv ( llvmPackages.stdenv.cc.override { - bintools = if ltoSupport then buildPackages.rustc.llvmPackages.bintools else stdenv.cc.bintools; + bintools = if ltoSupport then (toRustC buildPackages).llvmPackages.bintools else stdenv.cc.bintools; } );