comin is a NixOS deployment tool operating in pull mode. Running on a machine, it periodically polls Git repositories and deploys the NixOS configuration associated to the machine.
- ❄️ Git push to deploy NixOS configurations
- 🚧 Support testing branches to try changes
- 🚀 Poll multiple Git remotes to avoid SPOF
- 📮 Support machines migrations
- ⏩ Fast iterations with local remotes
- 📡 Observable via Prometheus metrics
In your configuration.nix
file:
services.comin = {
enable = true;
remotes = [
{
name = "origin";
url = "https://gitlab.com/your/infra.git";
}
];
};
This enables a systemd service, which periodically pulls the main
branch of the repository https://gitlab.com/your/infra.git
and
deploys the NixOS configuration corresponding to the machine hostname.
A new commit in the main
branch of the repository
https://gitlab.com/your/infra.git
is then deployed in the next 60
seconds.