NixOS

Overview

Step on a journey to explore and learn why so many developer, system administrators and other enthusiasts use Nix and can not imagine the world without it.
image/svg+xml

Always working development environment.

With Nix every developer will enter a complete and consistent development environment. Stop worrying how to install dependencies for your project.

  • complete dependencies
  • build sandbox

Under Nix, a build process will only find resources that have been declared explicitly as dependencies. There is no way it can build until everything it needs has been correctly declared. If it builds, you will know you've provided a complete declaration.

The same build process specification is than used to provide development environment. With successful build, we can guarantee that everything needed to building the project is available to the developer. Even more, some additional development tools can be added to assist the development.

Long are gone the days developers saying: But it works on my machine!

image/svg+xml

One tool, many languages, many more projects.

With today's polyglot development environments, each language has its own way of building and testing. Encourage cross-team development by providing a single way of building everything.

  • language agnostic
  • multiple versions
  • portable

Keeping the project README up to date with the latest working version of how to install system dependencies for you project is a never ending task. Nix allows you to specify your system dependencies alongside your project dependencies. Development environment is one simple command away, all you need to run is nix-shell.

Multiple versions or variants of a package can be installed at the same time without a problem. This is important when different projects have dependencies on different versions of the same package — Nix prevents the “DLL hell”.

image/svg+xml

Either it works or fails always in the same way.

With Nix there are two results: the code either works or fails always in the same way. This gives you the power to reproduce (and avoid) any build related bugs.

  • reproducibility
  • transparent source binary model
  • nix language

Build instructions are written in Nix language, which allows you to extend or change existing build instruction in any way you wish. This makes Nix a power build tool that can be used in both simple and complex project.

Building and running tests locally or in your CI would always result in the same failure or guarantee success. This is because environment is always shared wherever your run it with Nix.

image/svg+xml

Is the previous version better? Rollback anytime.

Packages are never overwritten, and old versions are always stored. Rollback to any previous version within milliseconds.

  • generations
  • garbage collection
  • atomic
  • nix store

profiles, generations, garbage collection

image/svg+xml

It is important to have fun.

  • generations
  • nix store

We don't stop playing, because we grow old; we grow old because we stop playing - George Bernard Shaw. Use tools that allow you to play with different software as you did when the job wasn't waiting for you the next day.

Install new software with no risk of breaking anything down. Nix prevents conflicts not only between multiple development environments, but also with the operating system. You work environment will stay intact, but allow you to experiment.

We could write that because of Nix you will become a better programmer. You probably will, just because you will be able to expose yourself to more software. But none of this is relevant. The most important thing is to have fun. Without it, we get sick.

image/svg+xml

From zero to cloud.

  • cloud images
  • docker images
  • devops

Use the same tool to build one project or even one hundred projects, configure machines and deploy to the cloud. Thanks to the extensible Nix language, it's easy to compose parts together with little overhead.

Using one tool to build Amazon EC2, Google Cloud, Azure, Virtualbox, KVM and other images in a declarative way. You can then deploy them with the tools you already know and use.

Nix takes building docker images to the next level. Forget Dockerfile and have a peace of mind with declarative approach that Nix gives you. Automatically calculate the best layer structure for your docker image and build minimal images that include only software that is needed for you project. Nix and Docker is a match made in heaven.

image/svg+xml

No surprises. Trust in your deployments.

Surprises only belong to birthdays, not deployments. With Nix there are only two possible outcomes. Your system was successfully upgraded or upgrade did not happen.

  • nixos
  • atomic
  • generations

Nix will never leave your system in an unknown state. It puts you in a complete control. The upgrade to new version of the system is atomic, meaning that there is no point in time where your system could be in a broken state. Some call it magic, Nix users call it a thing that they can not leave without.