Athena
Athena OS is a Arch/Nix-based distro focused on Cybersecurity. Learn, practice and enjoy with any hacking tool!
Install / Use
/learn @Athena-OS/AthenaREADME
Automated Package Updates
Packages in this repository are kept up to date automatically via a daily GitHub Actions workflow powered by nvchecker.
How it works
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.
Supported hosting platforms
| 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> |
Shell variable expansion in PKGBUILDs
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 |
Known limitations
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.
