Add omarchy-billboard-generator, the animated domain video maker

Packages llstrk/omarchy-billboard-generator from its GitHub release archive: the runtime tree plus locked production npm dependencies under /usr/lib, entry-point symlinks in /usr/bin, a desktop entry whose WM class matches the Chromium app-mode window, and the fonts and provenance notices the project bundles. Chromium and ffmpeg are runtime dependencies found on PATH rather than downloaded, which is how the project itself works.

The desktop entry is written from the PKGBUILD rather than shipped as a second source because sync-upstream rewrites the checksum array wholesale from the release manifest. The catalog checks pin the data directories to empty scratch paths so the build reads bundled data rather than a synced snapshot in the builder's home.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Codex XHigh <noreply@openai.com>
This commit is contained in:
authored and Ryan Hughes committed 2026-09-18 22:21:52 -04:00
1 parent fbfbda4eca
commit 02f63ae1f2
2 files changed
+94

No files matched your search

@@ -0,0 +1,12 @@
{
"source": "local",
"release_ring": "fast",
"min_release_age": "24h",
"upstream": {
"github": "llstrk/omarchy-billboard-generator",
"checksums": "SHA256SUMS",
"assets": {
"any": "omarchy-billboard-generator.tar.gz"
}
}
}
@@ -0,0 +1,82 @@
# Maintainer: David Heinemeier Hansson <david@hey.com>
# Upstream ships a release archive plus a SHA256SUMS manifest, which is what
# the upstream feed in .omarchy/package.json follows. Chromium and ffmpeg are
# runtime dependencies found on PATH, never downloaded.
pkgname=omarchy-billboard-generator
pkgver=0.1.1
pkgrel=1
pkgdesc='Desktop app and CLI that renders animated OMARCHY domain videos'
arch=('any')
url='https://github.com/llstrk/omarchy-billboard-generator'
# MIT covers the project's own code and Apache-2.0 and 0BSD the vendored npm
# dependencies. The Omarchy wordmark, website palettes, taglines and the ttfx
# animation runtime are Omarchy's own material carried over from omarchy-site,
# and PROVENANCE.md says which file is which.
license=('MIT' 'Apache-2.0' '0BSD' 'OFL-1.1' 'LicenseRef-Omarchy')
depends=('nodejs>=22' 'chromium' 'ffmpeg' 'xdg-utils')
makedepends=('npm')
source=("${pkgname}-${pkgver}.tar.gz::${url}/releases/download/v${pkgver}/${pkgname}.tar.gz")
sha256sums=('b5edb7f975c46d29a7b492a009cf826a04dc19daf4962a7b2ae4774643555df6')
# Pure JavaScript and WebAssembly; nothing here is an ELF to strip.
options=('!strip' '!debug')
_appdir="/usr/lib/${pkgname}"
build() {
cd "${srcdir}/${pkgname}"
# The same install the upstream release installer performs: locked production
# dependencies, no lifecycle scripts.
npm ci --omit=dev --ignore-scripts --cache "${srcdir}/npm-cache"
}
check() {
cd "${srcdir}/${pkgname}"
# The catalogs prefer a synced snapshot in the user data directory, so point
# them at an empty one: the build must read the bundled data, not whatever
# the builder's home happens to hold.
export BILLBOARD_DATA_DIR="${srcdir}/data-home" BILLBOARD_CACHE_DIR="${srcdir}/cache-home"
# Upstream's own startup check, plus the catalogs that load the bundled data.
node bin/omarchy-billboard --help >/dev/null
node bin/omarchy-billboard --list-themes >/dev/null
node bin/omarchy-billboard --list-languages >/dev/null
node bin/omarchy-billboard --list-animations >/dev/null
node bin/omarchy-billboard-app --help >/dev/null
}
package() {
cd "${srcdir}/${pkgname}"
install -dm755 "${pkgdir}${_appdir}"
# Only what runs: no tests, release scripts, CI, or the curl|bash installer.
cp -a bin src app web assets data examples node_modules package.json "${pkgdir}${_appdir}/"
# The entry points resolve their sources through the real path of the
# script, so a symlink is enough and keeps the launcher's node on PATH.
install -dm755 "${pkgdir}/usr/bin"
ln -s "${_appdir}/bin/omarchy-billboard" "${pkgdir}/usr/bin/omarchy-billboard"
ln -s "${_appdir}/bin/omarchy-billboard-app" "${pkgdir}/usr/bin/omarchy-billboard-app"
# Written here rather than shipped as a second source: sync-upstream rewrites
# sha256sums wholesale from the release manifest, so a local file's checksum
# would not survive the first version bump. The WM class is what Chromium
# derives for this app-mode window, so the launcher's icon follows it.
install -dm755 "${pkgdir}/usr/share/applications"
cat > "${pkgdir}/usr/share/applications/${pkgname}.desktop" <<'DESKTOP'
[Desktop Entry]
Version=1.0
Type=Application
Name=Omarchy Billboard Generator
Comment=Create animated Omarchy domain videos locally
Exec=omarchy-billboard-app
Icon=omarchy-billboard-generator
Terminal=false
Categories=AudioVideo;Video;
StartupWMClass=chrome-127.0.0.1__omarchy-billboard-Default
DESKTOP
install -Dm644 app/icon.svg "${pkgdir}/usr/share/icons/hicolor/scalable/apps/${pkgname}.svg"
install -Dm644 -t "${pkgdir}/usr/share/doc/${pkgname}" README.md THEMES.md PROVENANCE.md
install -Dm644 -t "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE PROVENANCE.md assets/fonts/*-OFL.txt
}