Warnings

Non-fatal quality signals detected by the BEAM scanner. These packages compile and pass — but use patterns worth knowing about for Nerves firmware (reproducibility, runtime behavior, host-tool dependencies).

Calls :erlang.halt / System.halt
20 packages
Package code calls into a function that halts the BEAM VM. On a Nerves device that means the firmware reboots — usually surprising unless this is intentionally a reboot helper.
Show 20 affected packages
amoc @4.1.0
appsignal @2.17.0
beam_benchmarks @0.2.0
fasta erlang:halt/1
threadring erlang:halt/0
threadring2 erlang:halt/0
exalign @0.1.5
Elixir.ExAlign.CLI Elixir.System:halt/1
fact @0.4.1
Elixir.Mix.Tasks.Fact.Merkle.VerifyProof Elixir.System:halt/1
h2 @0.5.0
h2_client erlang:halt/1
h2_server erlang:halt/1
igniter @0.7.9
inets @9.6.2
kernel @10.6.2
localize @0.19.0
Elixir.Mix.Tasks.Localize.DownloadLocales Elixir.System:halt/1
nerves_hub_cli @2.1.0
Elixir.Mix.NervesHubCLI.Shell Elixir.System:halt/1
Elixir.NervesHubCLI.CLI.Shell Elixir.System:halt/1
nerves_system_linter @0.4.1
Elixir.Mix.Tasks.Nerves.System.Lint Elixir.System:halt/1
phoenix @1.8.5
phoenix_kit @1.7.98
quic @1.1.0
quic_h3_client erlang:halt/1
quic_h3_server erlang:halt/1
quic_interop_client erlang:halt/1
req_llm @1.10.0
stdlib @7.3
tools @4.1.4
torngen @0.1.10
zen_websocket @0.4.2
Non-deterministic build
15 packages
Repeated builds of this package's source produced different binaries — its compiled output isn't reproducible. Breaks firmware-image determinism (you can't audit that two builds of the same source produced the same firmware) and complicates debugging.
Show 15 affected packages
accrue @0.2.0
non-deterministic on: arm64, riscv64, x86_64
accrue_admin @0.2.0
non-deterministic on: arm64, riscv64, x86_64
aludel @0.1.19
non-deterministic on: arm64, riscv64, x86_64
ash_form_builder @0.2.3
non-deterministic on: arm64, riscv64, x86_64
bentix @0.1.0
non-deterministic on: arm64, riscv64, x86_64
caravela_svelte @0.1.3
non-deterministic on: arm64, riscv64, x86_64
ckeditor5_phoenix @1.24.2
non-deterministic on: arm64, riscv64, x86_64
espex @0.1.1
non-deterministic on: arm64, riscv64, x86_64
llm_db @2026.4.4
non-deterministic on: arm64, riscv64, x86_64
localize @0.19.0
non-deterministic on: arm64, riscv64, x86_64
mob_dev @0.2.10
non-deterministic on: arm64
nerves_hub_link @2.11.1
non-deterministic on: arm64, riscv64, x86_64
nerves_time_zones @0.3.8
non-deterministic on: arm64, riscv64, x86_64
phoenix_kit_posts @0.1.2
non-deterministic on: arm64, riscv64, x86_64
testcontainers @2.2.0
non-deterministic on: arm64, riscv64, x86_64
Uses System.shell / :os.cmd
7 packages
Spawns a shell to run commands (System.shell/:os.cmd), as opposed to executing a binary directly with Port.open/System.cmd. Brittle — the target shell may not exist or behave like the dev host — and a shell-injection surface for any user-provided arguments.
Show 7 affected packages
beam_benchmarks @0.2.0
estone_SUITE os:cmd/1
chromic_pdf @1.17.1
kernel @10.6.2
mochiweb @3.3.0
os_mon @2.11.2
owl @0.13.0
runtime_tools @2.3.1
Writes to its source directory during build
1 package
The package's build step wrote files into `deps//` (its own source tree) rather than staying inside `MIX_BUILD_PATH`. Bad form on Nerves because those stray artifacts persist across `MIX_TARGET` switches — a NIF compiled for rpi4 stays in source and breaks the x86_64 build that follows.
Show 1 affected package
lumis @0.4.0
priv/native/liblumis_nif-v0.4.0-nif-2.15-riscv64gc-unknown-linux-gnu.so
priv/native/liblumis_nif-v0.4.0-nif-2.15-x86_64-unknown-linux-musl.so