- Shell 81.6%
- QML 9.2%
- Nix 5%
- JavaScript 2.4%
- Python 1.4%
- Other 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
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
|
||
| .forgejo/workflows | ||
| docs | ||
| harbour-zulip | ||
| scripts | ||
| .gitignore | ||
| flake.nix | ||
| README.md | ||
| sdk-version.json | ||
| upstream-version.json | ||
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
- Source / releases: https://github.com/zulip/zulip-flutter
- Tracked tag (see
upstream-version.json): updated by daily CI
Links
- This repo: https://git.bitp.cz/donach/zulip-sfos
- SDK image:
coderus/sailfishos-platform-sdk— pin insdk-version.json(device target SFOS 5.2.x →5.2.0.15; orca historically used5.0.0.43) - Nix flake:
flake.nix(devShell for research tools; does not pull multi-GB SDK images onnix flake check)
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
- Docker available on the nixos Forgejo Actions runner.
- Research produces a build that yields an aarch64 RPM of Zulip for SFOS (or an honest documented failure / WebView fallback decision).
- 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.