diff --git a/pkgs/build-support/rust/build-rust-package/default.nix b/pkgs/build-support/rust/build-rust-package/default.nix index a1727c91ba36..40b7a6181232 100644 --- a/pkgs/build-support/rust/build-rust-package/default.nix +++ b/pkgs/build-support/rust/build-rust-package/default.nix @@ -150,21 +150,24 @@ stdenv.mkDerivation ((removeAttrs args [ "depsExtraArgs" "cargoUpdateHook" "carg strictDeps = true; - meta = { - # default to Rust's platforms - platforms = rustc.meta.platforms ++ [ - # Platforms without host tools from - # https://doc.rust-lang.org/nightly/rustc/platform-support.html - "armv7a-darwin" - "armv5tel-linux" "armv7a-linux" "m68k-linux" "mips-linux" - "mips64-linux" "mipsel-linux" "mips64el-linux" "riscv32-linux" - "armv6l-netbsd" "mipsel-netbsd" "riscv64-netbsd" - "x86_64-redox" - "wasm32-wasi" - ]; - badPlatforms = [ + meta = meta // { + badPlatforms = meta.badPlatforms or [] ++ [ # Rust is currently unable to target the n32 ABI lib.systems.inspect.patterns.isMips64n32 ]; - } // meta; + } // lib.optionalAttrs (rustc.meta ? platforms) { + # default to Rust's platforms + platforms = lib.intersectLists + meta.platforms or lib.platforms.all + (rustc.meta.platforms ++ [ + # Platforms without host tools from + # https://doc.rust-lang.org/nightly/rustc/platform-support.html + "armv7a-darwin" + "armv5tel-linux" "armv7a-linux" "m68k-linux" "mips-linux" + "mips64-linux" "mipsel-linux" "mips64el-linux" "riscv32-linux" + "armv6l-netbsd" "mipsel-netbsd" "riscv64-netbsd" + "x86_64-redox" + "wasm32-wasi" + ]); + }; })