Builder for standard app to flatpak for use in atomic distro.
  • Lua 68.3%
  • HTML 23.5%
  • CSS 3.3%
  • Terra 3.2%
  • Perl 1.1%
  • Other 0.6%
Find a file
Lameur 608be1bc4f
Some checks failed
Build & Publish Flatpaks / Build Flatpak OCI (push) Failing after 1m50s
Some fix
Signed-off-by: Lameur <adam.auclair@outlook.fr>
2026-04-03 06:29:19 +02:00
.forgejo Add assume yes 2026-04-03 06:10:59 +02:00
.mise Some fix 2026-04-03 06:29:19 +02:00
apps/aseprite Some fix 2026-04-02 15:58:08 +02:00
ci Some fix 2026-04-03 06:29:19 +02:00
libs Some fix 2026-04-03 06:29:19 +02:00
tasks startup for flatpak builder 2026-04-02 08:27:57 +02:00
.gitignore startup for flatpak builder 2026-04-02 08:27:57 +02:00
flatpak.code-workspace startup for flatpak builder 2026-04-02 08:27:57 +02:00
LICENSE Initial commit 2026-04-01 19:25:34 +02:00
mise.toml Fast update 2026-04-03 05:50:24 +02:00
README.md startup for flatpak builder 2026-04-02 08:27:57 +02:00

📦 Flatpak Builder

Build et publication d'applications Flatpak en images OCI (registry Forgejo).

🚀 Quick Start

# Vérifier le système
mise flatpak-check

# Lister les apps
mise flatpak-list

# Builder (format bundle + OCI)
APP=aseprite mise flatpak-build

# Publier en OCI
APP=aseprite REGISTRY=git.stalla.dev/division mise flatpak-publish-oci

📁 Structure

flatpak/
├── ci/                  # Scripts de build
│   ├── build.lua        # Builder principal
│   ├── check-setup.lua  # Vérification système
│   ├── list-apps.lua    # Liste apps
│   ├── init-app.lua     # Init nouvelle app
│   └── publish-oci.lua  # Publication OCI
├── apps/                # Apps Flatpak (submodules)
│   └── [app]/
│       └── builder.lua  # Builder spécifique
├── tasks/               # Tâches spécifiques (aseprite, etc.)
├── build/               # Build artifacts
├── oci/                 # Images OCI
└── export/              # Exports Flatpak

🎯 Commandes

Build

# Toutes les apps
mise flatpak-build

# Une app spécifique
APP=aseprite mise flatpak-build

# Format spécifique
APP=aseprite OUTPUT=oci mise flatpak-build     # OCI seulement
APP=aseprite OUTPUT=bundle mise flatpak-build  # Bundle seulement
APP=aseprite OUTPUT=both mise flatpak-build    # Les deux (défaut)

Publication OCI

# Avec credentials
APP=aseprite \
  REGISTRY=git.stalla.dev/division \
  REGISTRY_USER=division \
  REGISTRY_TOKEN=$TOKEN \
  mise flatpak-publish-oci

Maintenance

mise flatpak-clean     # Nettoyer build/oci/export/logs
mise flatpak-list      # Liste apps
mise flatpak-check     # Vérifier système

🆕 Créer une App

# Initialiser
APP=firefox mise flatpak-init

# Éditer builder
vim apps/firefox/builder.lua

# Ajouter submodule
git submodule add https://github.com/flatpak/firefox apps/firefox

# Builder
APP=firefox mise flatpak-build

🐳 Format OCI

Publication

Les images OCI sont automatiquement créées avec OUTPUT=oci ou OUTPUT=both.

Structure OCI générée:

oci/[app]/
├── index.json
├── oci-layout
└── blobs/

Installation depuis Registry OCI

# Ajouter le remote OCI
flatpak remote-add --if-not-exists --oci myrepo \
  oci+https://git.stalla.dev/division

# Installer l'app
flatpak install myrepo aseprite

🔧 Variables d'Environnement

Pour ci/build.lua

  • APP - App à builder (vide = toutes)
  • VERBOSE=1 - Logs détaillés
  • DRY_RUN=1 - Simulation
  • OUTPUT - bundle|oci|both (défaut: both)

Pour ci/publish-oci.lua

  • APP - App à publier
  • REGISTRY - URL registry (défaut: git.stalla.dev/division)
  • REGISTRY_USER - Username
  • REGISTRY_TOKEN - Token d'authentification

Fournies aux builders

Chaque apps/*/builder.lua reçoit:

  • APP_NAME - Nom app
  • APP_PATH - Chemin apps/[nom]
  • BUILD_DIR - build/[nom]
  • EXPORT_DIR - export/[nom]
  • OCI_DIR - oci/[nom]
  • LOG_DIR - logs/[nom]
  • OUTPUT_FORMAT - bundle|oci|both

📋 Builder Template

Chaque app a un builder.lua qui:

  1. Définit le manifest Flatpak
  2. Build avec flatpak-builder
  3. Exporte le repo
  4. Crée bundle et/ou OCI selon OUTPUT_FORMAT

Voir apps/aseprite/builder.lua pour exemple.

🔄 CI/CD Forgejo

Le workflow .forgejo/workflows/flatpak.yml:

  • Build automatique (push/PR/schedule)
  • Publication OCI dans registry Forgejo
  • Cache builds
  • Artifacts (bundles, images OCI)

🛠️ Dépendances

# Système
sudo apt install flatpak flatpak-builder skopeo podman

# Lua
luarocks install luafilesystem lua-cjson

# mise
mise install

📚 Ressources