DEV Community

Cover image for From One Merged PR to a Repology Page: A Termux Maintainer Roundup
Gouranga Das Samrat
Gouranga Das Samrat

Posted on

From One Merged PR to a Repology Page: A Termux Maintainer Roundup

A few weeks ago, running pkg show on my own phone and seeing my name next to Maintainer: felt like a fluke. It wasn't a plan β€” it was one feature request for a password manager CLI that turned into weeks of build-system archaeology. Since then it hasn't really stopped.

I've written four posts about individual pieces of this so far. This one is the zoomed-out version β€” everything currently sitting across termux/termux-packages (the main repo) and termux/termux-user-repository (TUR), plus what's shipped since the last post that I haven't written up on its own yet. If you want the receipts instead of my word for it, my Repology maintainer page tracks every package live under my name in real time.

The story so far

In case you're coming in fresh, here's the series in order:

  1. From a High School Termux User to a Package Maintainer β€” how proton-pass-cli became my first merge on the main repo, and the sqlcipher symlink bug it dragged along with it.
  2. Rejected on Main, Accepted on TUR β€” nine Nerd Fonts packages that didn't fit the main repo's size policy, and my first merge on TUR instead.
  3. From a 4-Year-Old Feature Request to pkg install bun β€” closing a four-year-old issue by moving bun from a rejected main-repo PR to a TUR merge.
  4. The Day I Merged 6 Go Packages Into Termux Before Dinner β€” goimports, golangci-lint, air, gotests, goreleaser, and govulncheck, all merged in one sitting.

Everything below picks up right after that last post.

Main repo: cleanup, then a second wave

The six Go packages didn't land perfectly clean. Right after merge, each one still carried a build dependency it didn't actually need at runtime, so I went back through all six with individual fix PRs: goimports, golangci-lint, air, goreleaser, gotests, and govulncheck. Small, boring PRs β€” the kind that don't make for a good story on their own, but matter for anyone who installs these packages later. govulncheck also got bumped to 1.7.0 the same day.

With the toolkit's foundation cleaned up, I kept adding to it:

  • git-cliff β€” changelog generator driven by conventional commits.
  • git-absorb β€” automatically absorbs staged changes into the right earlier commits.
  • gtrash β€” a trash can for the CLI, so rm stops being permanent by accident.
  • sqlc β€” generates type-safe code straight from SQL.
  • golang-migrate β€” database migrations, CLI and library both.
  • gotestsum β€” a nicer go test output wrapper, pairs naturally with gotests from the earlier batch.

And proton-pass-cli, the package that started all of this, got bumped to 2.3.3 β€” still getting routine maintenance almost two weeks after the original merge.

Not everything from this stretch made it into the main repo, and that's expected at this point: PR #31157 (the original 9-font attempt) and PR #31115 (the prebuilt-binary bun attempt) both closed on policy grounds, and PR #31013 closed as a duplicate of a fix that landed first. All three have their full story in the earlier posts β€” I'm only listing them here so the trail is complete.

TUR: the fonts grow up

TUR has been quieter in terms of headline moments, but not idle. The eight Nerd Fonts packages from PR #2743 started out as eight independent ttf-*-nerd packages. In PR #2755 I refactored all eight into a single unified nerd-fonts parent/subpackage structure and bumped everything to v3.5.1 β€” one source package, eight subpackages, instead of eight nearly-identical build.sh files to keep in sync by hand. It hit the usual round of CI friction along the way (a missing cache directory variable, an overlength description, a license auto-detection miss, an array-vs-scalar source URL, a subpackage dependency value that needed correcting) β€” nothing dramatic, just the kind of thing that shows up once you actually run a consolidation through CI instead of just planning it.

Right after that, PR #2762 added a dependency on the main repo's pre-existing ttf-nerd-fonts-symbols package, to match how Arch handles the same font set β€” closing a small naming/parity gap that had been sitting there since the original PR.

bun also has a bump sitting as a draft β€” 1.4.0, not merged yet. And there's an early-stage docker-qemu package in draft too, at PR #2708.

Where things stand

Two repos, two different sets of rules, and by now a pattern I'm used to: try the main repo first, and if the policy genuinely doesn't fit β€” package count discipline, source-build requirements β€” TUR is where it goes instead, not a consolation prize.

The Repology maintainer page is the easiest way to see the live total, since PR merges don't always mean immediate publish. As of today it lists 15 distinct projects across both repos β€” 13 on Termux's main repo, 2 on TUR β€” every single one at 100% newest, with nothing outdated, problematic, or flagged as potentially vulnerable:

air-live-reload, bun, fonts:nerd-fonts, git-absorb, git-cliff, go:migrate, goimports, golangci-lint, goreleaser, gotests, gotestsum, govulncheck, gtrash, proton-pass-cli, sqlc

Two entries are worth a second look because the names don't match the PR titles: Repology tracks air under its upstream project name air-live-reload, and golang-migrate as go:migrate. The other one is fonts:nerd-fonts showing up as a single TUR project instead of eight β€” which is exactly what PR #2755 was for. The consolidation into one parent/subpackage structure didn't just clean up the build.sh files, it collapsed the whole set into one tracked project on Repology too.

Top comments (0)