Jump to content

Radicle

From Official NixOS Wiki

Radicle is a distributed code repository with support for Git. Repositories can be shared between several nodes in a P2P network, ensuring availability even one or more nodes go offline.

Setup

A minimal node can be setup with the following configuration snippet. It will use the name localhost and the control api endpoint will listen on http://0.0.0.0:8080.

services.radicle = {
  enable = true;
  httpd = {
    enable = true;
    listenAddress = "0.0.0.0";
    listenPort = 8080;
  };
  publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOeF3XkiZrxJAWYBih2KPUdy01hO5raRX+fqbhJwsj/n";
  node.openFirewall = true;
  settings = {
    preferredSeeds = [ ];
    node = {
      alias = "localhost";
      relay = "always";
      seedingPolicy = {
        default = "allow";
        scope = "all";
      };
    };
  };
};

The public key needs to get generated using following command

nix run nixpkgs#radicle-node -- auth

Configuration

To share a specific repository, for example an unoffical nixpkgs one, add it to the node.seedingPolicy section.

services.radicle = {
  settings = {
    seedingPolicy = {
      repositories."rad:z3StaJpzQNGhhkPfhCtRxSmNZZpu9" = "all";
    };
  };
};

Mirroring Nixpkgs

Replicating ("mirroring") a copy of Nixpkgs on the Radicle network is discussed in multiple places. Consider the following incomplete list of references: