13
votes
Any NixOS users?
Has anyone here used NixOS for any significant amount of time as their daily driver? I've been considering using it since I learned about it, I really like the idea of how it manages packages, but I'm a bit hesitant, particularly about the availability of packages, and how the whole folder structure changes from the usual Linux. I'm also worried since I haven't seen any guide about how to use python other than the usual advice to get a virtualenv for everything.
I consider myself a fairly advanced Linux user, I have used Arch as my daily driver for 4 years, and Linux for like 10 years, as a side note, so I'm not really that afraid of troubleshooting.
Been using it as my daily driver for almost a year now, have contributed packages and written projects in a few different languages. As a desktop system I absolutely love it, I couldn’t ask for anything easier to use. I used arch for a couple of years previously but I found it too much of a hassle, updating config files, rolling back broken packages. Nixon’s makes this not even a concern. I must have broken my system at least 15 times, and can just reboot with the last known good configuration and carry on. (Note, I was messing about with mounting hard drives and trying to get ZFS to work).
When it comes to development the community is still split. Some people want to declare all of their dependencies via the package manager, others want to use the language-specific dependency manager. Personallly I would still recommend using a virtual env for development then a tool like pypi2nix to build a nix package (if you are wanting to deploy it on nix).
The last slight issue is editor configuration, and this is highly dependent on what environment you use, so I won’t go into it for the moment.
Tldr; Nixos is great, develop like you normally would, hit me up if you want tips on how to configure your editor with NixOs.
What do you mean by editor configuration, do I not just throw in my .vimrc?
I was thinking more along the lines of when you are wanting to use build-tools, or linting tools with your editor, they need to be available in the $PATH in a reliable way. One can install them globally, which I really really don't like doing. The other option is to install them locally and augment your PATH to point to the new, temporary, location. Keep things clean.
I run it as the only OS on my private laptop. I knew about NixOS for several years, but just over half a year ago started using it as a daily driver.
I'm not a power user by far, but happy to answer your questions.
The folder structure works, unless a binary assumes a full LSB or a specific distro's layout. Even then there are some tools to trick it (e.g.
steam-run
).I haven't had any issues yet with Python, although I haven't actively looked for trouble either so far.
This is interesting. Almost seems like terraform on an os level (very crude comparison). But with docker being so accessible and stable and prevalent, what are the use cases where nixos prevails over docker?
They solve two different things. In fact there are many who use Nix(OS) to create Docker images.
From the practical everyday PoV, one of the major differences is that Docker images can contain other Docker images and it can quickly become very messy indeed. It’s similar, but perhaps slightly less messy with other container images such as Snaps, Flatpacks, etc.
On the other hand Nix (the package manager) and therefore NixOS (the distro) store every package in a separate directory and then link from it. Every package is built in a clean environment, so it can work independently and links to its dependencies, which are built the same way. That also means that you can have several versions of the same package installed and either call them explicitly or simply switch between them on the fly.
Then there’s also the ability to roll back (and forward) to a different state of the OS.
NixOS fascinates me, but I haven't installed it anywhere. Maybe when I buy a new laptop...
I use it on my home machine, and have done for a few years.
My configuration.nix lives here: https://github.com/kragniz/configuration.nix/
To explain this further, the
/etc/nixos/configuration.nix
(file or folder) is pretty much the only thing you need to build a NixOS system – you put all the packages and settings, including disk partitioning, users, services, etc. into it.