Sailfish OS store for Forgejo Packages on git.bitp.cz
  • QML 33.7%
  • Shell 31.4%
  • C++ 19%
  • JavaScript 10.3%
  • Nix 3.2%
  • Other 2.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Grok c126686fb9
All checks were successful
harbour-sfos-forgejo-store-rpm / gate (push) Successful in 0s
harbour-sfos-forgejo-store-rpm / build-blocked (push) Has been skipped
harbour-sfos-forgejo-store-rpm / build (push) Successful in 33s
Merge pull request 'fix(rpm): allow aarch64 binary in noarch harbour RPM' (#7) from fix/noarch-allow-aarch64-binary into main
2026-09-25 14:39:39 +02:00
.forgejo/workflows Add harbour RPM CI/publish and self-list in release catalog 2026-09-25 14:34:24 +02:00
docs Add harbour RPM CI/publish and self-list in release catalog 2026-09-25 14:34:24 +02:00
icons Add harbour RPM CI/publish and self-list in release catalog 2026-09-25 14:34:24 +02:00
qml Add harbour RPM CI/publish and self-list in release catalog 2026-09-25 14:34:24 +02:00
rpm fix(rpm): allow aarch64 helper binary in noarch harbour RPM 2026-09-25 14:39:34 +02:00
scripts fix(rpm): allow aarch64 helper binary in noarch harbour RPM 2026-09-25 14:39:34 +02:00
src fix(packageinstaller): avoid C++ most-vexing-parse on QNetworkRequest 2026-09-25 14:37:55 +02:00
.gitignore Initial harbour scaffold: Forgejo Packages store for SFOS 2026-09-25 09:12:09 +02:00
AGENTS.md Initial harbour scaffold: Forgejo Packages store for SFOS 2026-09-25 09:12:09 +02:00
flake.nix Add harbour RPM CI/publish and self-list in release catalog 2026-09-25 14:34:24 +02:00
harbour-sfos-forgejo-store.desktop Add harbour RPM CI/publish and self-list in release catalog 2026-09-25 14:34:24 +02:00
harbour-sfos-forgejo-store.pro Implement on-device RPM download + pkcon install-local 2026-09-25 09:40:46 +02:00
README.md Add harbour RPM CI/publish and self-list in release catalog 2026-09-25 14:34:24 +02:00
sdk-version.json Add harbour RPM CI/publish and self-list in release catalog 2026-09-25 14:34:24 +02:00

harbour-sfos-forgejo-store

Sailfish OS (Silica) harbour app that lists RPMs from git.bitp.cz — both Forgejo Packages and harbour RPMs attached to repo Releases (defaults: donach/orca, donach/zulip-sfos, donach/t3code-sfos) — and installs them on-device (SFOS 5.2.x aarch64).

Harbour / binary / desktop name: harbour-sfos-forgejo-store

Product defaults

Item Choice
Instance https://git.bitp.cz
Catalog sources (v1) Packages type=rpm + Releases *.rpm (prefer harbour-*)
Default release repos donach/orca, donach/zulip-sfos, donach/t3code-sfos
Default package owners bitpartner, donach, code-fixxers
APKs Omitted in v1 (AppSupport out of harbour install path)
UI Native Silica / QML (sailfishapp); source badge + All / Orca / Packages filter
Auth v1 Anonymous / public listing first; optional PAT stub in Settings
Download C++ QNetworkAccessManager → Downloads/harbour-sfos-forgejo-store/
Install pkcon install-local --noninteractive <rpm> via C++ QProcess
Success rule Only when pkcon exits 0 (errors shown in QML)
Packaging noarch harbour RPM (QML + small C++ helper); see rpm/

Vertical slice (v1)

  1. List RPMs from Packages owners and configured release repos (Orca harbour assets).
  2. Open one item → Install page (Packages: files API; Releases: direct asset URL).
  3. Download the .rpm to a writable SFOS path.
  4. Install with PackageKit (pkcon). If harbour sandbox blocks it, keep the file and show: open File Manager / use Warehouse / run pkcon in a terminal.

Install & harbour constraints

Harbour / Sailjail apps are often not allowed to drive PackageKit the same way system tools do. This app:

  • Always saves the RPM under the app download directory (path shown in UI).
  • Attempts pkcon; surfaces exit code and stderr.
  • Never claims success without exit code 0.
  • On sandbox / permission failure, points the user at File Manager or Warehouse.

See docs/SCOPE.md.

API approach (dual source)

Forgejo has no instance-wide GET /api/v1/packages without an owner. This app aggregates:

GET /api/v1/packages/{owner}?type=rpm&page=&limit=&q=

across a configurable owner list, and:

GET /api/v1/repos/{owner}/{repo}/releases?limit=

across a configurable release-repo list (default donach/orca, donach/zulip-sfos, donach/t3code-sfos), keeping only .rpm assets (prefer harbour-*.rpm). See docs/api.md.

Packages download (registry, not /api/v1):

GET /api/packages/{owner}/{type}/{name}/{version}/{filename}

Releases download: asset browser_download_url (direct).

Repo ownership

  • Forgejo: donach/sfos-forgejo-store
  • Working agent: SFOS (sfos@bitp.cz)
  • Ask D. H. only on hard product forks (see AGENTS.md / docs/SCOPE.md)

Build notes

  • Do not pull Sailfish Platform SDK images from agent boxes (OOM risk).
  • CI: .forgejo/workflows/harbour-sfos-forgejo-store-rpm.yml builds with coderus/sailfishos-platform-sdk:5.2.0.15 (see sdk-version.json), then publishes the RPM as a release asset (and best-effort Forgejo Packages type=rpm). Packages uploads often return 401 reqPackageAccess for CI / Grok PATs — the release asset is the supported install path for the store catalog.
  • Local light checks: ./scripts/check-harbour-sfos-forgejo-store-scaffold.sh, ./rpm/check-noarch.sh, ./rpm/check-orca-catalog.sh.

Blockers / known gaps

  • No true instance-wide package list in Forgejo API → owner aggregation.
  • Instance Packages registry currently has essentially zero type=rpm; harbour RPMs for Orca live on Releases instead — hence the dual source.
  • Identical harbour RPMs may appear under multiple release tags (no dedupe in v1).
  • Anonymous listing may return fewer items than authenticated; PAT settings are in-memory only (not persisted).
  • On-device pkcon may be blocked by harbour Sailjail until permissions / privileged helper are sorted on real hardware.
  • APKs from Orca releases are intentionally not installable / not listed in v1.