radicle-infra
Easing the deployment of Radicle seed nodes with the magic of Nix 🌱 ➕ ❄️
Deployment
Using radicle-nix (rad:zTGn5tnYJgF8qd6KDuodURvUvwLe) we can easily deploy
seed nodes to target hosts.
To update the version of radicle-node package, changes are made in
radicle-nix. To reflect those changes in radicle-infra, first update the
Flake input:
nix flake lock --update-input radicle
Then the following option should be changed in os/host/seed/radicle.nix:
{pkgs, ...}: {
services.radicle.package = pkgs.radicle-node-1_2;
}
Then to deploy to the target, for example seed.radicle.xyz, use the following
command. You might have to adjust the value of $USER if the username on your
local machine does not match the username of your account on the target machine.
Also, note that you may have to get permission to be added as a user first:
HOST=seed.radicle.xyz; nixos-rebuild switch --target-host "${USER}@${HOST}" --build-host "${USER}@${HOST}" --use-remote-sudo --flake .
DNS
The radicle.xyz. zone is configured via DNSControl.
Previewing and pushing changes requires a Cloudflare API Token in the environment at CLOUDFLARE_API_TOKEN.
In /dns:
Sanity-check with:
dnscontrol check
Preview changes with:
dnscontrol preview
If the preview looks good, finally
dnscontrol push
Please keep dnsconfig.js tidy with
dnscontrol fmt > tmp.js && mv tmp.js dnscontrol.js
(As of 2025-06, there is no pre-commit hook for dnscontrol.)