Nix exec

Use `nix-exec`'s `fetchgit` for fetching dependent repos. In the future, `nix-exec` will also be used for secrets handling, uid calculation, etc.
@phunehehe `self` is nix convention for passing in the return value of a function to itself. As @proger said, laziness makes this OK: attribute sets are lazy in their values. This is used here to pass the entire `defnix` set to each function.