Self-hosted Flatpak (OSTree) repository for the GNOME applications I publish. Published to GitHub Pages at https://tunix.github.io/flatpak/ and updated automatically on every app release.
flatpak remote-add --if-not-exists tunix https://tunix.github.io/flatpak/tunix.flatpakrepo
flatpak install tunix <app-id>Example:
flatpak install tunix io.github.tunix.valhallaUpdates are delivered through the normal channel — flatpak update picks up
new releases from this repo automatically.
| App | Description |
|---|---|
| io.github.tunix.valhalla | Theme-aware wallpaper switcher (Rust + GTK4/libadwaita) |
- Each app release in its own repository sends a
repository_dispatchevent (app-released) to this repo. - The
update-repoworkflow rebuilds the changed app withflatpak-builder, commits it into the OSTree repo underrepo/, and republishes thesummary(signed with a GPG key held in repository secrets). - Previous app builds are preserved in the repo, so existing installs keep
working and deltas (
--generate-static-deltas) keep upgrades fast. tunix.flatpakrepo(remote metadata + GPG key) and the per-app.flatpakreffiles live at the repo toplevel and are what users add.
apps/<app-id>.json per-app flatpak-builder manifest
apps/<app-id>.flatpakref per-app install link
tunix.flatpakrepo remote metadata (add this one)
repo/ OSTree repository (published to gh-pages)
- Drop the app's manifest into
apps/<app-id>.json. - Add the app id to the
matrix.applist inupdate-repo.yml. - In the app's own repo, add a job that dispatches
app-releasedwith{ "app_id": "...", "tag": "vX.Y.Z" }on release.
- The GPG signing key is generated once and stored in the
GPG_KEYsecret; losing it means every user has to re-add the remote, so it is kept long-term. - GitHub Pages (1 GB limit) is the publishing target;
build-update-repo --prunekeeps the OSTree repo from growing without bound.