   def children() do
     # Don't run recursively for the top-level project
     scms = Mix.SCM.available
-    (Mix.project[:deps] || []) |> Enum.map(update(&1, scms, nil))
+    from = current_source(:mix)
+    (Mix.project[:deps] || []) |> Enum.map(update(&1, scms, nil, from))
   end
 
   @doc """

  defp mix_children(config) do
    scms = Mix.SCM.available
    Mix.Project.recur(config, fn _ ->
      (Mix.project[:deps] || []) |> Enum.map(update(&1, scms, :mix))
    end) |> List.concat
  end

  defp rebar_children(dir) do
    scms = Mix.SCM.available
    Mix.Rebar.recur(dir, fn config ->
      Mix.Rebar.deps(config) |> Enum.map(update(&1, scms, :rebar))
    end) |> List.concat
  end

  defp update(tuple, scms, manager) do
    dep = with_scm_and_status(tuple, scms)
      |> update_from(manager)

    if match?({ _, req, _ } when is_regex(req), tuple) and manager != :rebar do
      Mix.shell.info("[WARNING] Regex version requirement for dependencies is " <>
        "deprecated, please use Mix.Version instead")
    end

  @doc """
  Receives a dependency and update its status.
  """
  def update(Mix.Dep[scm: scm, app: app, requirement: req, opts: opts,
                     manager: manager, from: from]) do
    update({ app, req, opts }, [scm], manager, from)
  end

  ## Helpers
