A signed pacman repository for my Omarchy and Arch apps. Add it once and the
apps update with the rest of your system (omarchy update or pacman -Syu).
| Package | Project |
|---|---|
omaframe |
https://github.com/btsouth/omaframe |
omadrop |
https://github.com/btsouth/omadrop |
omaroll |
https://github.com/btsouth/omaroll |
omakade |
https://github.com/btsouth/omakade |
Add the repository and install an app in one step:
curl -fsSL https://pkgs.btso.dev/install.sh | bash -s -- omaframeAlready have one of these apps installed from a release download? Run the same command. The package name is the same, so it carries on from where you are.
Omakade is also in Omarchy's repository, which pacman prefers during normal updates. To install this repository's version explicitly:
curl -fsSL https://pkgs.btso.dev/install.sh | bash
sudo pacman -S btsouth/omakadeTo update it directly from this repository on Omarchy, use
sudo pacman -Syu btsouth/omakade.
To do it by hand:
curl -fsSL https://pkgs.btso.dev/btsouth.gpg | sudo pacman-key --add -
sudo pacman-key --lsign-key AA378A651D659C56BE5DB17B2F78D0FE524BB309
printf '\n[btsouth]\nSigLevel = Required\nServer = https://pkgs.btso.dev/$arch\n' | sudo tee -a /etc/pacman.conf
sudo pacman -Syu omaframeThe second command trusts one exact key fingerprint. If the key served by
pkgs.btso.dev is ever a different one, that command fails on purpose.
On Omarchy, switching release channel resets /etc/pacman.conf and drops
added repositories. The installer adds a small hook at
~/.config/omarchy/hooks/pre-refresh-pacman.d/btsouth-repo that puts this one
back, so there is nothing to redo.
Delete the [btsouth] block from /etc/pacman.conf, then:
sudo pacman-key --delete AA378A651D659C56BE5DB17B2F78D0FE524BB309
rm -f ~/.config/omarchy/hooks/pre-refresh-pacman.d/btsouth-repoInstalled apps stay installed; they just stop receiving updates.
Each app attaches its Arch package to its GitHub release. Every hour the publish workflow looks at the latest release of each project in packages.txt. If a package is not in the repository yet, it downloads it, checks it against the release checksums, signs it and adds it. Nothing is rebuilt, so the repository serves the same file as the release page.
A package must also run on Omarchy stable, the oldest channel people use. If any binary in it needs a newer Qt or glibc than the stable mirror ships, or that mirror cannot be read, the release is refused and the run fails. Other projects still publish. Build packages against the stable mirror to avoid this.
To publish straight after a release instead of waiting for the hourly run:
gh workflow run publish.yml -R btsouth/pkgsThe repository follows each project's latest release. To roll back a bad one,
delete that GitHub release or mark it as a prerelease, then run the publish
workflow. It republishes the release that is now the latest. People who
already took the bad version get the older one with sudo pacman -Syuu, or
the fix on its next release.
To take a project out altogether, remove its line from packages.txt, then:
gh workflow run remove.yml -R btsouth/pkgs -f package=<package>- Attach the package to the project's GitHub release, named the way
makepkgnames it:<package>-<version>-<release>-<arch>.pkg.tar.zst. The version must match the tag (v1.2.0for1.2.0), and aSHA256SUMSasset listing the file is checked when present. - Add one line to packages.txt and push. That publishes it.
- Add the project to the table at the top.
Nothing needs setting up in the project's own repository. The page at
https://pkgs.btso.dev lives in site/ and is deployed with
wrangler deploy.