Commit 3000!
Commit 3000!

* Make the `derivation' primitive much more lazy.  The expression
  `derivation attrs' now evaluates to (essentially)

    attrs // {
      type = "derivation";
      outPath = derivation! attrs;
      drvPath = derivation! attrs;
    }

  where `derivation!' is a primop that does the actual derivation
  instantiation (i.e., it does what `derivation' used to do).  The
  advantage is that it allows commands such as `nix-env -qa' and
  `nix-env -i' to be much faster since they no longer need to
  instantiate all derivations, just the `name' attribute.  (However,
  `nix-env' doesn't yet take advantage of this since it still always
  evaluates the `outPath' and `drvPath' attributes).

  Also, this allows derivations to cyclically reference each other,
  for example,

    webServer = derivation {
      ...
      hostName = "svn.cs.uu.nl";
      services = [svnService];
    };

    svnService = derivation {
      ...
      hostName = webServer.hostName;
    };

  Previously, this would yield a black hole (infinite recursion).


dezgeg/nix,ttuegel/nix,shlevy/nix,edolstra/nix,acowley/nix,joelmo/nix,dtzWill/nix,offlinehacker/nix,rycee/nix,shlevy/nix,puffnfresh/nix,rowhit/nix,puffnfresh/nix,ehmry/nix,wmertens/nix,shlevy/nix,nbp/nix,rowhit/nix,zimbatm/nix,dtzWill/nix,rowhit/nix,offlinehacker/nix,gridaphobe/nix,vcunat/nix,NixOS/nix,pikajude/nix,nbp/nix,vizanto/nix,puffnfresh/nix,peti/nix,tchajed/nix,vizanto/nix,garbas/nix,zimbatm/nix,wmertens/nix,layus/nix,offlinehacker/nix,jcumming/nix,acowley/nix,bjornfor/nix,ysangkok/nix,ysangkok/nix,tchajed/nix,garbas/nix,bennofs/nix,peti/nix,tchajed/nix,ttuegel/nix,peti/nix,NixOS/nix,gridaphobe/nix,jcumming/nix,ehmry/nix,zimbatm/nix,dezgeg/nix,wmertens/nix,pikajude/nix,rowhit/nix,layus/nix,jcumming/nix,edolstra/nix,ehmry/nix,NixOS/nix,acowley/nix,wmertens/nix,rycee/nix,dezgeg/nix,bennofs/nix,acowley/nix,peti/nix,bennofs/nix,gebner/nix,dtzWill/nix,vizanto/nix,NixOS/nix,vcunat/nix,joelmo/nix,dezgeg/nix,offlinehacker/nix,ehmry/nix,vcunat/nix,gridaphobe/nix,gebner/nix,nbp/nix,tchajed/nix,rycee/nix,NixOS/nix,nbp/nix,bjornfor/nix,ysangkok/nix,layus/nix,edolstra/nix,layus/nix,dezgeg/nix,bennofs/nix,edolstra/nix,ehmry/nix,dtzWill/nix,garbas/nix,garbas/nix,bjornfor/nix,garbas/nix,ttuegel/nix,bjornfor/nix,zimbatm/nix,rycee/nix,joelmo/nix,layus/nix,aucampia/nix,gebner/nix,ttuegel/nix,pikajude/nix,dtzWill/nix,aucampia/nix,puffnfresh/nix,joelmo/nix,aucampia/nix,ehmry/nix,peti/nix,vizanto/nix,rycee/nix,aucampia/nix,gebner/nix,shlevy/nix,gridaphobe/nix,vcunat/nix,jcumming/nix,edolstra/nix,shlevy/nix