diff --git a/rust-overlay.nix b/rust-overlay.nix index 3d043e0..50fffa6 100644 --- a/rust-overlay.nix +++ b/rust-overlay.nix @@ -67,7 +67,7 @@ let getComponentsWithFixedPlatform = pkgs: pkgname: stdenv: let pkg = pkgs.${pkgname}; - srcInfo = pkg.target.${toRustTargetCompat stdenv.targetPlatform} or pkg.target."*"; + srcInfo = pkg.target.${toRustTargetCompat stdenv.hostPlatform} or pkg.target."*"; components = srcInfo.components or []; componentNamesList = builtins.map (pkg: pkg.pkg) (builtins.filter (pkg: (pkg.target != "*")) components); @@ -78,7 +78,7 @@ let let inherit (super.lib) unique; pkg = pkgs.${pkgname}; - srcInfo = pkg.target.${toRustTargetCompat stdenv.targetPlatform} or pkg.target."*"; + srcInfo = pkg.target.${toRustTargetCompat stdenv.hostPlatform} or pkg.target."*"; extensions = srcInfo.extensions or []; extensionNamesList = unique (builtins.map (pkg: pkg.pkg) extensions); in @@ -127,13 +127,15 @@ let in extensionsToInstall; - getComponents = pkgs: pkgname: targets: extensions: targetExtensions: stdenv: fetchurl: + getComponents = pkgs: pkgname: extraTargets: extensions: targetExtensions: stdenv: fetchurl: let inherit (builtins) head map; inherit (super.lib) flatten remove subtractLists unique; targetExtensionsToInstall = checkMissingExtensions pkgs pkgname stdenv targetExtensions; extensionsToInstall = checkMissingExtensions pkgs pkgname stdenv extensions; - hostTargets = [ "*" (toRustTargetCompat stdenv.hostPlatform) (toRustTargetCompat stdenv.targetPlatform) ]; + hostTargets = [ "*" (toRustTargetCompat stdenv.hostPlatform) ]; + implicitTargets = subtractLists hostTargets [ (toRustTargetCompat stdenv.targetPlatform) ]; + targets = unique (extraTargets ++ implicitTargets); pkgTuples = flatten (getTargetPkgTuples pkgs pkgname hostTargets targets stdenv); extensionTuples = flatten (map (name: getTargetPkgTuples pkgs name hostTargets targets stdenv) extensionsToInstall); targetExtensionTuples = flatten (map (name: getTargetPkgTuples pkgs name targets targets stdenv) targetExtensionsToInstall);