<p dir="ltr">Hey all,</p>
<p dir="ltr">I posted this before but it didn't go through.</p>
<p dir="ltr">I saw some discussion on using Nix as a package manager and wanyed to share some info on Nix.</p>
<p dir="ltr">As some have said Nix of course doesn't currently work on Windows, unless you use Cygwin.</p>
<p dir="ltr">Most other language package managers when inside a NixOS or Nix system become hard to use, because they allow mutation. This has meant that the Nix has to create adapters like cabal2nix or npm2nix... etc. These convert an appropriate configuration file into a Nix file so it can be used inside the Nix system.</p>
<p dir="ltr">Nix is of course language independent, so its purpose is far more than just building language libraries, it can build apps and configure the entire OS of NixOS.</p>
<p dir="ltr">Some aspects of Nix I've realised over the course of my usage.</p>
<p dir="ltr">The language is a full turing complete functional language. This means there's more things to learn and understand when it comes to Nix. It is not at the level of things like JSON or TOML. This of course gives you power at the cost of less simplicity. However it is a pretty useful language designed for configuration and manipulating things like attribute sets.</p>
<p dir="ltr">During a build Nix still relies on the internal build scripts of the particular package. This could mean makefiles and bash files.</p>
<p dir="ltr">I tend to find changing the properties of existing package nix files to be somewhat difficult. In some cases you can override properties, in others you pass parameters to the functions, and in other cases you completely create your package nix file. This problem appears whenever the package you're building has a lot of different parameters and configuration.</p>
<p dir="ltr">One really cool thing is the concept of the Nix channel. So one could possibly add all of Erlangs nix files into the erlang channel instead putting it all into the official nixpkgs channel. Furthermore you also have build farms which can ship the binary to the OS instead of building it from source.</p>
<p dir="ltr">Using Nix in development is quite different from using Nix in production. In development you generally want to be able to mutate the source code easily, even possibly the source code of your dependencies. But you can't really do this if you just use Nix normally to install packages. Instead you have to use Nix in a Nix-Shell or a nix container or build everything in the current directory.</p>
<p dir="ltr">Some other people who are more expert in Nix might be pitching in later.</p>
<p dir="ltr">This shows the difference of doing dev on Nix vs normal Nix:</p>
<p dir="ltr"><a href="http://blog.lastlog.de/posts/nodejs_on_nixos_status/">http://blog.lastlog.de/posts/nodejs_on_nixos_status/</a></p>
<p dir="ltr">Thanks,<br>
Roger</p>