diff --git a/pkgs/build-support/rust/lib/default.nix b/pkgs/build-support/rust/lib/default.nix index 5eac208cc31c..77397f9b7220 100644 --- a/pkgs/build-support/rust/lib/default.nix +++ b/pkgs/build-support/rust/lib/default.nix @@ -15,6 +15,21 @@ rec { else if platform.isDarwin then "macos" else platform.parsed.kernel.name; + # https://doc.rust-lang.org/reference/conditional-compilation.html#target_family + toTargetFamily = platform: + if platform ? rustc.platform.target-family + then + ( + # Since https://github.com/rust-lang/rust/pull/84072 + # `target-family` is a list instead of single value. + let + f = platform.rustc.platform.target-family; + in + if builtins.isList f then f else [ f ] + ) + else lib.optional platform.isUnix "unix" + ++ lib.optional platform.isWindows "windows"; + # Returns the name of the rust target, even if it is custom. Adjustments are # because rust has slightly different naming conventions than we do. toRustTarget = platform: let