feat: an F-Droid repository at learn.halkyon.app
All checks were successful
CI / check (push) Successful in 9m16s
CI / deploy (push) Has been skipped

Releases also publish the APK in the project's own F-Droid repository,
https://learn.halkyon.app/fdroid/repo. tool/fdroid_repo.sh adds the APK,
signs the indexes with the repository's own key and uploads them to
ramiel as the user fdroid, whose key can only write into the folder
Caddy serves (rrsync), the APKs first and the indexes last.
tool/release.sh checks that key and its password before building and
publishes after the Forgejo release.

- tool/release/fdroid/ holds the repository's settings (Halkyon, the
  snap's icon) and the app's listing (the snap's text), with the
  anti-features TetheredNet (learn.halkyon.eu only, for now) and
  NonFreeNet (YouTube, the server's SSPL) declared with their reasons,
  in F-Droid's own definitions and with its icons (fdroiddata, AGPL v3).
- The index key's certificate is pinned: a new key would make the F-Droid
  app refuse the repository.
- fdroidserver v2.4.5, since Ubuntu's v2.2.1 knows neither TetheredNet
  nor reasons.

README and AGENTS.md describe it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-05 20:25:02 +02:00
commit ae2496335d
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
6 changed files with 209 additions and 9 deletions

View file

@ -0,0 +1,26 @@
# The F-Droid repository at https://learn.halkyon.app/fdroid/repo, kept by
# tool/fdroid_repo.sh: this folder is copied into the repository's working
# folder (outside Git) before every update. Nothing secret is in here: the index
# key's path and password come from the environment.
repo_url: https://learn.halkyon.app/fdroid/repo
archive_url: https://learn.halkyon.app/fdroid/archive
repo_name: Halkyon
repo_description: >-
Halkyon's apps, signed by their maintainer: the same APKs as on
code.halkyon.app.
archive_name: Halkyon (archive)
archive_description: >-
Older versions of Halkyon's apps.
# The snap's icon, which tool/fdroid_repo.sh copies beside this file.
repo_icon: halkyon.png
archive_icon: halkyon.png
# The newest three versions of each app stay in the repository, older ones move
# to the archive.
archive_older: 3
keystore: $HALKYON_FDROID_KEYSTORE
repo_keyalias: halkyon-fdroid
# A PKCS #12 keystore has one password, for the store and its key.
keystorepass: {env: HALKYON_FDROID_KEYSTORE_PASSWORD}
keypass: {env: HALKYON_FDROID_KEYSTORE_PASSWORD}
keydname: CN=Halkyon, O=Halkyon

View file

@ -0,0 +1,13 @@
# The anti-features the repository's apps declare, as the main F-Droid
# repository defines them: names, descriptions and icons from fdroiddata
# (https://gitlab.com/fdroid/fdroiddata, config/antiFeatures.yml and the icons
# beside it). The two icons are F-Droid's, under the GNU AGPL v3, fdroiddata's
# licence. fdroid copies them into the repository's icons.
NonFreeNet:
name: Non-Free Network Services
description: This app promotes or depends entirely on a non-free network service
icon: ic_antifeature_nonfreenet.png
TetheredNet:
name: Tethered Network Services
description: This app depends entirely on a certain instance of a network service
icon: ic_antifeature_tetherednet.png

View file

@ -0,0 +1,3 @@
# The categories the repository's apps are listed in.
Education:
name: Education

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -0,0 +1,25 @@
# Halkyon Learn's listing in the F-Droid repository: the snap's summary and
# description (snap/snapcraft.yaml), and its anti-features with their reasons.
Categories:
- Education
License: AGPL-3.0-or-later
AuthorName: Halkyon
AuthorEmail: support@halkyon.app
WebSite: https://learn.halkyon.app
SourceCode: https://code.halkyon.app/project-halkyon/halkyon_learn
AntiFeatures:
TetheredNet: It connects to learn.halkyon.eu, the project's instance, and can't be
pointed at another one yet.
NonFreeNet: YouTube videos in study material play through YouTube, and the
server's licence (SSPL) isn't a free licence by F-Droid's definition.
Name: Halkyon Learn
Summary: Learn with flashcards, studied offline and synced between your devices
Description: |-
Halkyon Learn is a spaced-repetition learning app: studysets of flashcards with
rich text, notes, learning paths and PDFs, reviewed on an FSRS schedule. It works
offline and syncs between your devices.
It starts with an anonymous account; signing in with GitHub later keeps
everything. It connects to learn.halkyon.eu, the project's instance.