blumeops/docs/how-to/zot/fix-ntfy-nix-version.md
Erich Blume cd578144f7
All checks were successful
Build Container (Nix) / detect (push) Successful in 2s
Build Container (Nix) / build (homepage) (push) Successful in 3s
Build Container (Nix) / build (navidrome) (push) Successful in 3s
Build Container (Nix) / build (ntfy) (push) Successful in 8s
Build Container / detect (push) Successful in 42s
Build Container / build (navidrome) (push) Successful in 9m37s
Build Container / build (homepage) (push) Successful in 9m56s
Build Container / build (ntfy) (push) Successful in 2m35s
Migrate upstream mirrors to mirrors/ Forgejo org (#265)
## Summary

- Created `mirrors` Forgejo organization for upstream mirror repos
- Transferred 22 mirror repos from `eblume/` to `mirrors/` (mirror sync config preserved)
- Deleted unused repos: hajimari, hister
- Updated all container build URLs (homepage, navidrome, ntfy Dockerfiles + nix)
- Updated documentation references (migrate-forgejo-from-brew, upstream-fork-strategy, fix-ntfy-nix-version)
- `dotfiles` intentionally kept under `eblume/` per user request
- `devpi` transferred to `mirrors/`

Repos remaining under `eblume/`: blumeops, cv, mcquack, dotfiles

## Cleanup TODO

- [ ] Delete temp Forgejo API token "claude-migration-temp" (Settings > Applications)

## Test Plan

- [x] Verified mirror config (mirror=true, original_url) survived transfer on test repo (tesla_auth)
- [x] All pre-commit hooks pass (including container-version-check, docs-check-links)
- [ ] Verify a mirror repo sync runs successfully after transfer (check mirrors/authentik or similar)
- [ ] Rebuild containers from branch to verify Dockerfile URLs resolve

Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/265
2026-02-24 20:43:14 -08:00

1.9 KiB

title modified tags
Fix ntfy Nix Version 2026-02-20
how-to
containers
nix
zot

Fix ntfy Nix Version

Override the nixpkgs ntfy-sh derivation to build v2.17.0 from the forge mirror, aligning the nix-built container with the Dockerfile version.

Context

Discovered during add-container-version-sync-check: the ntfy container has both a Dockerfile and a default.nix. The Dockerfile builds v2.17.0 from forge.ops.eblu.me/mirrors/ntfy.git, but the nix derivation uses pkgs.ntfy-sh from nixpkgs which is pinned at 2.15.0. The version sync check currently excludes ntfy from nix version validation as a workaround.

What Was Done

Replaced the nixpkgs pkgs.ntfy-sh reference in containers/ntfy/default.nix with a custom derivation that builds v2.17.0 from the forge mirror using fetchgit, buildNpmPackage (web UI), and buildGoModule (server). Docs are skipped (placeholder for go:embed, matching the Dockerfile approach).

The container-version-check script was updated to extract versions from local nix files via regex (version = "X.Y.Z") before falling back to the Dagger nix-version function for unmodified nixpkgs packages. This avoids the issue where nix eval nixpkgs#ntfy-sh.version returns the upstream 2.15.0 instead of our overridden 2.17.0.

Key Files

File Change
containers/ntfy/default.nix Custom derivation building v2.17.0 from forge
mise-tasks/container-version-check Regex-based local nix version extraction

Verification

  • dagger call build-nix --src=. --container-name=ntfy produces a working image
  • Version extractable from local default.nix via regex (2.17.0)
  • mise run container-version-check --all-files passes with ntfy included