Operators should be able to describe a node in a configuration file and have it come up, identically, on every machine they run.
This uses NixOS, a Linux distribution whose whole system is defined by declarative configuration and builds reproducibly. Two Nix terms recur below. A flake is Nix's standard unit for a reproducible, version-pinned build, so nix run gives everyone the exact same binary. A NixOS module is a reusable piece of configuration that adds a service to a system, here services.dspeer.
This task delivers a first-class NixOS module and a flake that builds both the daemon and the client reproducibly. It adds an automated test in which two nodes federate a collection inside a virtual machine on every commit. It is developed in dialogue with the NixOS packaging community.
Outcomes
Operators should be able to describe a node in a configuration file and have it come up, identically, on every machine they run.
This uses NixOS, a Linux distribution whose whole system is defined by declarative configuration and builds reproducibly. Two Nix terms recur below. A flake is Nix's standard unit for a reproducible, version-pinned build, so
nix rungives everyone the exact same binary. A NixOS module is a reusable piece of configuration that adds a service to a system, hereservices.dspeer.This task delivers a first-class NixOS module and a flake that builds both the daemon and the client reproducibly. It adds an automated test in which two nodes federate a collection inside a virtual machine on every commit. It is developed in dialogue with the NixOS packaging community.
Outcomes
services.dspeerNixOS module: hardened systemd unit with a dedicated user and state directory, declarative collection and peer configuration, and a generated option referencenix runworks from a clean checkout on an unprepared machine