Hi Guix,

> [...]
> New URL for the primary mirror:
>
>     https://cache-cdn.guix.moe
>
> More mirrors!
>
>     Germany:       https://cache-de.guix.moe
>     Italy:         https://cache-it.guix.moe     (Thanks poesty!)
>     United States: https://cache-us-lax.guix.moe
>     Singapore:     https://cache-sg.guix.moe

New mirrors:

Finland:    https://cache-fi.guix.moe
Hong Kong:  https://cache-hk.guix.moe

> See <https://ultrarare.space/en/posts/guix-build-farm/#mirrors> for
> update-to-date information.
>
> I'll ensure availability of the old domain names on boiledscript.com before
> 2026.
>
>>[...]
>> This allows mirroring substitutes with rsync and a file server.
>>
>> Substitutes are also synced to object storage (currently Cloudflare R2
>> with Cloudflare CDN, a choice to reduce expenses) to facilitate
>> mirroring without a full clone.
>>
>> Now there're three approaches to mirror the substitutes, specific steps
>> are covered in the blog post:
>>
>> 1. Full mirror (rsync + file server)
>> 2. narinfo mirror + reverse proxy
>> 3. narinfo mirror + redirection
>>
>> Currently the "cache-cdn" mirror uses the 3. approach, to ensure
>> performance on querying and downloading, however there's a delay on the
>> redirection so either 1. or 2. is more suitable for future mirrors.  Let
>> me know if you're interested in hosting one :)
>
> Redirection of cache-cdn is now avoided by using Cloudflare Workers to act as
> the frontend

Due to performance issue discussed in the thread, I have adjusted configuration
of cache-cdn, now it's a narinfo mirror and redirects nar archive requests to a
Cloudflare Workers instance, which returns resources stored in Cloudflare R2.

The redirection degrades performance, this can be partially mitigated by setting
‘--max-jobs’ to download multiple archives in parallel.

> I have migrated the head node to a machine with more storage and started
> building Guix channel, reusing substitutes from official servers.  Hopefully 
> it
> will be an option for those with slow connection to official servers in a few
> days.

Following recent massive rebuilds, I have changed to pin the commit of guix
channel: <https://codeberg.org/hako/guix-pinned>, currently using commit of the
‘guix’ package.  I'll update it when other channels are built and I see a good
weather.

I have set up Guix System on all mirrors and unified their configurations into
one procedure.

  Mirror
  https://codeberg.org/hako/Testament/src/branch/trunk/config/mirror.org
  https://codeberg.org/hako/Testament/src/branch/trunk/files/deploy/mirror.scm

  Cuirass remote worker
  https://codeberg.org/hako/Testament/src/branch/trunk/config/worker.org
  https://codeberg.org/hako/Testament/src/branch/trunk/files/deploy/worker.scm

Also a repository to help set up Guix installation and Guix System from foreign
distro, I plan to rework it soon:
https://codeberg.org/hako/guix-setup

I created a docker image (built using ‘guix system image’) to deploy Cuirass
remote workers.  So that machines can be connected into the build farm on more
environments in one command.  I'll generate keys for you if you're interested.

I found that images generated using ‘guix system image’ cannot start Shepherd on
foreign distros so I used a customized entry point.  It would be better to use
Shepherd instead, not sure why and how to solve it at the moment.

--8<---------------cut here---------------start------------->8---
docker run --detach --privileged --restart always \
    --name "guix-moe-worker" \
    --hostname "temp" \
    --env CUIRASS_SERVER="100.97.195.93:5555" \
    --env CUIRASS_SUBSTITUTE_URLS="https://ci.guix.moe 
https://bordeaux.guix.gnu.org https://ci.guix.gnu.org"; \
    --env CUIRASS_SYSTEMS="x86_64-linux,i686-linux" \
    --env CUIRASS_WORKERS="4" \
    --env GUIX_THREADS_PER_WORKER="4" \
    --env GUIX_PUBLIC_KEY="(public-key (ecc ..." \
    --env GUIX_PRIVATE_KEY="(private-key (ecc ..." \
    --env TAILSCALE_AUTH_KEY="tskey-auth-..." \
    --device /dev/net/tun:/dev/net/tun \
    ghcr.io/rakino/guix-moe-worker:latest
--8<---------------cut here---------------end--------------->8---

and compose.yaml for ‘docker compose’
--8<---------------cut here---------------start------------->8---
services:
    guix-moe-worker:
        image: ghcr.io/rakino/guix-moe-worker:latest
        hostname: temp
        environment:
            - CUIRASS_SERVER=100.97.195.93:5555
            - CUIRASS_SUBSTITUTE_URLS=https://ci.guix.moe 
https://bordeaux.guix.gnu.org https://ci.guix.gnu.org
            - CUIRASS_SYSTEMS=x86_64-linux,i686-linux
            - CUIRASS_WORKERS=4
            - GUIX_THREADS_PER_WORKER=4
            - "GUIX_PUBLIC_KEY=(public-key (ecc ..."
            - "GUIX_PRIVATE_KEY=(private-key (ecc ..."
            - "TAILSCALE_AUTH_KEY=tskey-auth-..."
        devices:
            - /dev/net/tun:/dev/net/tun
        privileged: true
        restart: always
--8<---------------cut here---------------end--------------->8---

> I'll keep the build farm running in the long term, so I'm seeking donation on
> mirror hosting, and financial support to share the expenses (cache-cdn, object
> storage and mirrors I host.  Currently they are for demonstration purpose, I 
> may
> strip them out if necessary to reduce the expenses).

I'll run the mirrors for at least six months (2026-03-01) and keep the object
storage for at least one year (2026-09-01).

Thanks

Reply via email to