[Nix-dev] Multiple Profiles per User
Marc Weber
marco-oweber at gmx.de
Wed May 28 19:06:28 CEST 2008
Hi Darcy,
I had this idea as well.
I came up with a temporary solution (if you want to use it you have to
heavily tweak it.. not very well tested..
Basically all it does is adding some .nix-profile/dev-envs/* files
created from running export within the builder thus feeding in the
buildinputs (without HOME=/homelessshelter)
Only a hack, maybe you can get some ideas from this code..
============= =======================================================
.bashrc :
loadEnv(){
. "${HOME}/.nix-profile/dev-envs/${1}"
}
============= =======================================================
Put this into all-packages.nix
myEnvFun = import ../misc/my-env;
#example adding some libraries used to compile gegl
geglEnv = myEnvFun rec {
name = "gegl";
inherit stdenv;
buildInputs = [perl curl bzip2 gegl babl glib214 glibc ]
++ map (x : sourceWithTagsDerivation ( (addCTaggingInfo x).passthru.sourceWithTags ) ) [ glibc gegl ];
extraCmds = ". ~/.bashrc; cd $PWD";
};
============= =======================================================
misc/my-env/default.nix:
args: args.stdenv.mkDerivation (
{ extraCmds =""; } // {
phases = "buildPhase";
buildPhase = ''
name=${args.name}
o=$out/dev-envs/$name
ensureDir `dirname $o`
echo "
OLDPATH=\$PATH " >> $o
export | grep -v HOME= | grep -v PATH= | grep -v PWD= | grep -v
TEMP= | grep -v TMP= >> $o
echo "
PATH=$PATH:$OLDPATH
for i in \$buildInputs; do
export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$i/lib
done
export PATH=\$PATH:\$OLDPATH
$extraCmds
echo env $name loaded
" >> $o
chmod +x $o
'';
} // args // { name = "${args.name}-env"; } )
Marc Weber
More information about the nix-dev
mailing list