Re: [Nix-dev] setting environment values.
2015-01-28 15:02 GMT-02:00 Tim Sears : > Thanks Stewart. Do you happen to know if other nix commands (nix-shell, > nix-build) use or ignore the extraCmds attribute? Or if any build phase uses > it. I haven't found much documentation or code so far. > > I made some progress based on an earlier suggestion, by simply adding > environment variables in the call to mkDerivation. The package is a library > and want to propagate the variables to another library that depends on this > one, and so on, downstream. > I think you can use setup hooks. Do a simple "git grep setupHook" on nixpkgs tree, and you will find a lot of interesting setup scripts... A good example is to set QTDIR on Qt4 scripts. > On Wed, Jan 28, 2015 at 1:03 AM, stewart mackenzie > wrote: >> >> add something like this: >> >>extraCmds = '' >> export SOMEPATH_ERLANG=${erlang}/opt/path/to/libs; >> >>''; >>}; >> ___ >> nix-dev mailing list >> nix-dev@lists.science.uu.nl >> http://lists.science.uu.nl/mailman/listinfo/nix-dev > > > > ___ > nix-dev mailing list > nix-dev@lists.science.uu.nl > http://lists.science.uu.nl/mailman/listinfo/nix-dev > ___ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev
Re: [Nix-dev] setting environment values.
Okay, I'm at the point too where I need to see your nix-expression. Though, by creating a package, in other nix-expressions you would simply refer to that library by ${library_name}. That should achieve your propagation needs. ___ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev
Re: [Nix-dev] setting environment values.
Thanks Luca. I wanted to strip out unnecessary details. Will post a gist next time. ___ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev
Re: [Nix-dev] setting environment values.
Thanks Stewart. Do you happen to know if other nix commands (nix-shell, nix-build) use or ignore the extraCmds attribute? Or if any build phase uses it. I haven't found much documentation or code so far. I made some progress based on an earlier suggestion, by simply adding environment variables in the call to mkDerivation. The package is a library and want to propagate the variables to another library that depends on this one, and so on, downstream. On Wed, Jan 28, 2015 at 1:03 AM, stewart mackenzie wrote: > add something like this: > >extraCmds = '' > export SOMEPATH_ERLANG=${erlang}/opt/path/to/libs; > >''; >}; > ___ > nix-dev mailing list > nix-dev@lists.science.uu.nl > http://lists.science.uu.nl/mailman/listinfo/nix-dev > ___ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev
Re: [Nix-dev] setting environment values.
Hi, There is makeWrapper [1] which wraps your binary in a shell script that sets some variables before execution. See e.g. [2] for how apache maven uses it to set JAVA_HOME. Is that what you are looking for? ~ [1] https://nixos.org/wiki/Nix_Runtime_Environment_Wrapper [2] https://github.com/NixOS/nixpkgs/blob/72e76a18c122ec657fd6825764be79db8d73b3ce/pkgs/development/tools/build-managers/apache-maven/builder.sh#L8 On 27 January 2015 at 18:48, Tim Sears wrote: > I am writing a nix expression to port some libraries from another distro. > > The libraries have slightly non-standard locations so I would typically > add some line to my .bashrc file like > > export SOMEVAR="somestring" > export SOMEPATH=/opt/path/to/libs > export LD_LIBRARY_PATH=$SOMEPATH:$LD_LIBRARY_PATH. > > What is the nix way of doing this? I can set SOMEVAR="somestring" in the > derivation expression, and it appears in my environment after executing > nix-shell, but SOMEPATH should look like $out/path/to/libs and I am not > sure how/where to set that. > > Suggestions appreciated. > -Tim > > ___ > nix-dev mailing list > nix-dev@lists.science.uu.nl > http://lists.science.uu.nl/mailman/listinfo/nix-dev > > ___ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev
Re: [Nix-dev] setting environment values.
add something like this: extraCmds = '' export SOMEPATH_ERLANG=${erlang}/opt/path/to/libs; ''; }; ___ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev
Re: [Nix-dev] setting environment values.
Tim you need to do something like this: ``` let pkgs = import {}; stdenv = pkgs.stdenv; in rec { erlangEnv = pkgs.myEnvFun { name = "erlang"; buildInputs = with pkgs; [ erlang rebar openssl git binutils bash emacs which mc meld tig elixir ]; extraCmds = '' export POSTGRES_PASS=password; export MAILGUN_KEY=my_mailgun_api_key; export MAILGUN_DOMAIN=cont...@email.org; ''; }; } ``` ___ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev
Re: [Nix-dev] setting environment values.
On 27/01/2015 19:48, Tim Sears wrote: > I am writing a nix expression to port some libraries from another distro. > > The libraries have slightly non-standard locations so I would > typically add some line to my .bashrc file like > > export SOMEVAR="somestring" > export SOMEPATH=/opt/path/to/libs > export LD_LIBRARY_PATH=$SOMEPATH:$LD_LIBRARY_PATH. > > What is the nix way of doing this? I can set SOMEVAR="somestring" in > the derivation expression, and it appears in my environment after > executing nix-shell, but SOMEPATH should look like $out/path/to/libs > and I am not sure how/where to set that. > It's a little hard to answer such a question, we miss some information. First of all, paste the expression. ___ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev
[Nix-dev] setting environment values.
I am writing a nix expression to port some libraries from another distro. The libraries have slightly non-standard locations so I would typically add some line to my .bashrc file like export SOMEVAR="somestring" export SOMEPATH=/opt/path/to/libs export LD_LIBRARY_PATH=$SOMEPATH:$LD_LIBRARY_PATH. What is the nix way of doing this? I can set SOMEVAR="somestring" in the derivation expression, and it appears in my environment after executing nix-shell, but SOMEPATH should look like $out/path/to/libs and I am not sure how/where to set that. Suggestions appreciated. -Tim ___ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev