nix-index: Wrap with nix-env in PATH (#51165)

This fixes an impurity in nix-index: Previously it would take the nix-env
binary from the users PATH. I discovered this while trying to run nix-index in a
systemd service, which by default doesn't have nix-env in its path. The
errors it threw were not informative at all and it took me hours to
finally figure out the reason.
This commit is contained in:
Silvan Mosberger 2018-12-04 01:54:37 +01:00 committed by Benno Fünfstück
parent 19532f2ba2
commit e9ecd7f872

View File

@ -1,5 +1,5 @@
{ stdenv, rustPlatform, fetchFromGitHub, pkgconfig, openssl, curl
, Security
{ stdenv, rustPlatform, fetchFromGitHub, pkgconfig, makeWrapper, openssl, curl
, nix, Security
}:
rustPlatform.buildRustPackage rec {
@ -13,7 +13,7 @@ rustPlatform.buildRustPackage rec {
sha256 = "05fqfwz34n4ijw7ydw2n6bh4bv64rhks85cn720sy5r7bmhfmfa8";
};
cargoSha256 = "045qm7cyg3sdvf22i8b9cz8gsvggs5bn9xz8k1pvn5gxb7zj24cx";
nativeBuildInputs = [ pkgconfig ];
nativeBuildInputs = [ pkgconfig makeWrapper ];
buildInputs = [ openssl curl ]
++ stdenv.lib.optional stdenv.isDarwin Security;
@ -24,6 +24,8 @@ rustPlatform.buildRustPackage rec {
cp ./command-not-found.sh $out/etc/profile.d/command-not-found.sh
substituteInPlace $out/etc/profile.d/command-not-found.sh \
--replace "@out@" "$out"
wrapProgram $out/bin/nix-index \
--prefix PATH : "${stdenv.lib.makeBinPath [ nix ]}"
'';
meta = with stdenv.lib; {