Speed up evaluation of grids by evaluating custom packages once.
Watching the output of evaluating a grid, I noticed that a bunch of the trace output of mach-nix repeated itself, which suggested it was being evaluated once for each node. I decided to see if sharing that evaluation sped up the overall evaluation, while waiting for packages to build.
The current code evaluates our custom packages once for each node, which adds significant amount of time to evaluate a grid. We can reduce this, by adding the custom package set as an attribute to the nixpkgs set we pass to morph.
This doesn't change how we refer to those packages, as we continue to expose the custom package set as a module attribute.
These are the times to evaluate all three grids (on a partially loaded system), when there was nothing new to build:
before:
real 2m27.837s
user 3m35.528s
sys 0m3.722s
after:
real 1m12.748s
user 1m34.047s
sys 0m3.346s