anchor.diff:        defnsByName' = byName "config" (module: value:
             [{ inherit (module) file; inherit value; }]
           ) configs;
  -    in
  -    (flip mapAttrs declsByName (name: decls:
  -      # We're descending into attribute ‘name’.
  +
  +      resultsByName = flip mapAttrs declsByName (name: decls:
  +        # We're descending into attribute ‘name’.
           let
             loc = prefix ++ [name];
             defns = defnsByName.${name} or [];
  
positive.code:         in
            if nrOptions == length decls then
              let opt = fixupOptionType loc (mergeOptionDecls loc decls);
              in evalOptionValue loc opt defns'
            else if nrOptions != 0 then
              let
                firstOption = findFirst (m: isOption m.options) "" decls;
  
negative.code:      declarations in all modules, combining them into a single set.
       At the same time, for each option declaration, it will merge the
       corresponding option definitions in all machines, returning them
       in the ‘value’ attribute of each option.
  
       This returns a set like
         {
           # A recursive set of options along with their final values
           matchedOptions = {
             foo = { _type = "option"; value = "option value of foo"; ... };
             bar.baz = { _type = "option"; value = "option value of bar.baz"; ... };
             ...
           };
           # A list of definitions that weren't matched by any option
           unmatchedDefns = [
             { file = "file.nix"; prefix = [ "qux" ]; value = "qux"; }
             ...
           ];
         }
    */
    mergeModules = prefix: modules:
      mergeModules' prefix modules
        (concatMap (m: map (config: { file = m._file; inherit config; }) (pushDownProperties m.config)) modules);
  