But once you do learn it and fully prepared your set-up, it's amazing. Around a month ago I switched from Arch to NixOS after using the former for around a decade and I'm very happy with it despite its warts.
I've been thinking how interesting it would be to create a user-friendly Linux distribution on top of standard NixOS (similar to what Manjaro is to Arch), which would not require learning Nix language or tinkering with the configs. I mean, system configuration/choosing packages/drivers/kernels should not really require a user to write in Nix language - the sane choices can mostly be represented by a set of GUI checkboxes. There also could be GUI utilities for other Nix goodness, such as creating nix-shells with necessary dependencies available, declaring wrappers for proprietary software, or building temporary VMs. So, I would say, the user absolutely does not need to know a lot about Nix to fully appreciate robustness of NixOS way, and in principle, with the right tools/GUIs it can be very approachable for even non-technical users - it's just that user friendliness seemingly has not been a priority so far.
1. You need space for the Nix store, so it's not appropriate for every system (I like building small embedded appliances).
2. A six month release cycle can get a bit tiresome after a while. I know it's personal preference, but I wish it was a bit longer.
3. Or, in order to contribute to the project, you need to chase the dragon with the unstable channel.
4. Forcing all the system state through the funnel of a single config file is great, except that it doesn't cover home directories. I found that I ended up with a massive unmanaged blob of state in my home directory which I couldn't capture (I never tried out home-manager, maybe I should have).
This is not to detract from NixOS! NixOS is great, and I remain a massive fan :-). But on my personal systems I find myself using macOS and Debian these days. ¯\_(ツ)_/¯
EDIT: Line spacing
I want to write a blog post about my way of setting up NixOS. There are many ways to go about it and I feel like mine prioritizes simplicity and doesn’t use complex Nix techniques, so it may be very helpful for beginners.
I suppose an upgrade would still result in two copies of everything, at least temporarily, but at least the target system doesn't need source code, compilers, etc.
https://nixos.org/manual/nix/unstable/command-ref/nix-copy-c...
Is there a version of this future where I don't have to learn a new language just to effectively use a computer?
Solus has that on lock for me and initially I didn't see it as particularly special, I too thought distros didn't matter much anymore. I thought I could switch away from it to any number of capable distros, but it never worked out and I returned to Solus every time.
NixOS looks neat, but holy hell I absolutely do not have the time to deal with the learning curve OR the implicit abandonment of all the tools I use to do my job.
However, a fun trick I learned recently is to tether your phone to your computer while installing any Linux distro. My phone's tether connection over USB just looks like ethernet (as far as I can tell), so there is less fiddling around. My Android phone can tether to my wifi as well, so no need to use your cellular data.