Nix is a package management language that has a massive ecosystem about solving DevOps problems.
Nix, is a functional and domain-specific programming language. Nix also is a package manager for Linux and Unix based systems like aptitude and brew.
But, not just for a single system. It's an independent package manager. So you can use Nix to manage system packages or your language packages. You can install Nginx with Nix, and you can install
is_array npm package, or you can install
HTTPBundle for Symfony, or you can manage your Python packages. Also, you can install different versions of the same package to the same environment.
There is a ton of usage area of Nix. Also, Nix has a great ecosystem for developers. You can use NixOS if you want to manage your whole system via Nix, and you can use NixOps if you are going to build your applications to a network.
Today I will show you a simple introduction about Nix. I planned a Nixops introduction and "how you can deploy a real Symfony application via Nixops" titled article. I'll share it soon.
As I said, you can manage your system packages with Nix. Just install Nix your Linux or macOS; (You have to root access for install the nix.)
curl -L https://nixos.org/nix/install | sh
That command installs the
nix-env tool to your system. You can use nix like
apt with that command.
You can get an installable packages list with
nix-env -qa command; also, you can check an online tool for searching packages.
You can install packages with
nix-env -i hello command.
-i argument for
Check your package installed directory via
which hello command. It will produce a result like that on Linux:
You'll get a
Hello, World! respond when you run
hello command. You can also install firefox with
nix-env -i firefox command.
Nix is a purely functional programming language. So you have only pure functions. And all your functions just gave a single argument. There is an example Nix function;
x: x*2 is a function that gets an integer and returns the product with 2. I will not give a language lesson. You can read nix-pills for it.
You can write your build script with Nix language. Nix repository contains a lot of derivations for a ton of packages. Every time you want to install a package, a derivation will work and build that application in your system with precisely valid dependencies. You will not see dependency related errors. If an application needs the
curl library, it will install as independently.
You can read about Nix in the official web site. Also, I'll write different Nix and Nixops documents for the PHP ecosystem in this blog.
Keep yourself healthy!