Question

One of the top-level projects on nixos.org is Disnix, "a distributed deployment extension for Nix". Another project is NixOps, "a tool for deploying NixOS machines in a network or cloud".

The feature sets sound very similar. Are they competitors, or is one a successor to the other, or are they solving different problems? If they are "competitors", as they seem to be, then what are the differences, and which should I be using?

EDIT: if it's any indication, NixOps appears to be under active development, but I can't see when Disnix was last worked on.

Was it helpful?

Solution

NixOps is a tool for "spinning up" nixos machines. Think: ec2 API.

Disnix is a toolset for managing the services running on a network of machines. Think: Chef/Puppet for multiple hosts.

Using DisnixOS (see the latest builds) the two can work together well, delegating to NixOps for instantiation of servers and delegating to Disnix to configure all your services on those servers.

If you are just deploying to a single server or the relationships between your services are simple, then NixOps can probably do everything you need. If you have multiple machines, running multiple services that are all subtly inter-related... then you will want Disnix/DisnixOS.

OTHER TIPS

Sander van der Burg (the author of Disnix) has a rather detailed blog post explaining the relation/differences.

The short answer is: while both tools perform distributed deployment tasks and use the Nix package manager as underlying (local) deployment technology, they are designed for different purposes and address different concerns. Furthermore, they can also be effectively used together to automate deployment processes for certain kinds of systems.

[...]

[Nixops] does infrastructure deployment, while [Disnix] does service deployment. Infrastructure deployment is a prerequisite of doing service deployment and both tools can actually be combined to automate both concerns.

Service deployment is particularly useful for distributed systems that can be decomposed into "distributable units" (such as service-oriented systems), but not all kinds of distributed systems.

Moreover, NixOps is a tool that has been specifically designed to deploy NixOS configurations, while Disnix can deploy services to machines running any operating system capable of running the Nix package manager.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top