NixOps Maintenance and Towards NixOps4
Published on October 17, 2024 by Robert Hensing
Hi everyone,
It's been a while since our last update, and I wanted to share what has been going on with NixOps and our future plans!
Progress Over the Last Two Years
Since taking over as the maintainer of NixOps, my focus has been primarily on light maintenance, such as updates and fixing simple bugs. The core system works well for many use cases, but the code is complex and hard to modify, which has limited new feature development.
Recognizing these challenges, I've started working on a redesign—NixOps4—which I got funded outside of OpenCollective.
Why NixOps4?
NixOps4 aims to address several key issues:
- Data flow limitations: In NixOps2, certain data flows couldn't be processed correctly due to limitations in its two-invocation Nix integration. Fixing this required substantial changes, and the workarounds made the tool harder to use.
- Plugin system complexity: The existing plugin system made maintenance possible across teams but froze the critical MachineState interface, which still needed flexibility for further evolution. In NixOps4, message passing replaces plugins, leading to a small, generic and stable interface for its integrations.
- Resource development: NixOps reinvented the wheel when it comes to cloud resources. Instead of competing with Terraform/OpenTofu, their resources will run on NixOps4 through an adapter resource. This lets NixOps4 support the widest array of resources, and lets the ecosystem focus on higher level modules using the Nix language.
- Generality: NixOps was tightly coupled to NixOS. In contrast, NixOps4 is designed to be more flexible. It doesn't hardcode NixOS, making it possible to integrate with other system configuration managers (such as nix-darwin) or deploy NixOS in new ways, such as pull-based or locally evaluated deployments.
Current Status
NixOps4 is still in development, so it's not usable yet, nor is it in a phase where it's ready for contributions. However, I continue to maintain NixOps and hope that with the required boto3 update, we can extend its life until NixOps4 is ready for production.
Changes to the Collective
Previously I've experimented with Projects to let contributors "vote" for specific initiatives. However, this approach didn't gain much traction, as almost all contributions went into the main, broadly defined budget. Since I know most of you still rely on NixOps, I will ensure that the funding is allocated thoughtfully as we transition the collective towards a more sustainable and exciting future with NixOps4.
Specifically, the 'Projects' feature will be paused for now, and the pages and descriptions will be updated to better align with the collective's evolving direction.
Specifically, the 'Projects' feature will be paused for now, and the pages and descriptions will be updated to better align with the collective's evolving direction.
What's Next
In the coming months, I'll focus on keeping NixOps reliable and pushing NixOps4 forward. I'll keep you posted on the progress, especially as NixOps4 becomes more mature and easier to contribute to.
A huge thank you to our contributors and supporters—your funding makes all this possible!
Best regards,
Robert Hensing
Nix Deployments Collective admin
NixOps maintainer