
Athena OS est une distribution basée sur Arch/Nix, axée sur la cybersécurité. Apprenez, pratiquez et amusez-vous avec n’importe quel outil de hacking !

Les paquets de ce dépôt sont maintenus à jour automatiquement grâce à un workflow GitHub Actions quotidien propulsé par nvchecker.
L'automatisation s'exécute chaque jour (et peut également être déclenchée manuellement) et suit les étapes suivantes :
Génération de la configuration — .nvchecker/generate-nvchecker-config.py scanne chaque PKGBUILD sous src/ et génère automatiquement .nvchecker/nvchecker.toml. Chaque paquet est classé dans l'une des catégories suivantes :
pkgver= statique et une URL de source distante. Suivi via le dernier tag/la dernière release sur la plateforme d'hébergement.pkgver() et une source git+https://. Suivi via le dernier commit amont.Vérification des versions — nvchecker interroge l'amont de chaque paquet suivi et écrit les résultats dans .nvchecker/newver.json. Ce fichier est comparé à .nvchecker/oldver.json (présent dans le dépôt) pour détecter les paquets ayant une nouvelle version disponible.
Le générateur de configuration et le workflow CI résolvent tous deux les références de variables shell dans les lignes source=, afin que les URL indirectes comme la suivante soient traitées correctement :
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")
Les formes d'expansion de paramètres bash suivantes sont prises en charge :
Les constructions bash suivantes ne sont pas résolues par l'automatisation. Les PKGBUILDs qui en dépendent seront ignorés proprement avec une note informative — aucune erreur n'est levée, et ils peuvent toujours être mis à jour manuellement.
Si votre PKGBUILD utilise l'une de ces constructions et que l'automatisation l'ignore, vous pouvez soit réécrire l'affectation comme une simple ligne var=value, soit ouvrir une PR pour mettre à jour la version manuellement.
Mise à jour du PKGBUILD et PR — pour chaque paquet obsolète, le workflow :
auto-update/<pkgname>-<newver>.pkgver et réinitialise pkgrel à 1 dans le PKGBUILD.updpkgsums.pkgver() localement pour calculer la véritable chaîne de version au format Arch (par ex. 131.940a5d3), et conserve sha512sums=('SKIP') tel quel.auto-update pour relecture humaine avant que quoi que ce soit n'atterrisse sur main.Sauvegarde de l'état — .nvchecker/oldver.json est mis à jour avec les versions vues lors de cette exécution et réintégré dans main, afin que la prochaine exécution n'ouvre des PR que pour les changements réellement nouveaux.
| Plateforme | Détection |
|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + auto-hébergé) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (auto-hébergé) | gitea.*/<user>/<repo> |
| Sourcehut | git.sr.ht/~<user>/<repo> |
| Syntaxe | Signification | Exemple |
|---|
$var / ${var} | Substitution simple | $pkgname → athena-settings |
${var#prefix} | Supprime le préfixe le plus court correspondant | ${pkgname#athena-} → settings |
${var%suffix} | Supprime le suffixe le plus court correspondant | ${pkgname%-git} → athena-settings |
| Syntaxe non prise en charge | Exemple | Raison |
|---|
## suppression gloutonne de préfixe | ${var##*/} | Seule la forme non gloutonne de # est implémentée |
%% suppression gloutonne de suffixe | ${var%%.*} | Seule la forme non gloutonne de % est implémentée |
| Extraction de sous-chaîne | ${var:0:3} | Opérateur différent, rare dans les PKGBUILDs |
| Substitution de motif | ${var//foo/bar} | Opérateur différent, rare dans les PKGBUILDs |
| Expansion arithmétique | $((pkgver + 1)) | Hors du périmètre du suivi de version |
| Expansions imbriquées | ${${var}#prefix} | Non valide en POSIX ; inutilisé en pratique |