π Get Athena OS Now! π
Packages in this repository are kept up to date automatically via a daily GitHub Actions workflow powered by nvchecker.
The automation runs every day (and can also be triggered manually) and goes through the following steps:
-
Config generation β
.nvchecker/generate-nvchecker-config.pyscans everyPKGBUILDundersrc/and auto-generates.nvchecker/nvchecker.toml. Each package is classified as one of:- Release package β has a static
pkgver=and a remote source URL. Tracked by latest tag/release on the hosting platform. - VCS package β has a
pkgver()function and agit+https://source. Tracked by latest upstream commit. - Local-only package β all sources are local files. Skipped silently (no upstream to track).
- Release package β has a static
-
Version check β
nvcheckerqueries the upstream of every tracked package and writes the results to.nvchecker/newver.json. This is compared against.nvchecker/oldver.json(committed in the repo) to find packages that have a new version available. -
PKGBUILD update & PR β for each outdated package the workflow:
- Creates a dedicated branch
auto-update/<pkgname>-<newver>. - Updates
pkgverand resetspkgrelto1in thePKGBUILD. - For release packages: regenerates checksums with
updpkgsums. - For VCS packages: clones the upstream repo, runs the
pkgver()function locally to compute the real Arch-style version string (e.g.131.940a5d3), and keepssha512sums=('SKIP')as is. - Opens a pull request labelled
auto-updatefor human review before anything lands onmain.
- Creates a dedicated branch
-
State save β
.nvchecker/oldver.jsonis updated with the versions seen in this run and committed back tomain, so the next run only opens PRs for genuinely new changes.
| Platform | Detection |
|---|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + self-hosted) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (self-hosted) | gitea.*/<user>/<repo> |
| Sourcehut | git.sr.ht/~<user>/<repo> |
The config generator and the CI workflow both resolve shell variable references in source= lines so that indirect URLs like the following are handled correctly:
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")The following bash parameter expansion forms are supported:
| Syntax | Meaning | Example |
|---|---|---|
$var / ${var} |
Simple substitution | $pkgname β athena-settings |
${var#prefix} |
Strip shortest matching prefix | ${pkgname#athena-} β settings |
${var%suffix} |
Strip shortest matching suffix | ${pkgname%-git} β athena-settings |
The following bash constructs are not resolved by the automation. PKGBUILDs that rely on them will be skipped gracefully with an informational note β no error is raised, and they can always be updated manually.
| Unsupported syntax | Example | Reason |
|---|---|---|
## greedy prefix strip |
${var##*/} |
Only non-greedy # is implemented |
%% greedy suffix strip |
${var%%.*} |
Only non-greedy % is implemented |
| Substring extraction | ${var:0:3} |
Different operator, rare in PKGBUILDs |
| Pattern substitution | ${var//foo/bar} |
Different operator, rare in PKGBUILDs |
| Arithmetic expansion | $((pkgver + 1)) |
Out of scope for version tracking |
| Nested expansions | ${${var}#prefix} |
Not valid POSIX; not used in practice |
If your PKGBUILD uses any of the above and the automation skips it, you can either rewrite the assignment as a plain var=value line or open a PR updating the version manually.

