# Where every Quine repo lives, on GitHub and on Forgejo. # `python3.14 quine-repos.py` shows drift; `--apply` fixes it. See README.md. forgejo_url = "https://forge.in.quineglobal.com" # The forge's public, read-only view (rgit): what GitHub descriptions link to. public_url = "https://git.quineglobal.com" # Renovate (petersweb-infra's nixos/renovate.nix): dependency update PRs on # the forge. For each repo it covers, the script makes its `user` a # collaborator with write access and adds the webhook that wakes it; Renovate # finds those repos itself and opens a "Configure Renovate" PR in each new one # (its renovate.json, extending renovate/default.json here). By default it # covers our own repos in these buckets, not forks of other projects (whose # dependencies come with upstream merges) or mirrors; a repo's # `renovate = true|false` overrides that. # # Renovate is off now (2026-11-10): Dependabot (quine-global/ # dependabot-core) opens the dependency PRs, as the same account, renamed # from `renovate` to `dependabot` so the PRs are its and not a person's. It # needs the same write access, which this section still grants; the # webhooks it adds now wake nothing. [renovate] user = "dependabot" buckets = ["main"] webhook = "http://10.89.0.1:9055/hooks/renovate" # the forge VM, as Forgejo's container sees it # A bucket is a pair of orgs, one per host. Moving a repo between buckets # transfers it on both sides. The boneyard is where retired repos go; they # stay unarchived and mirrored like everything else. # # mirror_token_file: GitHub fine-grained token (resource owner = the bucket's # GitHub org, Contents + Workflows read/write) that Forgejo push mirrors use. [buckets.main] github = "quine-global" forgejo = "quine-global" mirror_token_file = "~/.config/forgejo/github-mirror-token" # expires 2027-10-12 [buckets.boneyard] github = "quine-global-boneyard" forgejo = "quine-global-boneyard" archived = false # unarchive anything that lands here mirror_token_file = "~/.config/forgejo/github-mirror-token-boneyard" # expires 2027-01-09 # Per-repo keys (all optional except bucket): # primary = "forgejo" (default): Forgejo is canonical, push-mirrored to GitHub # | "github": GitHub is canonical, Forgejo holds a pull mirror # github = false Forgejo-only repo, nothing on GitHub # import = "full" (default: issues, PRs, releases, wiki) | "code" (git only). # Use "code" for repos with big release assets: full imports that # take over ~60s die at nginx's proxy timeout and leave the repo # stuck "migrating". # archived = true|false archive / unarchive on both sides. Unset: leave it, but # report repos that are archived on GitHub (never unarchived silently). # renovate = true|false Renovate on / off ([renovate] above). Unset: on for # our own repos in its buckets, off for forks (forked_from) and # mirrors. # actions = true|false Forgejo Actions on / off. Unset: off for upstream # mirrors (they carry upstream's CI, which would sit "waiting" for # runners we don't have), left alone for everything else. # forked_from = "owner/repo" (GitHub) or a URL: Forgejo's description says # "(Forked from …)". GitHub descriptions of Forgejo-primary repos # always say "(Mirror of )" instead. # upstream = "" third-party source: Forgejo pull-mirrors it and push-mirrors on to GitHub # description = "…" the repo's description on both hosts (before the # Forked from / Mirror of note). Unset: keep whatever the hosts # have, copying one side's to an empty other. # ── main ───────────────────────────────────────────────────────────────────── [repos.quintodrome] bucket = "main" description = "[PREVIEW] Music player desktop app (Spotify alternative, Navidrome desktop app)" forked_from = "navidrome/navidrome" renovate = true # its renovate.json leaves Navidrome's own go.mod to upstream merges import = "code" # ~3.3 GB of release assets on GitHub, left there [repos.hyper] bucket = "main" description = "Continuing the \"Hyper\" legacy. Hyper: a terminal built on web technologies. Maintained by Quine." forked_from = "vercel/hyper" # Forge-primary since 2026-11-13: GitHub is an SSH push mirror (a deploy key). renovate = true # a fork, but kept up to date here: .forgejo/dependabot.yml import = "code" # ~20 GB of release assets on GitHub [repos."quintodrome.quineglobal.com"] bucket = "main" description = "Website and auto-update feed servers for Quintodrome and Quine Hyper" forked_from = "quine-global/hyper.quineglobal.com" renovate = true # a fork, but its dependencies are its own: Dependabot covers it [repos."hyper.quineglobal.com"] bucket = "main" description = "Website and auto-update feed server for Quine Hyper" [repos."linux.quineglobal.com"] # private for now bucket = "main" description = "Quine Linux's website: what it is, and downloads of its releases from the forge" github = false [repos.site-image] # the build-and-bump action the *.quineglobal.com sites use bucket = "main" description = "Forgejo action for our Docker-based sites: build and push the image, then open a petersweb-infra PR that bumps its pinned digest." github = false # Our fork of rgit, the read-only git web frontend behind # git.quinefoundation.com; its deploy workflow pins the image in # petersweb-infra, like the websites'. [repos.rgit] bucket = "main" description = "Our fork of rgit, the read-only git web frontend behind git.quinefoundation.com" github = false forked_from = "w4/rgit" # The container image the forge's ubuntu-latest jobs run in: official # node:24-bookworm plus a few tools, in place of catthehacker's image. Its # deploy workflow pins the image in petersweb-infra's nixos/linux.nix. [repos.ci-image] bucket = "main" description = "The container image the forge's ubuntu-latest jobs run in: node:24-bookworm plus jq, sudo, python3, zstd and the docker CLI" github = false # Our fork of git-sync, with --exechook-path (the hook only for commits that # change given paths); petersweb-infra builds it as a patch on upstream's # release (nixos/git-sync/). Actions off: it carries upstream's CI, which # builds in upstream's Docker images and fails on our runners. [repos.git-sync] bucket = "main" description = "Our fork of git-sync, with --exechook-path: run the exechook only when given paths change" github = false forked_from = "kubernetes/git-sync" actions = false # Public, so other repos' workflows can load it (`uses:`); it holds the # action and build scripts only, no secrets. (OK'd 2026-11-03.) [repos.app-build] # the RPM build action our in-house apps use bucket = "main" description = "Forgejo action: build our in-house apps as RPMs for x86_64 and aarch64, and upload them to the forge RPM group." github = false [repos.guix-builds] bucket = "main" description = "Forked version of guix with extra verbosity" [repos.quine-core] bucket = "main" description = "Public description of the Quine mainframe configuration using NixOS. Runs https://blog.quinefoundation.com among others." [repos.electron-link] bucket = "main" description = "A module to bundle your electron app into a single file that can be used for V8 snapshots." forked_from = "atom/electron-link" [repos.ava] bucket = "main" description = "Node.js test runner that lets you develop with confidence 🚀" forked_from = "avajs/ava" [repos.ava-typescript] bucket = "main" description = "Test TypeScript projects using AVA." forked_from = "avajs/typescript" [repos.electron-drag-click] bucket = "main" description = "A native module that propagates click events to draggable areas in Electron on macOS. Forked to match electron version of hyper." forked_from = "gerhardberger/electron-drag-click" [repos.ncdu] bucket = "main" description = "Mirror of ncdu, which is written in both C and Zig — compare zig and master branches" upstream = "https://code.blicky.net/yorhel/ncdu.git" # pull-mirrored, then pushed to GitHub [repos.webdriverio] bucket = "main" description = "Next-gen browser and mobile automation test framework for Node.js" forked_from = "webdriverio/webdriverio" [repos.recast] bucket = "main" description = "JavaScript syntax tree transformer, nondestructive pretty-printer, and automatic source map generator" forked_from = "benjamn/recast" [repos."quine-global.github.io"] bucket = "main" description = "Quine Global's GitHub Pages site" [repos.homebrew-tap] bucket = "main" description = "Homebrew tap for Quine apps" [repos.quine-anaconda-webui] bucket = "main" description = "Quine Linux's installer: our copy of Anaconda's web UI (rhinstaller/anaconda-webui)" [repos.taproom] bucket = "main" description = "Flutter desktop frontend for Homebrew" [repos.quine-manifest] # this repo bucket = "main" description = "Where every Quine repo lives, on GitHub and the forge, and a script that makes both match" # ── boneyard ───────────────────────────────────────────────────────────────── [repos.action-gh-release] bucket = "boneyard" description = "GitHub Action for creating GitHub Releases" forked_from = "softprops/action-gh-release" import = "code" [repos.electron-builder] bucket = "boneyard" description = "A complete solution to package and build a ready for distribution Electron app with \"auto update\" support out of the box" forked_from = "electron-userland/electron-builder" import = "code" # ── formerly labs (quine-global-labs, retired 2026-11-13) ─────────────────── [repos.layer-wizard] bucket = "main" description = "GUI wizard for permanent rpm-ostree package layers with reboot + rollback, on bootc/image-based Linux systems" [repos.quple] bucket = "main" description = "Call someone by their Quine username: a Tauri desktop app on Jitsi Meet" [repos.quine-linux] bucket = "main" description = "Quine Linux: a bootc image built on our Aurora build (Universal Blue)" [repos.quine-os] bucket = "main" description = "Build and CI guidelines for Quine OS's apps" [repos.swap-watchdog] bucket = "main" description = "Watchdog + always-ready Force Quit GUI for when swap fills up and the desktop stops responding" [repos.usbscan] bucket = "main" description = "Finds failing USB ports: lsusb, sysfs hub ports and kernel faults in one table" [repos.dnf-package-store] bucket = "main" description = "Flutter app for browsing DNF packages and trying them with transient installs" [repos.ktoolbox] bucket = "main" description = "A minimal Flutter GUI for managing Toolbox containers on KDE" [repos.flathub-ladybird] bucket = "main" description = "Flatpak packaging for the Ladybird web browser (work in progress)" [repos.quine-RideRN] bucket = "main" description = "Open source rideshare app" [repos.mozsync] bucket = "main" description = "Signs in to Firefox Sync and imports your bookmarks into Chromium or Falkon" [repos.charter] # empty so far: no commits, no description bucket = "main" [repos.bazaar] bucket = "main" description = "Fork of Bazaar (Flatpak store) https://gitlab.gnome.org/World/bazaar.git" [repos.libreoffice-js] bucket = "main" description = "Tauri + React word processor modelled on LibreOffice Writer" [repos.nugitea] bucket = "main" description = "[DRAFT] Will replace Github someday (complete rewrite of gitea)" # Quine Linux's stage 0: our Aurora build, published to the forge's registry # (.forgejo/workflows/build.yml). Not on GitHub: a copy there would run # upstream's .github/workflows. [repos.aurora] bucket = "main" description = "Fork of Aurora: stage 0 of Quine Linux, built and published here" github = false forked_from = "ublue-os/aurora" renovate = true # has its own .forgejo/dependabot.yml: Dependabot covers it # Pull mirrors the aurora and quine-linux builds read instead of GitHub and # code.forgejo.org. Forgejo-only: no point copying them back to GitHub. # Actions off (the default for `upstream` repos): their upstream CI never runs here. # mirror-ublue-os-aurora syncs hourly (set by hand); the rest every 8h. [repos.mirror-ublue-os-aurora] bucket = "main" description = "Read-only pull mirror of github.com/ublue-os/aurora. quine-global/aurora merges from here." github = false upstream = "https://github.com/ublue-os/aurora.git" [repos.mirror-actions-checkout] bucket = "main" description = "Read-only pull mirror of code.forgejo.org/actions/checkout. Our workflows use it instead of actions/checkout." github = false upstream = "https://code.forgejo.org/actions/checkout.git" [repos.mirror-rcaloras-bash-preexec] bucket = "main" description = "Read-only pull mirror of github.com/rcaloras/bash-preexec. Aurora's build fetches bash-preexec.sh from here." github = false upstream = "https://github.com/rcaloras/bash-preexec.git" [repos.mirror-coreos-fedora-coreos-config] bucket = "main" description = "Read-only pull mirror of github.com/coreos/fedora-coreos-config. Aurora's build fetches coreos-sulogin-force-generator from here." github = false upstream = "https://github.com/coreos/fedora-coreos-config.git" [repos.mirror-ublue-os-countme] bucket = "main" description = "Read-only pull mirror of github.com/ublue-os/countme. Aurora's build fetches badge-endpoints/aurora.json from here." github = false upstream = "https://github.com/ublue-os/countme.git" [repos.mirror-ublue-os-akmods] bucket = "main" description = "Read-only pull mirror of github.com/ublue-os/akmods. Aurora's build fetches certs/public_key.der from here." github = false upstream = "https://github.com/ublue-os/akmods.git" # Aurora's wallpapers, logos and shared files; its build copies them from # the ghcr.io/get-aurora-dev/common image this repo builds. [repos.mirror-get-aurora-dev-common] bucket = "main" description = "Read-only pull mirror of github.com/get-aurora-dev/common: Aurora's wallpapers, logos and shared files, which Aurora's build copies from its image." github = false upstream = "https://github.com/get-aurora-dev/common.git" # Homebrew integration, copied into Aurora from its image. [repos.mirror-ublue-os-brew] bucket = "main" description = "Read-only pull mirror of github.com/ublue-os/brew: the Homebrew integration Aurora's build copies from its image." github = false upstream = "https://github.com/ublue-os/brew.git" # Sources of the ublue-os/packages COPR RPMs Aurora installs. [repos.mirror-ublue-os-packages] bucket = "main" description = "Read-only pull mirror of github.com/ublue-os/packages: sources of the ublue-os/packages COPR RPMs Aurora installs." github = false upstream = "https://github.com/ublue-os/packages.git" # Fedora's definition of Kinoite, Aurora's base. [repos.mirror-fedora-workstation-ostree-config] bucket = "main" description = "Read-only pull mirror of pagure.io/workstation-ostree-config: Fedora's definition of Kinoite, Aurora's base image." github = false upstream = "https://pagure.io/workstation-ostree-config.git" # The image rechunker Aurora pins. [repos.mirror-coreos-chunkah] bucket = "main" description = "Read-only pull mirror of github.com/coreos/chunkah: the image rechunker Aurora pins in image-versions.yml." github = false upstream = "https://github.com/coreos/chunkah.git" # Anaconda-webui's npm packages (quine-linux's installer build). [repos.mirror-rhinstaller-node-cache] bucket = "main" description = "Read-only pull mirror of github.com/rhinstaller/node-cache: anaconda-webui's npm packages, which quine-linux's installer build uses." github = false upstream = "https://github.com/rhinstaller/node-cache.git" # Anaconda-webui's build takes pkg/lib from it. [repos.mirror-cockpit-project-cockpit] bucket = "main" description = "Read-only pull mirror of github.com/cockpit-project/cockpit: anaconda-webui's build takes pkg/lib from it." github = false upstream = "https://github.com/cockpit-project/cockpit.git" # Quine-linux's live/titanoboa-build-iso.sh comes from here. [repos.mirror-ublue-os-titanoboa] bucket = "main" description = "Read-only pull mirror of github.com/ublue-os/titanoboa: quine-linux's live/titanoboa-build-iso.sh comes from here." github = false upstream = "https://github.com/ublue-os/titanoboa.git" # Aurora's live ISO, which quine-linux's live/ is adapted from. [repos.mirror-get-aurora-dev-iso] bucket = "main" description = "Read-only pull mirror of github.com/get-aurora-dev/iso: Aurora's live ISO, which quine-linux's live/ is adapted from." github = false upstream = "https://github.com/get-aurora-dev/iso.git" # KDE's wallpapers (Autumn and others), packaged by Fedora as plasma-workspace-wallpapers. [repos.mirror-kde-plasma-workspace-wallpapers] bucket = "main" description = "Read-only pull mirror of invent.kde.org/plasma/plasma-workspace-wallpapers: KDE's wallpapers (Autumn, Altai, Cascade, ...), which Fedora packages as plasma-workspace-wallpapers." github = false upstream = "https://invent.kde.org/plasma/plasma-workspace-wallpapers.git" # KDE's plasma-desktop: the mirror, and our fork of it, whose quine-v # branches carry Quine Linux's changes (Kickoff's update bar); quine-linux # builds Kickoff from them. The fork's default branch, quine, holds its # README and the workflow that makes a branch for each new Plasma release. [repos.mirror-kde-plasma-desktop] bucket = "main" description = "Pull mirror of invent.kde.org/plasma/plasma-desktop. Our fork with Quine Linux changes: quine-global/plasma-desktop." github = false upstream = "https://invent.kde.org/plasma/plasma-desktop.git" [repos.plasma-desktop] bucket = "main" description = "Fork of KDE's plasma-desktop (via mirror-kde-plasma-desktop) with Quine Linux's changes: a quine-v branch per Plasma version, built by quine-linux (Kickoff's update bar)." github = false forked_from = "https://invent.kde.org/plasma/plasma-desktop" # Moved here from quine-global-labs (2026-11-13), not listed until then. [repos.dependabot-core] bucket = "main" description = "Dependabot on the forge: a fork of dependabot/dependabot-core with a Forgejo runner (forgejo/)" github = false forked_from = "dependabot/dependabot-core" [repos.keymaker] bucket = "main" github = false forked_from = "tobagin/keymaker" [repos.kleopatra] bucket = "main" github = false forked_from = "https://invent.kde.org/pim/kleopatra" [repos.libkleo] bucket = "main" github = false forked_from = "https://invent.kde.org/pim/libkleo" [repos.mirror-keymaker] bucket = "main" github = false upstream = "https://github.com/tobagin/keymaker.git" [repos.mirror-kde-kleopatra] bucket = "main" github = false upstream = "https://invent.kde.org/pim/kleopatra.git" [repos.mirror-kde-libkleo] bucket = "main" github = false upstream = "https://invent.kde.org/pim/libkleo.git"