blob: 422c1c4a2aed8b164b32db62be47c0aafef4c1be [file] [log] [blame]
{
pkgs,
lib,
stdenv,
rustc,
python3,
makeBinaryWrapper,
# Bootstrap
curl,
pkg-config,
libiconv,
openssl,
patchelf,
cacert,
zlib,
# LLVM Deps
ninja,
cmake,
glibc,
}:
stdenv.mkDerivation (self: {
strictDeps = true;
name = "x-none";
outputs = [
"out"
"unwrapped"
];
src = ./x.rs;
dontUnpack = true;
nativeBuildInputs = [
rustc
makeBinaryWrapper
];
env.PYTHON = python3.interpreter;
buildPhase = ''
rustc -Copt-level=3 --crate-name x $src --out-dir $unwrapped/bin
'';
installPhase =
let
inherit (self.passthru) cacert env;
in
''
makeWrapper $unwrapped/bin/x $out/bin/x \
--set-default SSL_CERT_FILE ${cacert} \
--prefix CPATH ";" "${lib.makeSearchPath "include" env.cpath}" \
--prefix PATH : ${lib.makeBinPath env.path} \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath env.ldLib}
'';
# For accessing them in the devshell
passthru = {
env = {
cpath = [ libiconv ];
path = [
python3
patchelf
curl
pkg-config
cmake
ninja
stdenv.cc
];
ldLib = [
openssl
zlib
stdenv.cc.cc.lib
];
};
cacert = "${cacert}/etc/ssl/certs/ca-bundle.crt";
};
meta = {
description = "Helper for rust-lang/rust x.py";
homepage = "https://github.com/rust-lang/rust/blob/master/src/tools/x";
license = lib.licenses.mit;
mainProgram = "x";
};
})