Nix
Nix offers functional, modern tooling that supports many areas of software development and particularly shines in DevOps. The focus on complete reproducibility yields many advantages.
Reproducible, Project-Local Development Environments
With so-called Nix shells, all developers of a project work in identical environments. This effectively eliminates problems caused by tools in different versions.
CI/CD: Less (Docker) Is More
The above development environments can be used for CI jobs. In many cases, this reduces the dependencies of jobs to "Nix must be installed," often eliminating the need to write Dockerfiles entirely and reducing scripts to one-liners. What happens in CI is exactly what happens on local machines – no more "CI only" problems!
Minimal and Reproducible Delivery Artifacts (Containers, Portable systemd Services, Binaries, ...)
Depending on the project/technologies, it may be worthwhile to go the Nix way completely and also have Nix build the delivery artifacts (so-called Nix builds). Apart from the extremely simple integration into CI/CD platforms here as well, such artifacts are comparable to "static linking": (Almost) no installed dependencies are required on target systems. The distance between prod and dev environments is minimal.
This is particularly exciting for containerized delivery, which is often requested by customers. Images or containers built via Nix are minimal by construction, containing only the software that should run and its transitive dependencies – typically all in one layer. Even core utilities and shells don't need to be included, making artifacts created this way extremely secure (and easy to audit).
Consulting/Training
The above lists only some of the advantages. We can help you identify the best use cases for Nix in your individual projects and workflows, and support you with integration. Contact us!
