anchor.diff:      listToAttrs (map (serviceName: 
         let
           targets = getAttr serviceName distribution;
  -	service = getAttr serviceName services;
  +        service = getAttr serviceName services;
         in
         { name = serviceName;
           value = service // {
  -	  distribution = map (target:
  -	    let
  -	      system = if target ? system then target.system else builtins.currentSystem;
  -	      pkg = (getAttr serviceName (servicesFun { inherit distribution; inherit system; pkgs = selectPkgs system; })).pkg;
  -	    in
  -	    { service = 
  -	        if serviceProperty == "outPath" then
  -	          if service.dependsOn == {} then pkg.outPath
  -	          else (pkg (service.dependsOn)).outPath
  -		else
  -		  if service.dependsOn == {} then unsafeDiscardOutputDependency (pkg.drvPath)
  -		  else unsafeDiscardOutputDependency ((pkg (service.dependsOn)).drvPath)
  -		;
  -	      inherit target;
  -	    }
  -	  ) targets;
  -	};
  -      }	
  +          distribution = map (target:
  +            let
  +              system = if target ? system then target.system else builtins.currentSystem;
  +              pkg = (getAttr serviceName (servicesFun { inherit distribution; inherit system; pkgs = selectPkgs system; })).pkg;
  +            in
  +            { service = 
  +                if serviceProperty == "outPath" then
  +                  if service.dependsOn == {} then pkg.outPath
  +                  else (pkg (service.dependsOn)).outPath
  +                else
  +                  if service.dependsOn == {} then unsafeDiscardOutputDependency (pkg.drvPath)
  +                  else unsafeDiscardOutputDependency ((pkg (service.dependsOn)).drvPath)
  +                ;
  +              inherit target;
  +            }
  +          ) targets;
  +        };
  +      } 
       ) (attrNames distribution))
     ;
   
  
positive.code:       { name = serviceName;
          value = service // {
            dependsOn = if service ? dependsOn && service.dependsOn != {} then
  	    listToAttrs (map (argName: 
  	      let
  	        dependencyName = (getAttr argName (service.dependsOn)).name;
  		dependency = getAttr dependencyName services;
  	        targets = getAttr dependencyName distribution;
  	      in
  	      { name = argName;
  	        value = dependency // {
  	          inherit targets;
  	          target = head targets;
  	        };        
  	      }
  	    ) (attrNames (service.dependsOn)))
  	  else {};
  	};
        }
      ) (attrNames distribution))
    ;
  
negative.code:    
    generateDistributionModelBody = serviceNames: targetNames: allTargetNames:
      if serviceNames == [] then ""
      else
        "  ${head serviceNames} = [ infrastructure.${head targetNames} ];\n" +
        (if (tail targetNames) == [] then generateDistributionModelBody (tail serviceNames) allTargetNames allTargetNames
        else generateDistributionModelBody (tail serviceNames) (tail targetNames) allTargetNames)
  