       exit({:shutdown, 1})
     end
     platform = config[:nerves_package][:platform]
-    provider = provider(app, type)
+    provider = provider(config)
     config = Enum.reject(config[:nerves_package], fn({k, _v}) -> k in @required end)
 
     %Package{

    end
  end

  defp provider(app, type) do
    config = Mix.Project.config[:artifacts] || []

    case Keyword.get(config, app) do
      nil -> provider_mod(type)
      opts -> provider_opts(opts)
    end
  end

  defp provider_mod(:system_platform), do: []
  defp provider_mod(:toolchain_platform), do: []
  defp provider_mod(:toolchain) do
    mod =
      case :os.type do
        {_, :linux} -> Providers.HTTP

    [{Providers.HTTP, []}, {mod, []}]
  end

  defp provider_type(_) do
    mod =
      case :os.type do
        {_, :linux} -> Providers.Local
        _ -> Providers.Docker
      end
    [{Providers.HTTP, []}, {mod, []}]
  end

  defp load_nerves_config(path) do
