anchor.diff:        optionalAttrs (cfg.publishInfrastructure.enable)
         ( { hostname = config.networking.hostName;
             targetHost = config.deployment.targetHost;
  -	  system = if config.nixpkgs.system == "" then builtins.currentSystem else config.nixpkgs.system;
  +          system = if config.nixpkgs.system == "" then builtins.currentSystem else config.nixpkgs.system;
  +          
  +          supportedTypes = (import "${pkgs.stdenv.mkDerivation {
  +            name = "supportedtypes";
  +            buildCommand = ''
  +              ( echo -n "[ "
  +                cd ${disnix_activation_scripts}/libexec/disnix/activation-scripts
  +                for i in *
  +                do
  +                    echo -n "\"$i\" "
  +                done
  +                echo -n " ]") > $out
  +            '';
  +          }}");
           }
           // optionalAttrs (cfg.useWebServiceInterface) { targetEPR = "http://${config.deployment.targetHost}:8080/DisnixWebService/services/DisnixWebService"; }
           // optionalAttrs (config.services.httpd.enable) { documentRoot = config.services.httpd.documentRoot; }
           // optionalAttrs (config.services.mysql.enable) { mysqlPort = config.services.mysql.port; }
           // optionalAttrs (config.services.tomcat.enable) { tomcatPort = 8080; }
  -	// optionalAttrs (config.services.svnserve.enable) { svnBaseDir = config.services.svnserve.svnBaseDir; }
  -	// optionalAttrs (cfg.publishInfrastructure.enableAuthentication) (
  +        // optionalAttrs (config.services.svnserve.enable) { svnBaseDir = config.services.svnserve.svnBaseDir; }
  +        // optionalAttrs (cfg.publishInfrastructure.enableAuthentication) (
             optionalAttrs (config.services.mysql.enable) { mysqlUsername = "root"; mysqlPassword = builtins.readFile config.services.mysql.rootPassword; })
  -	)
  +        )
       ;
   
       services.disnix.publishInfrastructure.enable = cfg.publishAvahi;
  
positive.code: 
        useWebServiceInterface = mkOption {
          default = false;
  	description = "Whether to enable the DisnixWebService interface running on Apache Tomcat";
        };
  
        publishInfrastructure = {
          enable = mkOption {
            default = false;
  	  description = "Whether to publish capabilities/properties of this machine in as attributes in the infrastructure option";
  	};
  
  	enableAuthentication = mkOption {
  	  default = false;
  	  description = "Whether to publish authentication credentials through the infrastructure attribute (not recommended in combination with Avahi)";
  	};
        };
  
        infrastructure = mkOption {
          default = {};
  	description = "List of name value pairs containing properties for the infrastructure model";
        };
  
        publishAvahi = mkOption {
          default = false;
  	description = "Whether to publish capabilities/properties as a Disnix service through Avahi";
        };
  
      };
  
negative.code: 
            startOn = "started avahi-daemon";
  
            exec =
            ''
              ${pkgs.avahi}/bin/avahi-publish-service disnix-${config.networking.hostName} _disnix._tcp 22 \
                "mem=$(grep 'MemTotal:' /proc/meminfo | sed -e 's/kB//' -e 's/MemTotal://' -e 's/ //g')" \
                ${concatMapStrings (infrastructureAttrName:
                  let infrastructureAttrValue = getAttr infrastructureAttrName (cfg.infrastructure);
                  in
                  if builtins.isInt infrastructureAttrValue then
                  ''${infrastructureAttrName}=${toString infrastructureAttrValue} \
                  ''
                  else
                  ''${infrastructureAttrName}=\"${infrastructureAttrValue}\" \
                  ''
                  ) (attrNames (cfg.infrastructure))}
            '';
          };
      };
  