NixOS

Overview

Step on a journey to explore and learn why so many developers, 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 build the project is available. Even more, 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.

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
  • portable

Keeping the project's installation instructions up to date is a never ending task. Nix allows you to specify your system dependencies alongside your project's dependencies in a declarative way.

Instead of complicated installation instructions with Nix the development environment is always only one command away. And that is without using any Docker or other vitalization.

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
  • continuous integration

Trying to keep system dependencies of development environments in sync with continuous integration (CI) is a disaster waiting to happen. Being able to use the same environment locally or anywhere else is putting a developer back in control.

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 powerful build tool that can be used in both simple and complex projects.

image/svg+xml

From zero to cloud.

Use the same tool to build one project or even one hundred projects, configure machines and deploy to the cloud.

  • cloud images
  • docker images
  • devops

Use one tool to develop, test and build Amazon EC2, Google Cloud, Azure, Virtualbox, KVM and other images in a declarative way is a DevOps dream.

Forget Dockerfile and have a peace of mind with declarative approach Nix gives you. Nix automatically calculates the optimal layer layout and only includes software needed. Nix and Docker is a match made in heaven.

image/svg+xml

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

Since Nix never overwrites files in the Nix store, but just adds new versions in different paths, the upgrades are atomic. During an upgrade, there is no time window in which some files exists from the old version and some files from the new version - which would be bad because a program might crash if it's restarted during that period.

And since nothing is overwritten, the old versions are still there after an upgrade. This means that you can rollback to the old version. Rollbacks are very fast: it doesn't involve lots of files having to be restored from copies.

image/svg+xml

Experiment without fear.

  • generations
  • nix store

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. Your work environment will stay intact, but allow you to experiment in a safe way.

No need to turn your system upside down just because you want to test some experimental and bleeding edge versions of software.

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 the thing that they can not live without.

image/svg+xml

Contribution is only a Pull request away.

Community is at the core of Nix. Collaboration is encouraged by providing low barrier to contribute and bots to guide contributors through the process.

  • community
  • contribute
  • github

Development of Nix, Nix software collection and NixOS Linux distribution happens on GitHub. To contribute to any of the Nix projects a Pull request can be quickly authored. The bots and community members will guide you further to through the process to ensure quality.