As someone who installed Nixos about 3 weeks ago, I read this thread with great interest. For some context, I’ve worked in IT for nearly 30 years, sysadmin, developer, devops, in over 20 years of Linux use I’ve had desktops and servers of Redhat, Fedora, Debian, Slackware, Gentoo and others. My nephew (also dev/devops, and he knows functional programming) told me about Nixos and so I downloaded an ISO and installed it.
My experience has taught me to be cautious, so I went vanilla, no flakes, no Home Manager, just pure configuration.nix. All good. I read a bit of documentation, the install went OK, but it has to be said that I didn’t install anything except X and Plasma so I ended up with a very simple config file. And like many people, I was left without a functional profile. Neither a system profile nor a per-user one. Lots of dead symlinks. A lot of googling and reading and being confused and I found out that oh, you don’t really need a profile any more, because channels, apparently … and now I know about two sets of tools, the (deprecated??) nix-* and nixos-* and the newer nix tool. Remove the dead symlinks and find out that (some?) nix-env commands recreate it … broken. Jesus wept. So I figured out how to fix all the broken symlinks and I think I have a profile? Does it matter?! It seems to allow me to give my custom config to some daemons / services / X and KDE userland stuff.
My laptop is multi boot, so I was under no pressure to make it work quickly. The plan was to start installing the stuff I use and see if I could get a usable system. Which I did in 3 or 4 days. I must have spent nearly a day screwing around with bootloaders Nixos has been my quotidian OS since then.
As a long time Linux user, my environment is pretty customised. It’s mostly in a git repo and I have Ansible playbooks to do some of the tedious bits, so I haven’t converted my existing customisation to anything nixy yet. And this is where the trouble really starts …
Just trying to get packages installed, started at boot and with a custom configuration involved a huge amount of googling because the documentation either didn’t answer any of the questions I had or I couldn’t find it. And neither could Google because I ended up reading about a lot of 3rd party stuff. The same quandary as everyone else … do I embrace Flakes? Is Home Manager enough? Should i shun 3rd party tools altogether? Why does the base OS leave such problems to be solved?
So many of the problems I needed to solve and googled for only had solutions using such 3rd party tools. I have managed to solve most of my problems now, but it’s been a savage struggle at times. Including, but not limited to, Libreoffice’s environment variable requirements, vim plugins that need python in a venv, trackpad gestures (God bless you libinput-gestures) and more.
I actually really like Nixos, it’s a great concept and it will be my main OS for a while. But then I loved Gentoo for 10 years hehe. And Slackware for another 2 or 3. I was motivated to solve my problems. I have written Gentoo ebuilds, Slack packages, perl modules, python packages … and I have to say the idea of writing a nixpkg is the most fearsome prospect yet
Two questions if I may:
Should I start using Flakes or Home Manager?
Should I make posts about some of the specific weird problems I’ve solved and if so, where?
Cheers,
Rich