> stdenv.mkDerivation { .. } : > { > ... > warfile = "${out}/repository/big/fat/path/geonetwork-opensource-2.6.4.war" > ... > }
You have to understand that you can't pass out as input to the same derivation. Why? All inputs yield a hash, the nix/store/xxxx hash. Let's take a very simple example: derivation = { A = 7; C = 8; } hash would be echo 'A=7;B=8' | md5sum (its more complicated, but this example will work to make you understand). 635a3b176019f096630581a8ee3a263e Now you want this: derivation = { A = 7; C = 8; D = "$HASH/some/path"; } Thus 'A=7;B=8;D=$HASH/some/path' | md5sum Thus the input to the hash function depends on the output of it - no solution -> infinite recursion which is why nix can't provide $out the way you want to use it. If you grep nixpkgs for $out you'll find many cases. But they all use $out in shell scripts only such as preConfigure='' configureFlags="--lib-path=$out/lib" ''; which works because the shell script is run when $out is known (obviously), but not at nix evaluation time. What you really want is this workaround: let X = derivation { // your war file } in X // { warfile = "${X}/some/path"; } Thus you merge the warfile path after the derivation is complete (hash has been calculated) passthru is a very related special "attr name" which gets removed before the derivation is created and merged back in a similar way, but it can't depend on $out. Seriously: Packaging maven/ivy/sbt/... like stuff for nix (would be great) - but is insane at the moment because it would requiring making mvn and nix work together nicely - and that would result in something like patching maven to use the nix store to store "jar" files (shared cache) and build results for it (kind of) - which in turn would mean mvn creating .nix files on the fly (which would be possible) - but which would make it harder to create .nix files in advance so that you can share them. It probably would be possible - just nobody started this effort yet (AFAIK). Managing the transient dependencies in ivy would be .. lot's of fun :) Don't get me wrong - I'd like be able to rebuild the same source with different java/scala compilers easily - it will just take a lot of dedication to get it done properly. Good luck. Marc Weber _______________________________________________ nix-dev mailing list nix-dev@lists.science.uu.nl http://lists.science.uu.nl/mailman/listinfo/nix-dev