Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

A Holochain edgenode

One conductor on one machine, built from the nixos-holochain modules. Generated by nix flake init -t github:Sensorica/nixos-holochain#minimal.

Files

  • flake.nix — inputs and the edgenode NixOS configuration.
  • configuration.nix — the machine: hostname, operator account, services.holochain-edgenode.
  • hardware-configuration.nix — a placeholder so the flake evaluates before the machine exists.

First steps

  1. Paste your SSH public key into users.users.operator.openssh.authorizedKeys.keys in configuration.nix.
  2. On the target machine, replace the placeholder hardware configuration with the real one. Nothing in the placeholder needs keeping: the boot loader is set in configuration.nix.
    sudo nixos-generate-config --show-hardware-config > hardware-configuration.nix
    
  3. Check it evaluates, then deploy:
    nix flake check --no-build
    sudo nixos-rebuild switch --flake .#edgenode
    
  4. Give operator a password on the console (sudo passwd operator) if you want it to use sudo over SSH.

Firmware assumption

configuration.nix boots with systemd-boot, which is what the NixOS installer sets up on a UEFI machine with its ESP at /boot. On a legacy-BIOS machine replace the two boot.loader lines with GRUB (boot.loader.grub = { enable = true; device = "/dev/sda"; };). The #fleet template carries a GRUB layout that boots the same disk under both firmwares, built for Holoports.

Installing a hApp at boot

Uncomment the happs block in configuration.nix. Bundles are installed once, on first boot, by an idempotent installer service; networkSeed puts the app on its own network.

services.holochain-edgenode.happs.my-app = {
  src = ./my-app.happ;
  networkSeed = "my-network-2026";
};

What is running

systemctl status holochain-conductor.service
hc client call --port 4444 list-apps

The admin interface listens on 4444 and the app interface on 8888, both on loopback. The admin port is never opened in the firewall; openFirewall = true opens the app port and, with metricsExporter.enable, the node_exporter port.

More

  • Full option reference: docs/module-options.md
  • Observability, an HTTP gateway and a five-node fleet: nix flake init -t github:Sensorica/nixos-holochain#fleet