Modules
Nerves Binary Package Repository — the library underpinning every :nbpr_* Hex package.
Sets up PATH, LD_LIBRARY_PATH, and any package-declared runtime_env so
external programs spawned by the BEAM can find every loaded nbpr package's
binaries, shared libraries, and runtime resources.
Cache-key, naming, and on-disk layout for NBPR package artefacts.
On-disk cache for NBPR package artefacts.
Orchestrates the fetch path.
Firmware-time shared-library resolution check.
Behaviour for nbpr artefact resolvers.
Resolver for {:ghcr, "ghcr.io/<owner>"} site specs.
Resolver for {:github_releases, "owner/repo"} site specs.
The macro every NBPR package uses.
Discovery helpers for building nbpr packages against the user's pinned Buildroot tree.
Behaviour for the different ways NBPR can produce a per-package Buildroot artefact.
Shared runner for the container-based backends (NBPR.Buildroot.Backend.Docker,
NBPR.Buildroot.Backend.Podman, and future CLI-compatible runtimes).
Buildroot backend that runs the build inside Docker.
Buildroot backend that runs the build inside Podman.
Buildroot backend that runs make natively on the host.
Drives a per-package Buildroot build.
Source-builds an NBPR package artefact tarball end-to-end.
Generates a per-build Buildroot defconfig that layers nbpr-specific settings on top of the active Nerves system's defconfig.
Reads Buildroot's per-package .files-list.txt / .files-list-staging.txt
and copies only the listed files (with a runtime-only filter) out of a
per-package merged sysroot.
Applies Buildroot's target-finalize cleanup to a harvested per-package
target tree.
Locates per-package Buildroot output and packages it as an
NBPR.Pack.sources() map for hand-off to NBPR.Pack.pack!/3.
Reads metadata for a Buildroot mainline package from a cached, extracted
BR tree. Used by mix nbpr.new so the scaffolded mix.exs and module
arrive pre-populated with version, licences, homepage, and a starter
description sourced from BR itself rather than left as # TODO stubs.
Manages the cached Buildroot source tree.
Resolves a path to the full source tree of an active Nerves system,
fetching from GitHub when the user has the Hex tarball (which deliberately
omits Config.in and patches/).
Minimal ELF introspection: reads a binary's DT_NEEDED shared-library
dependencies via readelf.
Pretty-printer for NBPR.Package metadata.
Pure-Elixir OCI artefact push to ghcr.io.
Produces a canonical NBPR artefact tarball from a directory of built files.
Metadata struct describing an NBPR package.
Metadata struct for a single daemon declared by an NBPR package.
Runtime helpers for Application-bearing NBPR packages.
SPDX licence-list cache and validation.
Mix Tasks
Introspect and garbage-collect the extracted-artefact cache that
mix nbpr.fetch/mix nbpr.build populate under
$NERVES_ARTIFACTS_DIR/nbpr/ (defaulting to ~/.local/share/nerves/nbpr/).
Refreshes docs/reference/catalogue.md by globbing the workspace's
packages/nbpr_*/ directories and reading each package's mix.exs
for the version and description.
Builds an NBPR package from source against the active Nerves system's Buildroot tree, then packs the result into a canonical artefact tarball.
Walks the user's loaded applications for nbpr packages, fetches each one's
artefact tarball for the active Nerves system (if not already cached), and
copies the artefact's target/ contents into the package's priv/ so it
ships as part of the OTP release.
Pretty-prints the NBPR.Package metadata struct for the given module.
Installs and configures NBPR in a Nerves project so it can consume
binary packages from the nbpr Hex organisation.
Generates the prebuild matrix for CI: every combination of an nbpr_*
package under packages/ with a target system declared in the workspace
mix.exs @prebuild_systems map.
Scaffolds a new NBPR package under ./packages/nbpr_<name>/.
Produces a canonical nbpr artefact tarball from already-built files on disk.
Uploads a tarball produced by mix nbpr.pack to the first supported backend
declared in the package's artifact_sites:.
Diffs each package's mix.exs @version against the latest version
published to the nbpr Hex organisation, returning the topo-sorted
list of packages that need a fresh release tag.