Third-party Debian packages for the Armbian apt repository: VS Code, Chromium, Firefox, ZFS, Raspberry Pi userspace, mesa and more. This repository holds the package list, the upstream signing keys and the tool that downloads, builds, checks and sorts the packages; the Armbian repository update takes the result and publishes it.
Package list with versions per release and architecture: https://external.armbian.com/
mirror/<name>.yaml built packages to download: apt repository, GitHub release, URL
keys/ upstream signing keys (binary .gpg)
extpkg/ the tool (Python package, invoked as `python3 -m extpkg`)
tests/ unit tests (unittest)
tools/ helper scripts (compare-incoming, import-os)
docs/ technical documentation
Build configs live under a build/ directory at the repository root (see CONTRIBUTING.md and docs/technical.md).
debs-beta/extra/<release>-<target>/ every package, for the beta repository
debs/extra/<release>-<target>/ packages newer than the published stable version
manifest.json source, version and SHA256 of each file
A config can limit itself to one repository with repositories: [beta].
- Python 3 for the
extpkgtool, the helpers intools/and the tests. - YAML for package configs under
mirror/(andbuild/) and for the GitHub Actions workflows. - Standard Debian tooling invoked by the tool and the workflows:
gpgv,dpkg-deb,dpkg-dev,fakeroot,apt-get,rsync,ssh,patch,xz-utils. - The archive keyrings
debian-archive-keyringandubuntu-keyringfor dependency checks.
python3 -m extpkg validate # check all configs
python3 -m extpkg run --dry-run --only gh # download and check one package, no upload
python3 -m extpkg plan --configs build --only fastfetch # resolve the sources of one buildRun the unit tests:
python3 -m unittest discover -s tests -t .A build runs in a container of the target release. See docs/technical.md.
Read CONTRIBUTING.md. With Claude Code, run the add-external-package skill (see .claude/skills/add-external-package/SKILL.md).
Short rules:
- Choose the first source that works: apt repository with signed
InRelease, then GitHub release with.debassets, then direct URL. - Do not add a signing key that you did not verify against a second source.
- Do not turn off
verify.signatureorverify.checksums. - Open a pull request. The Check workflow validates the config and does a dry-run download.
Workflow runs, schedules and status for this repository are listed on the Armbian CI overview:
https://actions.armbian.com/?repo=external
Dry run is the default everywhere. Scheduled Sync runs upload only when the upload secrets are set; scheduled Build runs upload only when the repository variable BUILD_LIVE is true. Pull requests never upload.
- CONTRIBUTING.md: how to add a package, step by step.
- docs/technical.md: checks, config reference, builds, state, variables and secrets.
- CLAUDE.md: instructions for AI-assisted contributions.
- Armbian documentation: https://docs.armbian.com/
- Armbian project: https://www.armbian.com/

