No description
  • Luau 79.1%
  • Nix 20.9%
Find a file
Lameur 155a04c73d
Fix json scheme location
Signed-off-by: Lameur <adam.auclair@outlook.fr>
2026-06-11 16:57:28 +02:00
config refactor 2026-05-25 21:33:59 +02:00
repos refactor 2026-05-25 21:33:59 +02:00
schemas Fix json scheme location 2026-06-11 16:57:28 +02:00
.editorconfig refactor 2026-05-25 21:33:59 +02:00
.gitignore refactor 2026-05-25 21:33:59 +02:00
.luaurc refactor 2026-05-25 21:33:59 +02:00
AGENTS.md refactor 2026-05-25 21:33:59 +02:00
architecture.code-workspace refactor 2026-05-25 21:33:59 +02:00
flake.nix refactor 2026-05-25 21:33:59 +02:00
LICENSE Initial commit 2026-05-25 15:43:42 +02:00
mise.lock refactor 2026-05-25 21:33:59 +02:00
mise.toml refactor 2026-05-25 21:33:59 +02:00
README.md refactor 2026-05-25 21:32:54 +02:00
shell.nix refactor 2026-05-25 21:33:59 +02:00

Foundry — Architecture

Document de référence pour agents IA et contributeurs. Mis à jour manuellement — source de vérité pour la structure de l'organisation.

Vue d'ensemble

Foundry est une forge logicielle qui prend une définition déclarative (definition.toml) et produit des packages signés et reproductibles pour toutes les plateformes cibles. Chaque sous-dossier de C:\Users\Adam\projects\foundry\ est un repo Git indépendant hébergé sur git.stalla.dev/foundry/<nom>.

foundry/
├── apps/          ← cœur : définitions + CI + builders Luau
├── updater/       ← exécutable autonome de mise à jour
├── meta/          ← index JSON + feed de releases
├── nix/           ← flake Nix + overlay nixpkgs
├── scoop/         ← bucket Scoop (Windows)
├── winget/        ← manifests winget (Windows)
├── homebrew/      ← tap Homebrew (macOS)
├── aur/           ← PKGBUILDs (Arch Linux)
├── choco/         ← packages Chocolatey (Windows)
└── architecture/  ← ce repo : documentation transversale

Stack technique

Outil Rôle
Lune Runtime Luau — tous les scripts de build et CI
mise Gestion des toolchains (cmake, ninja, cosign, lune…)
cosign Signature keyless des artefacts via Sigstore
sccache / buildcache Cache de compilation distribué via S3
Forgejo CI/CD + registry OCI + releases

Flux complet

definition.toml
      │
      ▼
 forge:build          (apps/.mise/tasks/forge/build.luau)
      │  résout les sources, compile via cmake/cargo/make/wasm-pack
      │  injecte sccache/buildcache via secrets CI
      ▼
 Artefacts bruts
  .flatpak · .AppImage · -setup.exe · .dmg · .wasm
      │
      ▼
 forge:sign           (apps/.mise/tasks/forge/sign.luau)
      │  cosign sign-blob + SHA256SUMS + SBOM (syft)
      ▼
 forge:publish        (apps/.mise/tasks/forge/publish.luau)
      │  OCI registry (skopeo) + Forgejo Releases
      │
      ├──▶ dispatch → foundry/meta    (bump index JSON)
      ├──▶ dispatch → foundry/nix     (bump hash dans .nix)
      ├──▶ dispatch → foundry/scoop   (commit manifest JSON)
      ├──▶ dispatch → foundry/winget  (commit YAML + PR upstream)
      ├──▶ dispatch → foundry/homebrew(commit cask .rb)
      ├──▶ dispatch → foundry/aur     (commit PKGBUILD)
      └──▶ dispatch → foundry/choco   (commit nuspec)

Règles de séparation des repos

Un repo séparé est justifié si au moins une de ces conditions est vraie :

  1. Cycle de vie différent — le repo peut être mis à jour sans rebuilder (bump version + hash).
  2. Outillage externe spécifique — PR upstream requise (winget-pkgs, homebrew-core, AUR).
  3. Audience distincte — consommé directement par des tiers (Homebrew tap, Scoop bucket).
  4. Review humaine requise — winget et homebrew-core exigent une PR approuvée.

Secrets CI requis

Tous les secrets sont définis dans les settings Forgejo du repo apps.

Secret Usage
CACHE_S3_ENDPOINT Endpoint S3 du bucket sccache
CACHE_S3_BUCKET Nom du bucket (ex: ccache)
CACHE_S3_REGION Région S3 (défaut: us-east-1)
CACHE_S3_ACCESS_KEY Clé d'accès S3
CACHE_S3_SECRET_KEY Clé secrète S3
REGISTRY_TOKEN Token push OCI registry
MISE_TOKEN Token GitHub pour mise (rate limit)

Ces secrets ne doivent jamais apparaître dans un definition.toml.

Repos détaillés

  • apps — cœur du système
  • updater — exécutable de mise à jour
  • meta — index et feed
  • nix — flake et overlay
  • scoop — bucket Scoop
  • winget — manifests winget
  • homebrew — tap Homebrew
  • aur — PKGBUILDs
  • choco — packages Chocolatey