![Dan Peebles](/assets/img/avatar_default.png)
This requires some small changes in the stdenv, then working around the weird choice LLVM made to hardcode @rpath in its install name, and then lets us remove a ton of annoying workaround hacks in many of our Go packages. With any luck this will mean less hackery going forward.
48 lines
1.3 KiB
Nix
48 lines
1.3 KiB
Nix
{ stdenv, fetchFromGitHub, buildGoPackage, bash, writeText}:
|
|
|
|
buildGoPackage rec {
|
|
name = "direnv-${version}";
|
|
version = "2.12.2";
|
|
goPackagePath = "github.com/direnv/direnv";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "direnv";
|
|
repo = "direnv";
|
|
rev = "v${version}";
|
|
sha256 = "0i8fnxhcl1zin714wxk93x8fi36z4fibapfn4jl3qkwbczkj8c8b";
|
|
};
|
|
|
|
postConfigure = ''
|
|
cd $NIX_BUILD_TOP/go/src/$goPackagePath
|
|
'';
|
|
|
|
buildPhase = ''
|
|
make BASH_PATH=${bash}/bin/bash
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
make install DESTDIR=$bin
|
|
mkdir -p $bin/share/fish/vendor_conf.d
|
|
echo "eval ($bin/bin/direnv hook fish)" > $bin/share/fish/vendor_conf.d/direnv.fish
|
|
'';
|
|
|
|
meta = with stdenv.lib; {
|
|
description = "A shell extension that manages your environment";
|
|
longDescription = ''
|
|
Once hooked into your shell direnv is looking for an .envrc file in your
|
|
current directory before every prompt.
|
|
|
|
If found it will load the exported environment variables from that bash
|
|
script into your current environment, and unload them if the .envrc is
|
|
not reachable from the current path anymore.
|
|
|
|
In short, this little tool allows you to have project-specific
|
|
environment variables.
|
|
'';
|
|
homepage = http://direnv.net;
|
|
license = licenses.mit;
|
|
maintainers = with maintainers; [ zimbatm ];
|
|
};
|
|
}
|