Nerves

サポートするデバイス

https://github.com/nerves-project のnerves_system_*** が存在すれば使用することができる。

tips

:mnesiaを使うには

mix.exsのextra_applicationsに追加する

extra_applications: [:logger, :runtime_tools, :mnesia]

ホストでの開発時にターゲットにしかないライブラリのundefined warningを出さないようにする

elixirc_options の no_warn_undefined を使う。

https://hexdocs.pm/mix/Mix.Tasks.Compile.Elixir.html#module-configuration

defp elixirc_options(:host, _env),
  do: [
    no_warn_undefined: [
      Nerves.Runtime,
      Nerves.Runtime.KV,
      NervesHubLink,
      VintageNet
    ]
  ]

Gitの情報をFirmwareと紐付ける

defp set_firmware_info() do
  :ok = System.put_env("NERVES_FW_VCS_IDENTIFIER", vcs(:commit))
  :ok = System.put_env("NERVES_FW_MISC", "env: #{Mix.env()}, branch: #{vcs(:branch)}")
end

defp vcs(:branch) do
  {branch, 0} = System.cmd("git", ~w"rev-parse --abbrev-ref --verify HEAD")
  String.trim(branch)
end

defp vcs(:commit) do
  {commit, 0} = System.cmd("git", ~w"rev-parse --verify HEAD")
  String.trim(commit)
end

vm.argsの設定はどこでできるか?

Nervesプロジェクトのrel/vm.args.eex

iexのhistoryをdisableしたい場合はこのファイルを編集する