Migrate upstream mirrors to mirrors/ Forgejo org (#265)
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

## 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
This commit is contained in:
Erich Blume 2026-02-24 20:43:14 -08:00
commit cd578144f7
8 changed files with 13 additions and 12 deletions

View file

@ -11,7 +11,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends git ca-certific
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
RUN git clone --depth 1 --branch ${HOMEPAGE_VERSION} \ RUN git clone --depth 1 --branch ${HOMEPAGE_VERSION} \
https://forge.ops.eblu.me/eblume/homepage.git /app https://forge.ops.eblu.me/mirrors/homepage.git /app
WORKDIR /app WORKDIR /app
RUN mkdir -p config \ RUN mkdir -p config \

View file

@ -10,7 +10,7 @@ ARG NAVIDROME_VERSION
RUN apk add --no-cache git RUN apk add --no-cache git
RUN git clone --depth 1 --branch ${NAVIDROME_VERSION} \ RUN git clone --depth 1 --branch ${NAVIDROME_VERSION} \
https://forge.ops.eblu.me/eblume/navidrome.git /app https://forge.ops.eblu.me/mirrors/navidrome.git /app
WORKDIR /app/ui WORKDIR /app/ui
RUN npm ci RUN npm ci
@ -22,7 +22,7 @@ ARG NAVIDROME_VERSION
RUN apk add --no-cache build-base git taglib-dev zlib-dev RUN apk add --no-cache build-base git taglib-dev zlib-dev
RUN git clone --depth 1 --branch ${NAVIDROME_VERSION} \ RUN git clone --depth 1 --branch ${NAVIDROME_VERSION} \
https://forge.ops.eblu.me/eblume/navidrome.git /app https://forge.ops.eblu.me/mirrors/navidrome.git /app
WORKDIR /app WORKDIR /app

View file

@ -12,7 +12,7 @@ RUN apk add --no-cache git
RUN mkdir /app && cd /app \ RUN mkdir /app && cd /app \
&& git init \ && git init \
&& git remote add origin https://forge.ops.eblu.me/eblume/ntfy.git \ && git remote add origin https://forge.ops.eblu.me/mirrors/ntfy.git \
&& git fetch --depth 1 origin ${NTFY_COMMIT} \ && git fetch --depth 1 origin ${NTFY_COMMIT} \
&& git checkout FETCH_HEAD && git checkout FETCH_HEAD
@ -28,7 +28,7 @@ RUN apk add --no-cache build-base git
RUN mkdir /app && cd /app \ RUN mkdir /app && cd /app \
&& git init \ && git init \
&& git remote add origin https://forge.ops.eblu.me/eblume/ntfy.git \ && git remote add origin https://forge.ops.eblu.me/mirrors/ntfy.git \
&& git fetch --depth 1 origin ${NTFY_COMMIT} \ && git fetch --depth 1 origin ${NTFY_COMMIT} \
&& git checkout FETCH_HEAD && git checkout FETCH_HEAD

View file

@ -7,7 +7,7 @@ let
version = "2.17.0"; version = "2.17.0";
src = pkgs.fetchgit { src = pkgs.fetchgit {
url = "https://forge.ops.eblu.me/eblume/ntfy.git"; url = "https://forge.ops.eblu.me/mirrors/ntfy.git";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-/dxILAkye1HwYcybnx1WrMRK2jXZMrxal2ZKm6y2bWc="; hash = "sha256-/dxILAkye1HwYcybnx1WrMRK2jXZMrxal2ZKm6y2bWc=";
}; };

View file

@ -0,0 +1 @@
Migrate upstream mirror repos from `eblume/` to `mirrors/` Forgejo organization

View file

@ -32,7 +32,7 @@ https://codeberg.org/forgejo/forgejo.git
Add the forge mirror as a secondary remote for convenience and backup: Add the forge mirror as a secondary remote for convenience and backup:
``` ```
https://forge.ops.eblu.me/eblume/forgejo.git https://forge.ops.eblu.me/mirrors/forgejo.git
``` ```
## One-Time Migration Steps ## One-Time Migration Steps
@ -48,7 +48,7 @@ ssh indri 'git clone https://codeberg.org/forgejo/forgejo.git ~/code/3rd/forgejo
### 2. Add Forge Mirror as Secondary Remote ### 2. Add Forge Mirror as Secondary Remote
```fish ```fish
ssh indri 'cd ~/code/3rd/forgejo && git remote add forge https://forge.ops.eblu.me/eblume/forgejo.git' ssh indri 'cd ~/code/3rd/forgejo && git remote add forge https://forge.ops.eblu.me/mirrors/forgejo.git'
``` ```
### 3. Check Out the Desired Version Tag ### 3. Check Out the Desired Version Tag
@ -155,7 +155,7 @@ Replace brew install/start with binary-check + LaunchAgent pattern (matching `an
# ssh indri 'git clone https://codeberg.org/forgejo/forgejo.git ~/code/3rd/forgejo' # ssh indri 'git clone https://codeberg.org/forgejo/forgejo.git ~/code/3rd/forgejo'
# #
# 2. Add forge mirror as secondary remote: # 2. Add forge mirror as secondary remote:
# ssh indri 'cd ~/code/3rd/forgejo && git remote add forge https://forge.ops.eblu.me/eblume/forgejo.git' # ssh indri 'cd ~/code/3rd/forgejo && git remote add forge https://forge.ops.eblu.me/mirrors/forgejo.git'
# #
# 3. Set up Go and Node via mise: # 3. Set up Go and Node via mise:
# ssh indri 'cd ~/code/3rd/forgejo && mise use go@1.24 node@20' # ssh indri 'cd ~/code/3rd/forgejo && mise use go@1.24 node@20'

View file

@ -177,7 +177,7 @@ This branch is maintained independently — it does not participate in the daily
Quartz (the documentation site generator) is the planned first fork and the primary motivation for this strategy. Quartz (the documentation site generator) is the planned first fork and the primary motivation for this strategy.
- **Upstream:** `https://github.com/jackyzha0/quartz.git` - **Upstream:** `https://github.com/jackyzha0/quartz.git`
- **Forge repo:** `forge.ops.eblu.me/eblume/quartz` - **Forge repo:** `forge.ops.eblu.me/mirrors/quartz`
- **Primary branch:** `blumeops` - **Primary branch:** `blumeops`
### BlumeOps-Specific Patches (`blumeops` branch) ### BlumeOps-Specific Patches (`blumeops` branch)
@ -209,7 +209,7 @@ This fork directly supports the [[adopt-dagger-ci]] plan. Once the fork exists,
# After (using the BlumeOps fork): # After (using the BlumeOps fork):
.with_exec(["git", "clone", "--depth=1", "--branch=blumeops", .with_exec(["git", "clone", "--depth=1", "--branch=blumeops",
"https://forge.ops.eblu.me/eblume/quartz.git", "/tmp/quartz"]) "https://forge.ops.eblu.me/mirrors/quartz.git", "/tmp/quartz"])
``` ```
This means the `build-blumeops.yaml` workflow automatically picks up fork customizations (like `last-reviewed` rendering) when building docs — no separate integration step needed. Local iteration via `dagger call build-docs` also uses the fork, so you can test Quartz customizations against actual BlumeOps content before pushing. This means the `build-blumeops.yaml` workflow automatically picks up fork customizations (like `last-reviewed` rendering) when building docs — no separate integration step needed. Local iteration via `dagger call build-docs` also uses the fork, so you can test Quartz customizations against actual BlumeOps content before pushing.

View file

@ -14,7 +14,7 @@ Override the nixpkgs ntfy-sh derivation to build v2.17.0 from the forge mirror,
## Context ## 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/eblume/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. 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 ## What Was Done