anchor.diff:        in
         {
           profile = machine.config.system.build.toplevel.outPath;
  -        target = getAttr targetProperty infrastructure;
  +        target = getTargetProperty targetProperty infrastructure;
         }
       ) (attrNames configurations)
     ;
  
positive.code:           infrastructure = machine.config.disnixInfrastructure.infrastructure;
          in
          { derivation = unsafeDiscardOutputDependency (machine.config.system.build.toplevel.drvPath);
            target = getAttr targetProperty infrastructure;
          }
        ) (attrNames configurations);
      
  
negative.code:   inherit (builtins) getAttr attrNames removeAttrs unsafeDiscardOutputDependency hashString;
  in
  rec {
    /**
     * Fetches the key value that is used to refer to a target machine.
     * If a target defines a 'targetProperty' then the corresponding attribute
     * is used. If no targetProperty is provided by the target, then the global
     * targetProperty is used.
     *
     * Parameters:
     * targetProperty: Attribute from the infrastructure model that is used to connect to the Disnix interface
     * target: An attributeset containing properties of a target machine
     *
     * Returns
     * A string containing the key value
     */
    getTargetProperty = targetProperty: target:
      if target ? targetProperty then getAttr (target.targetProperty) target
      else getAttr targetProperty target
    ;
  
    /*
     * Takes a collection of NixOS network expressions and zips them into a list of
  