1{ stdenv, callPackage, recurseIntoAttrs, makeRustPlatform, llvm, fetchurl
2, targets ? []
3, targetToolchains ? []
4, targetPatches ? []
5}:
6
7let
8 rustPlatform = recurseIntoAttrs (makeRustPlatform (callPackage ./bootstrap.nix {}));
9 version = "1.24.0";
10 cargoVersion = "0.24.0";
11 src = fetchurl {
12 url = "https://static.rust-lang.org/dist/rustc-${version}-src.tar.gz";
13 sha256 = "17v3jpyky8vkkgai5yd2zr8zl87qpgj6dx99gx27x1sf0kv7d0mv";
14 };
15in rec {
16 rustc = callPackage ./rustc.nix {
17 inherit stdenv llvm targets targetPatches targetToolchains rustPlatform version src;
18
19 forceBundledLLVM = true;
20
21 configureFlags = [ "--release-channel=stable" ];
22
23 patches = [
24 ./patches/0001-Disable-fragile-tests-libstd-net-tcp-on-Darwin-Linux.patch
25 ] ++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch
26 # https://github.com/rust-lang/rust/issues/45410
27 ++ stdenv.lib.optional stdenv.isAarch64 ./patches/aarch64-disable-test_loading_cosine.patch;
28
29 };
30
31 cargo = callPackage ./cargo.nix rec {
32 version = cargoVersion;
33 inherit src;
34 inherit stdenv;
35 inherit rustc; # the rustc that will be wrapped by cargo
36 inherit rustPlatform; # used to build cargo
37 };
38}