Radish alpha
r
rad:z254T5p17bdFPmzfDojsdjo4HjpoZ
Radicle Infrastructure as Code (NixOS, OpenTofu, …)
Radicle
Git
L
Lorenz Leutgeb
bootstrap: Rewrite in Nu 1 day ago b8db72c History
radicle-infra

radicle-infra

Easing the deployment of Radicle seed nodes with the magic of Nix 🌱 ➕ ❄️

Deployment

Then to deploy to the target, for example seed.radicle.dev, 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.dev; nixos-rebuild switch --target-host "${USER}@${HOST}" --build-host "${USER}@${HOST}" --use-remote-sudo --flake .

Overlays

To deploy a version of packages that are not upstreamed (e.g. pre-releases), use the overlays in ./overlay.

Then the following option should be changed in os/mixin/radicle.nix:

{pkgs, ...}: {
  # Use Nixpkgs
  services.radicle.package = pkgs.radicle-node;

  # Use overlaid version.
  services.radicle.package = pkgs.radicle-node-overlay;
}

DNS

The radicle.{community,dev,network,xyz} zones are 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.)