Hubble, a simulator for the Nix/Hydra build tools

Hubble is a simulator designed to evaluate on-line scheduling algorithms
of Nix build tasks on clusters.

Nix is a package build tool that is typically used to build large sets
of packages, such as the constituents of the NixOS GNU/Linux distribution. The input to Nix is a large directed acyclic graph (DAG)
of package build tasks (currently ~3,000 nodes and ~18,000 edges), which
Nix can choose to distribute over several machines in a cluster. Hydra
uses Nix to continuously compile sets of packages directly from their
version control system.

Efficiently using computing and networking resources can help reduce
build times for a DAG of tasks. Hubble aims to evaluate several on-line
scheduling algorithms for Nix build tasks, on various platforms. Its
input is a DAG of build tasks and the description of a grid or cluster
to realize the build. Hubble simulates the build tasks and associated
data transfers using SimGrid.