wire Tutorial Overview
wire is a tool to deploy NixOS systems. Its usage is inspired by colmena. In many places it's configuration attempts to remain a superset[1] of colmena, however it is not a fork.
WARNING
wire is alpha software, please use at your own risk.
In this tutorial we will create and deploy a wire Hive. Along the way we will encounter npins, simple NixOS configurations, virtual machines, and deployment keys.
You'll need at least 10~ GB of free disk space to complete this tutorial.
Ready? Skip to Nix Setup.
Why wire?
Features
| Features | wire | Colmena |
|---|---|---|
| Node Tagging | ✅ | ✅ |
| Secret Management | ✅ | ✅ |
| Parallel Deployment | ✅ | ✅ |
| Remote Builds | ✅ | ✅ |
| Key Services | ✅ | ✅ |
| Pipeline Support | ✅ | ❌[2] |
| Non-Root Deployments | ✅ | ❌[3] |
--path accepts flakerefs | ✅ | ❌ |
| REPL & Eval expressions | ❌ | ✅ |
| Adhoc remote command execution[4] | ❌ | ✅ |
Speed
wire is about >2x faster than colmena deploying identical large hives.
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
wire@HEAD | 185.075 | 185.075 | 185.075 | 1.00 |
colmena@pinned | 343.075 | 343.075 | 343.075 | 1.85 |
A lot of your colmena module options will continue to work with wire, but wire has additional ergonomic changes you can take advantage of. ↩︎
You need to write custom nix code to use Colmena hive metadata inside environments like CI pipelines, bash scripting, etc., which requires a knowledge of its internals. Recently it agained the eval feature which has improved the situation since wire was first started. ↩︎
wire lacks an equivalent to
colmena exec. ↩︎