1{ stdenv, lib, runCommand
2, fetchFromGitHub, rustPlatform
3, pkgconfig, curl, Security }:
4
5rustPlatform.buildRustPackage rec {
6 name = "rustup-${version}";
7 version = "1.2.0";
8
9 depsSha256 = "06bfz5kyj3k0yxv55dq0s1arx34sy1jjfrpgd83rf99026vcm5x2";
10
11 src = fetchFromGitHub {
12 owner = "rust-lang-nursery";
13 repo = "rustup.rs";
14 rev = version;
15 sha256 = "0qwl27wh7j03h511bd8fq5fif5xcmkiyy9rm3hri7czjqr01mw0v";
16 };
17
18 nativeBuildInputs = [ pkgconfig ];
19
20 buildInputs = [
21 curl
22 ] ++ stdenv.lib.optionals stdenv.isDarwin [ Security ];
23
24 cargoBuildFlags = [ "--features no-self-update" ];
25
26 patches = lib.optionals stdenv.isLinux [
27 (runCommand "0001-use-hardcoded-dynamic-linker.patch" { CC=stdenv.cc; } ''
28 export dynamicLinker=$(cat $CC/nix-support/dynamic-linker)
29 substituteAll ${./0001-use-hardcoded-dynamic-linker.patch} $out
30 '')
31 ];
32
33 postInstall = ''
34 pushd $out/bin
35 mv rustup-init rustup
36 for link in cargo rustc rustdoc rust-gdb rust-lldb; do
37 ln -s rustup $link
38 done
39 popd
40
41 # tries to create .rustup
42 export HOME=$(mktemp -d)
43 mkdir -p "$out/share/"{bash-completion/completions,fish/completions,zsh/site-functions}
44 $out/bin/rustup completions bash > "$out/share/bash-completion/completions/rustup"
45 $out/bin/rustup completions fish > "$out/share/fish/completions/rustup.fish"
46 $out/bin/rustup completions zsh > "$out/share/zsh/site-functions/_rustup"
47 '';
48
49 meta = with stdenv.lib; {
50 description = "The Rust toolchain installer";
51 homepage = https://www.rustup.rs/;
52 license = licenses.mit;
53 maintainer = [ maintainers.mic92 ];
54 };
55}