Use Rust binaries from Nix instead of rustup

This commit is contained in:
Quentin Dufour 2021-10-25 17:19:24 +02:00
parent 69b89fb46d
commit cc1caa87fb
No known key found for this signature in database
GPG Key ID: A98E9B769E4FF428
3 changed files with 11 additions and 22 deletions

View File

@ -11,26 +11,17 @@ with import ./nix/common.nix;
let
crossSystem = { config = target; };
in let
pkgs = import pkgsSrc {
inherit system crossSystem;
overlays = [ cargo2nixOverlay rustOverlay ];
overlays = [ cargo2nixOverlay ];
};
rustDist = pkgs.buildPackages.rust-bin.stable.latest.default;
/*
The following complexity should be abstracted by makePackageSet' (note the final quote).
However its code uses deprecated features of rust-overlay that can lead to bug.
Instead, we build our own rustChannel object with the recommended API of rust-overlay.
*/
rustChannel = rustDist // {
cargo = rustDist;
rustc = rustDist.override {
targets = [
(pkgs.rustBuilder.rustLib.realHostTriple pkgs.stdenv.targetPlatform)
];
};
};
rustChannel = pkgs.rustPlatform.rust;
overrides = pkgs.buildPackages.rustBuilder.overrides.all ++ [
(pkgs.rustBuilder.rustLib.makeOverride {

View File

@ -12,16 +12,10 @@ rec {
url = "https://github.com/superboum/cargo2nix";
rev = "1364752cd784764db2ef5b1e1248727cebfae2ce";
};
rustOverlaySrc = fetchGit {
# As of 2021-10-05
url = "https://github.com/oxalica/rust-overlay";
rev = "9c2fc6a62ccbc6f420d71ecac6bf0b84dbbee64f";
};
/*
* Shared objects
*/
rustOverlay = import rustOverlaySrc;
cargo2nix = import cargo2nixSrc;
cargo2nixOverlay = import "${cargo2nixSrc}/overlay";
}

View File

@ -1,6 +1,5 @@
{
system ? builtins.currentSystem,
crossSystem ? null,
rust ? true,
integration ? true,
release ? true,
@ -10,10 +9,9 @@ with import ./nix/common.nix;
let
pkgs = import pkgsSrc {
inherit system crossSystem;
overlays = [ cargo2nixOverlay rustOverlay ];
inherit system;
overlays = [ cargo2nixOverlay ];
};
rustDist = pkgs.buildPackages.rust-bin.stable.latest.default;
kaniko = (import ./nix/kaniko.nix) pkgs;
in
@ -60,7 +58,13 @@ function refresh_index {
'';
nativeBuildInputs =
(if rust then [ rustDist (pkgs.callPackage cargo2nix {}).package ] else [])
(if rust then [
pkgs.rustPlatform.rust.rustc
pkgs.rustPlatform.rust.cargo
pkgs.clippy
pkgs.rustfmt
/*(pkgs.callPackage cargo2nix {}).package*/
] else [])
++
(if integration then [ pkgs.s3cmd pkgs.awscli2 pkgs.minio-client pkgs.rclone pkgs.socat pkgs.psmisc pkgs.which ] else [])
++