Irdest

Modular decentralized peer-to-peer packet router and associated tools

Try the service in a VM

  1. Install Nix
    Arch Linux
    Bash
    $ pacman --sync --refresh --noconfirm curl git jq nix
    Debian
    Bash
    $ apt install --yes curl git jq nix
    Ubuntu
    Bash
    $ apt install --yes curl git jq nix
  2. Download a configuration file
    # default.nix
    {
      ngipkgs ? import (fetchTarball "https://github.com/ngi-nix/ngipkgs/tarball/main") { },
    }:
    ngipkgs.demo-vm (
      {
        services.ratmand = {
          enable = true;
        };
      }
    
    )
    
  3. Enable binary substituters
    Bash
    $ export NIX_CONFIG='substituters = https://cache.nixos.org/ https://ngi.cachix.org/
    trusted-public-keys = cache.nixos.org-1:6nchdd59x431o0gwypbmraurkbj16zpmqfgspcdshjy= ngi.cachix.org-1:n+cal72roc3qqulxihpv+tw5t42whxmmhpragkrsrow='
  4. Build and run a virtual machine
    Arch Linux, Debian Sid/Trixie and Ubuntu 25.04
    Bash
    $ nix-build ./default.nix && ./result
    Ubuntu 24.04
    Bash
    $ rev=$(nix-instantiate --eval --attr sources.nixpkgs.rev https://github.com/ngi-nix/ngipkgs/archive/master.tar.gz | jq --raw-output)
    $ nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/$rev.tar.gz --packages nix --run "nix-build ./default.nix && ./result"
  5. Usage Instructions
    1. ratman-tools are available in the shell.

    2. The ratmand dashboard is available at http://localhost:5850.

Options

programs.irdest-mblog Implement missing module
services.irdest-echo Implement missing module
services.irdest-proxy Implement missing module
services.ratmand
services.ratmand.enable

Whether to enable ratmand, a decentralised peer-to-peer packet router.

Type:
boolean
Default:
false
services.ratmand.package

The ratman package to use.

Type:
package
Default:
pkgs.ratman
Notes:
Missing update script An update script is required for automatically tracking the latest release.
services.ratmand.settings

Configuration for ratmand.

See available options at https://codeberg.org/irdest/irdest/src/branch/main/ratman/src/config/ratmand-0.5.kdl.

Type:
attribute set of attribute set of (string or boolean or signed integer)
Default:
{ }
services.ratmand.settings.ratmand.peers

Initial peers. The format is: <driver>:<hostname/ip address>:[<port>].

Type:
list of string
Default:
[ ]

Examples

basic-ratmand
{
  services.ratmand = {
    enable = true;
  };
}

This project is funded by NLnet through these subgrants:

Core
Irdest-Proxy
Entrust
Irdest-OpenWRT-BLE
Irdest-Spec
Review
Irdest

Related links: