defmodule <%= app_module %>.MixProject do use Mix.Project @target System.get_env("MIX_TARGET") || "host" Mix.shell().info([ :green, """ Mix environment MIX_TARGET: #{@target} MIX_ENV: #{Mix.env()} """, :reset ]) def project do [ app: :<%= app_name %>, version: "0.1.0", elixir: "<%= elixir_req %>", target: @target, archives: [nerves_bootstrap: "~> <%= bootstrap_vsn %>"],<%= if in_umbrella do %> deps_path: "../../deps/#{@target}", build_path: "../../_build/#{@target}", config_path: "../../config/config.exs", lockfile: "../../mix.lock.#{@target}",<% else %> deps_path: "deps/#{@target}", build_path: "_build/#{@target}", lockfile: "mix.lock.#{@target}",<% end %> build_embedded: Mix.env == :prod, start_permanent: Mix.env == :prod, aliases: aliases(@target), deps: deps() ] end # Run "mix help compile.app" to learn about applications. def application, do: application(@target) # Specify target specific application configurations # It is common that the application start function will start and supervise # applications which could cause the host to fail. Because of this, we only # invoke <%= app_module %>.start/2 when running on a target. def application("host") do [extra_applications: [:logger]] end def application(_target) do [mod: {<%= app_module %>.Application, []}, extra_applications: [:logger]] end # Run "mix help deps" to learn about dependencies. defp deps do [<%= nerves_dep %>] ++ deps(@target) end # Specify target specific dependencies defp deps("host"), do: [] defp deps(target) do [ {:shoehorn, "~> <%= shoehorn_vsn %>"}, {:nerves_runtime, "~> <%= runtime_vsn %>"} ] ++ system(target) end <%= for target <- targets do %> defp system("<%= target %>"), do: [{:<%= "nerves_system_#{target}" %>, ">= 0.0.0", runtime: false}] <% end %> defp system(target), do: Mix.raise "Unknown MIX_TARGET: #{target}" # We do not invoke the Nerves Env when running on the Host defp aliases("host"), do: [] defp aliases(_target) do [ # Add custom mix aliases here ] |> Nerves.Bootstrap.add_aliases() end end