Daily mirror of zulip/zulip-flutter arm64 APK into Forgejo Packages for SFOS aarch64 (AppSupport).
  • Shell 81.6%
  • QML 9.2%
  • Nix 5%
  • JavaScript 2.4%
  • Python 1.4%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Grok d009384f89
All checks were successful
harbour-zulip-rpm / gate (push) Successful in 0s
harbour-zulip-rpm / build-blocked (push) Has been skipped
sfos-aarch64-research / gate (push) Successful in 0s
sfos-aarch64-research / sdk-build-blocked (push) Has been skipped
harbour-zulip-rpm / build (push) Successful in 6s
sfos-aarch64-research / sdk-build (push) Successful in 1m18s
Merge pull request 'fix(publish-rpm): multipart Content-Type on release assets' (#19) from fix/publish-rpm-multipart into main
2026-09-25 10:35:02 +02:00
.forgejo/workflows Merge pull request 'ci: harbour-zulip noarch RPM via Platform SDK + release publish' (#18) from feature/harbour-zulip-rpm-ci into main 2026-09-25 10:33:07 +02:00
docs Merge pull request 'ci: harbour-zulip noarch RPM via Platform SDK + release publish' (#18) from feature/harbour-zulip-rpm-ci into main 2026-09-25 10:33:07 +02:00
harbour-zulip ci: build harbour-zulip noarch RPM in Platform SDK and publish 2026-09-25 10:31:55 +02:00
scripts fix(publish-rpm): do not force Content-Type on multipart asset upload 2026-09-25 10:34:51 +02:00
.gitignore scaffold: flutter→SFOS aarch64 research flake + gated CI 2026-09-25 08:54:30 +02:00
flake.nix chore: pre-Docker hardening (sdk-version SSoT + next plan) 2026-09-25 09:09:05 +02:00
README.md ci: build harbour-zulip noarch RPM in Platform SDK and publish 2026-09-25 10:31:55 +02:00
sdk-version.json chore: pre-Docker hardening (sdk-version SSoT + next plan) 2026-09-25 09:09:05 +02:00
upstream-version.json scaffold: flutter→SFOS aarch64 research flake + gated CI 2026-09-25 08:54:30 +02:00

zulip-sfos

Research repo: compile zulip/zulip-flutter for Sailfish OS aarch64 using the Sailfish Platform SDK in Docker on the nixos Forgejo Actions runner.

Honest risk

Flutter has no official Sailfish OS embedder. Official targets are Android, iOS, Linux (GTK), macOS, Windows, and Web. Getting a native SFOS RPM means either writing a custom embedder, adapting an existing Linux embedder to SFOS/Qt/Wayland, or falling back to a WebView shell later if native research fails. This may not work.

We are not treating the upstream app-release.apk as the primary product anymore. The goal product is a future aarch64 RPM installable on SFOS.

Product paths

Two tracks live in this repo:

Path Location Intent
WebView (product scaffold) harbour-zulip/ Ship a Silica + Sailfish.WebView shell that loads Zulip web. Configurable instance URL. Prefer noarch RPM. See docs/webview.md.
Native Flutter research scripts/, docs/research.md, CI sfos-aarch64-research Probe whether a Flutter engine / embedder can ever yield an aarch64 RPM. May fail.

WebView is the interim/product path D. H. chose to ship now; native research continues in parallel. Shipping WebView is not a claim that Flutter compiled for SFOS.

Status

Docker on nixos runner: available (run 9: SDK 5.2.0.15 smoke green). Next: toolchain/glibc probe for Flutter engine feasibility (artifacts/toolchain-probe.log). Still no false-green — rpm_produced stays false until an aarch64 RPM exists. Daily upstream tracking still runs (metadata only).

Device target: SFOS 5.2.x (aarch64). Active SDK pin: 5.2.0.15 — single source of truth in sdk-version.json.

See docs/research.md for embedder notes and candidate approaches, and docs/next.md for the post-Docker ordered plan.

Upstream

How daily CI works

Workflow Trigger Purpose
daily-track cron 51 6 * * * UTC (= 08:51 Europe/Prague) + workflow_dispatch Run scripts/track-upstream.sh; if a newer zulip-flutter release exists, commit updated upstream-version.json to main
harbour-zulip-scaffold push/PR on harbour-zulip/** + workflow_dispatch Light check: .pro / .spec / QML present (no SDK mb2 build)
harbour-zulip-rpm push/PR on harbour-zulip/** + workflow_dispatch Platform SDK mb2/rpmbuild → noarch RPM; on main publish release asset harbour-zulip-v0.1.0 (+ Packages best-effort)
sfos-aarch64-research workflow_dispatch, push to flake/scripts, optional after track Gate on Docker; when present, smoke the SDK and probe Flutter→SFOS (logs as artifacts). Never claim success without an aarch64 Flutter RPM

Tracking records release metadata (tag + APK URL for reference). It does not download multi-hundred-MB APKs daily.

What “done” looks like

  1. Docker available on the nixos Forgejo Actions runner.
  2. Research produces a build that yields an aarch64 RPM of Zulip for SFOS (or an honest documented failure / WebView fallback decision).
  3. That RPM is published to Forgejo Packages and/or a release asset and is installable on a Sailfish OS aarch64 device.

Publish: scripts/publish-rpm.sh (release-assets-first, then Packages type=rpm best-effort).

harbour-zulip RPM

CI: .forgejo/workflows/harbour-zulip-rpm.yml builds a noarch harbour RPM with coderus/sailfishos-platform-sdk (pin in sdk-version.json) and publishes it as a Forgejo release asset (harbour-zulip-v0.1.0). See docs/webview.md.