{ 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"; }; })