import Config # Use Ringlogger as the logger backend and remove :console. # See https://hexdocs.pm/ring_logger/readme.html for more information on # configuring ring_logger. config :logger, backends: [RingLogger] # Use shoehorn to start the main application. See the shoehorn # library documentation for more control in ordering how OTP # applications are started and handling failures. config :shoehorn, init: [:nerves_runtime, :nerves_pack] # Erlinit can be configured without a rootfs_overlay. See # https://github.com/nerves-project/erlinit/ for more information on # configuring erlinit. # Advance the system clock on devices without real-time clocks. config :nerves, :erlinit, update_clock: true # Configure the device for SSH IEx prompt access and firmware updates # # * See https://hexdocs.pm/nerves_ssh/readme.html for general SSH configuration # * See https://hexdocs.pm/ssh_subsystem_fwup/readme.html for firmware updates keys = [ Path.join([System.user_home!(), ".ssh", "id_rsa.pub"]), Path.join([System.user_home!(), ".ssh", "id_ecdsa.pub"]), Path.join([System.user_home!(), ".ssh", "id_ed25519.pub"]) ] |> Enum.filter(&File.exists?/1) if keys == [] && Mix.env() != :test, do: Mix.raise(""" No SSH public keys found in ~/.ssh. An ssh authorized key is needed to log into the Nerves device and update firmware on it using ssh. See your project's config.exs for this error message. """) config :nerves_ssh, authorized_keys: Enum.map(keys, &File.read!/1) # Configure the network using vintage_net # See https://github.com/nerves-networking/vintage_net for more information config :vintage_net, regulatory_domain: "US", config: [ {"usb0", %{type: VintageNetDirect}}, {"eth0", %{ type: VintageNetEthernet, ipv4: %{method: :dhcp} }}, {"wlan0", %{type: VintageNetWiFi}} ] config :mdns_lite, # The `hosts` key specifies what hostnames mdns_lite advertises. `:hostname` # advertises the device's hostname.local. For the official Nerves systems, this # is "nerves-<4 digit serial#>.local". The `"nerves"` host causes mdns_lite # to advertise "nerves.local" for convenience. If more than one Nerves device # is on the network, it is recommended to delete "nerves" from the list # because otherwise any of the devices may respond to nerves.local leading to # unpredictable behavior. hosts: [:hostname, "bivouac"], ttl: 120, # Advertise the following services over mDNS. services: [ %{ protocol: "ssh", transport: "tcp", port: 22 }, %{ protocol: "sftp-ssh", transport: "tcp", port: 22 }, %{ protocol: "epmd", transport: "tcp", port: 4369 } ] # Import target specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. # Uncomment to use target specific configurations # import_config "#{Mix.target()}.exs"