We're already using pkgsBuildBuild, and we'll soon be using pkgsBuildTarget, so for consistency, change buildPackages and targetPackages to their corresponding two-component names.
···11{ lib
22, stdenv
33-, buildPackages
44-, targetPackages
33+, pkgsBuildHost
44+, pkgsTargetTarget
55}:
6677rec {
···1616 # As a workaround for https://github.com/rust-lang/rust/issues/89626 use lld on pkgsStatic aarch64
1717 shouldUseLLD = platform: platform.isAarch64 && platform.isStatic && !stdenv.isDarwin;
18181919- ccForBuild = "${buildPackages.stdenv.cc}/bin/${buildPackages.stdenv.cc.targetPrefix}cc";
2020- cxxForBuild = "${buildPackages.stdenv.cc}/bin/${buildPackages.stdenv.cc.targetPrefix}c++";
1919+ ccForBuild = "${pkgsBuildHost.stdenv.cc}/bin/${pkgsBuildHost.stdenv.cc.targetPrefix}cc";
2020+ cxxForBuild = "${pkgsBuildHost.stdenv.cc}/bin/${pkgsBuildHost.stdenv.cc.targetPrefix}c++";
2121 linkerForBuild = ccForBuild;
22222323 ccForHost = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc";
2424 cxxForHost = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++";
2525 linkerForHost = if shouldUseLLD stdenv.targetPlatform
2626 && !stdenv.cc.bintools.isLLVM
2727- then "${buildPackages.lld}/bin/ld.lld"
2727+ then "${pkgsBuildHost.lld}/bin/ld.lld"
2828 else ccForHost;
29293030- # Unfortunately we must use the dangerous `targetPackages` here
3030+ # Unfortunately we must use the dangerous `pkgsTargetTarget` here
3131 # because hooks are artificially phase-shifted one slot earlier
3232 # (they go in nativeBuildInputs, so the hostPlatform looks like
3333 # a targetPlatform to them).
3434- ccForTarget = "${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc";
3535- cxxForTarget = "${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}c++";
3636- linkerForTarget = if shouldUseLLD targetPackages.stdenv.targetPlatform
3737- && !targetPackages.stdenv.cc.bintools.isLLVM # whether stdenv's linker is lld already
3838- then "${buildPackages.lld}/bin/ld.lld"
3434+ ccForTarget = "${pkgsTargetTarget.stdenv.cc}/bin/${pkgsTargetTarget.stdenv.cc.targetPrefix}cc";
3535+ cxxForTarget = "${pkgsTargetTarget.stdenv.cc}/bin/${pkgsTargetTarget.stdenv.cc.targetPrefix}c++";
3636+ linkerForTarget = if shouldUseLLD pkgsTargetTarget.stdenv.targetPlatform
3737+ && !pkgsTargetTarget.stdenv.cc.bintools.isLLVM # whether stdenv's linker is lld already
3838+ then "${pkgsBuildHost.lld}/bin/ld.lld"
3939 else ccForTarget;
40404141 rustBuildPlatform = stdenv.buildPlatform.rust.rustcTarget;
···5656 setEnv = ''
5757 env \
5858 ''
5959- # Due to a bug in how splicing and targetPackages works, in
6060- # situations where targetPackages is irrelevant
6161- # targetPackages.stdenv.cc is often simply wrong. We must omit
5959+ # Due to a bug in how splicing and pkgsTargetTarget works, in
6060+ # situations where pkgsTargetTarget is irrelevant
6161+ # pkgsTargetTarget.stdenv.cc is often simply wrong. We must omit
6262 # the following lines when rustTargetPlatform collides with
6363 # rustHostPlatform.
6464 + lib.optionalString (rustTargetPlatform != rustHostPlatform) ''
···7474 "CXX_${stdenv.buildPlatform.rust.cargoEnvVarTarget}=${cxxForBuild}" \
7575 "CARGO_TARGET_${stdenv.buildPlatform.rust.cargoEnvVarTarget}_LINKER=${linkerForBuild}" \
7676 "CARGO_BUILD_TARGET=${rustBuildPlatform}" \
7777- "HOST_CC=${buildPackages.stdenv.cc}/bin/cc" \
7878- "HOST_CXX=${buildPackages.stdenv.cc}/bin/c++" \
7777+ "HOST_CC=${pkgsBuildHost.stdenv.cc}/bin/cc" \
7878+ "HOST_CXX=${pkgsBuildHost.stdenv.cc}/bin/c++" \
7979 '';
8080 };
8181} // lib.mapAttrs (old: new: platform: