     end
   end
 
-  defp validate_config(%{valid?: false} = change), do: change
-  defp validate_config(changeset) do
-    config = get_field(changeset, :config)
-    Enum.reduce(config, changeset, fn
-      {name, %{} = params}, changeset when is_binary(name) ->
-        case Config.changeset(%Config{}, params) do
-          %{valid?: true} = config_changeset ->
-            validated_config_data = Ecto.Changeset.apply_changes(config_changeset)
-            new_config = Map.put(config, name, validated_config_data)
-            put_change(changeset, :config, new_config)
-          %{valid?: false} = config_changeset ->
-            add_error(changeset, :config, "invalid config item", config_changeset.errors)
-        end
-      {_, _}, changeset ->
-        add_error(changeset, :config, "invalid config item (bad key or value type)")
-    end)
-  end
-
   defp validate_url(%{valid?: false} = change), do: change
   defp validate_url(changeset) do
     # `url` is optional

    |> validate_farmware_manifest_version()
    |> validate_farmware_tools_version_requirement()
    |> validate_package_version()
    |> validate_config()
    |> validate_url()
    |> validate_zip()
  end

      zip: manifest.zip,
      executable: manifest.executable,
      args: manifest.args,
      config: manifest.config,
      package_version: manifest.package_version,
      farmware_tools_version_requirement: manifest.farmware_tools_version_requirement,
      farmware_manifest_version: manifest.farmware_manifest_version,
