> cat /dev/github | grep security-tools
discovered 30 Mar 2026

athena

Vim Script β˜… 1199 via github-topic
β†’ View on GitHub

AI Summary: Athena OS is a penetration testing operating system designed for InfoSec professionals, bug bounty hunters, and cybersecurity enthusiasts. It features automated package updates through GitHub Actions, maintains a collection of security tools, and offers Docker container support, enhancing accessibility and usability for various security assessments. Notably, it provides a user-friendly experience for both seasoned professionals and newcomers in the field of cybersecurity.


README

Dive into a new Pentesting Experience with
Athena OS

image

πŸ…Born for InfoSec Professionals, Bug Bounty Hunters, Passionate Students and Spicy HackersπŸ…

πŸ’ž Get Athena OS Now! πŸ’ž


Click Docker icon above to explore Athena OS Docker containers!

Click the icon above to explore Athena OS WSL in Microsoft Store App!

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:

  1. Config generation β€” .nvchecker/generate-nvchecker-config.py scans every PKGBUILD under src/ 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 a git+https:// source. Tracked by latest upstream commit.
    • Local-only package β€” all sources are local files. Skipped silently (no upstream to track).
  2. Version check β€” nvchecker queries 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.

  3. PKGBUILD update & PR β€” for each outdated package the workflow:

    • Creates a dedicated branch auto-update/<pkgname>-<newver>.
    • Updates pkgver and resets pkgrel to 1 in the PKGBUILD.
    • 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 keeps sha512sums=('SKIP') as is.
    • Opens a pull request labelled auto-update for human review before anything lands on main.
  4. State save β€” .nvchecker/oldver.json is updated with the versions seen in this run and committed back to main, so the next run only opens PRs for genuinely new changes.

Supported hosting platforms

PlatformDetection
GitHubgithub.com/<user>/<repo>
GitLab (gitlab.com + self-hosted)gitlab.*/<user>/<repo>
Codebergcodeberg.org/<user>/<repo>
Gitea (self-hosted)gitea.*/<user>/<repo>
Sourcehutgit.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:

SyntaxMeaningExample
$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 syntaxExampleReason
## 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.