Skip to content

openlyst/builds

Repository files navigation

OpenLyst Builds

Multi-platform build & repository system for OpenLyst apps

License: GPL v3 Python Platform

WebsiteReleasesAPI Docs


A single Python script that fetches app metadata from the OpenLyst API and generates package repositories for five platforms from one source of truth. No more juggling separate build scripts per platform — build.py handles it all.

Features

  • AltStore (iOS) — Generates apps.json with app permissions, entitlements, and privacy descriptions
  • F-Droid (Android) — Produces a full F-Droid repository with category mapping and APK indexing
  • Homebrew (macOS/Linux) — Creates formulae and casks for both Intel and Apple Silicon
  • AUR (Arch Linux) — Generates PKGBUILDs for -bin packages, including unstable builds from GitHub releases
  • Chocolatey (Windows) — Generates .nuspec and PowerShell install/uninstall scripts for Chocolatey packages
  • Docker — Publishes web app images to GitHub Container Registry (ghcr.io)
  • GitHub Actions — Two workflows: one for building app binaries across platforms, one for generating and pushing all repositories

Getting Started

Prerequisites

  • Python 3.8+
  • requests library (pip install -r requirements.txt)

Build Repositories Locally

pip install -r requirements.txt

# Build everything
python build.py --target all

# Or pick specific targets
python build.py --target altstore          # iOS only
python build.py --target fdroid            # Android only
python build.py --target homebrew          # Homebrew only
python build.py --target aur               # AUR PKGBUILDs only
python build.py --target chocolatey        # Chocolatey packages only
python build.py --target altstore,fdroid   # Multiple at once

# Homebrew platform filter
python build.py --target homebrew --platform macOS
python build.py --target homebrew --platform Linux

# Extra options
python build.py --target all --calculate-sha256   # Include SHA256 hashes
python build.py --target all --verbose             # Debug logging

Platforms

AltStore (iOS)

Add this source URL in AltStore:

https://raw.githubusercontent.com/openlyst/builds/main/repo/apps.json

CDN mirror (faster): https://cdn.jsdelivr.net/gh/openlyst/builds@main/repo/apps.json

Note

The source includes app permissions (privacy descriptions and entitlements) when available from the API.

F-Droid (Android)

Add this repository in your F-Droid client:

https://raw.githubusercontent.com/openlyst/builds/main/fdroid-repo

Homebrew (macOS/Linux)

# Add the tap
brew tap openlyst/builds https://github.com/openlyst/builds.git

# Install an app
brew install openlyst/builds/app-name

# Or install a cask (GUI apps on macOS)
brew install --cask openlyst/builds/app-name

# Search what's available
brew search openlyst/builds/
Command Description
brew update Pull latest formulae
brew info openlyst/builds/app-name Show formula details
brew uninstall app-name Remove an app

AUR (Arch Linux)

Known packages are updated automatically from the Openlyst API:

Package App
finar-bin Finar (Jellyfin client)
klit-bin Kilt
doudou-bin Doudou (music player)

Note

docan-bin, lystcode, and opentorrent-bin are currently disabled. Their config entries are commented out in build.py and can be re-enabled at any time.

New apps with Linux builds get PKGBUILDs generated automatically — just create the package on AUR first, then the workflow handles the rest.

Install with:

yay -S finar-bin    # or any other package above

Chocolatey (Windows)

Chocolatey package specs are generated for all Windows apps with download URLs. Each package includes a .nuspec metadata file and PowerShell install/uninstall scripts.

Package App
doudou Doudou (music player)
finar Finar (Jellyfin client)
kilt Kilt (e926 client)

To build and push a .nupkg from the generated specs:

cd chocolatey-packages/doudou
choco pack doudou.nuspec
choco push doudou.20.0.0.nupkg --source https://push.chocolatey.org/ --api-key YOUR_API_KEY

Tip

The build-unified.yml workflow automatically packs and pushes all Chocolatey packages when the CHOCOLATEY_API_KEY repository secret is set. Without the secret, packages are still generated and committed but not published.

Docker

Images are published to GitHub Container Registry for web-based apps.

# Pull and run Finar (Jellyfin web client)
docker pull ghcr.io/justacalico/finar:latest
docker run -d -p 8080:80 ghcr.io/justacalico/finar:latest

# With Jellyfin CORS proxy
docker run -d -p 8080:80 \
  -e JELLYFIN_URL=http://your-jellyfin-server:8096 \
  ghcr.io/justacalico/finar:latest

Then open http://localhost:8080.

Example docker-compose.yml:

services:
  finar:
    image: ghcr.io/justacalico/finar:latest
    ports:
      - "8080:80"
    environment:
      - JELLYFIN_URL=http://your-jellyfin-server:8096
    restart: unless-stopped
Tag Description
latest Latest stable release
x.y.z Specific version
x.y.z-YYYY-MM-DD Version with build date

GitHub Actions

Two workflows handle everything:

Build All Repositories (build-unified.yml)

Generates and pushes all repository outputs. Trigger it from the Actions tab.

Input Description Default
target all, altstore, fdroid, homebrew, aur, or chocolatey all
platform Homebrew only: both, macOS, or Linux both
calculate_hashes Include SHA256 hashes (slower) false

Build Apps (build.yml)

Builds app binaries from source across iOS, Android, Windows, Linux, macOS, and web. Each app has its own toggle and platform selector in the workflow run form.

Important

AUR pushes require the AUR_SSH_KEY_BASE64 and AUR_SSH_KEY_PASSWORD repository secrets. Android signing requires per-app keystore secrets (optional — omit for unsigned builds). Chocolatey auto-publishing requires the CHOCOLATEY_API_KEY secret (optional — without it, packages are packed but not pushed).

Project Structure

├── build.py                    # Unified build script (all platforms)
├── requirements.txt            # Python dependencies
├── repo/                       # AltStore repository output
├── fdroid-repo/                # F-Droid repository output
├── homebrew-tap/               # Homebrew tap output
│   └── Formula/                # Homebrew formulae and casks
├── chocolatey-packages/        # Chocolatey package specs output
├── docs/                       # GitHub Pages site
└── .github/workflows/
    ├── build-unified.yml       # Repository generation workflow
    └── build.yml               # App binary build workflow

About

Openlyst build magment software

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Contributors