Looking for a modern, usable Linux OS preferably immutable
I have been trying some of the immutable linux OSes because from what I understand they are more modern and feature better security and reliability. What I have found so far is shocking. Half of these don't support my laptop (probably because it's nvidia optimus). Some I tried like guix were very difficult to install, configure, and use with sprase documentation. Good luck trying to use KDE, wayland, or pipewire for example. BlendOS was notably better and could at least run on my laptop but chocked with nvidia driver issues.
I have switched to pop os on my laptop for now but looking at alternatives and what to install on my desktop.
Compared to guix NixOS is significantly ahead. "difficult" is to each their own. For me, NixOS is the easiest to do certain things. But those things are what i use a computer for and might not match what you do.
Definitely start with a vm. If you run into troubles let me know. I have a YouTube channel where i post nix content regularly.
That said the docs are not as good as Arch. The best way is to read the nixpkgs source. Which is a very high barrier to entry. Otoh, only one repo is required to completely see everything.
It has terrible documentation, no doubt about it. However, depending on your setup requirements, the installation procedure can be quite acceptable. It should finally have a graphical installer.
If you're not doing anything complicated like programming, hosting your own services, or planning on using rare software that you yourself have to package, it can be a very low maintenance OS.
My single biggest tip: before installing something, check if it has an "option"
For example, if you want to use KDE as your desktop environment, you need the services.xserver.desktopManager.plasma5.enable option. Use the option search. It's often easier than listing the individual packages manually and writing their configuration manually.
The reason for this is that nixos doesn't have "meta" packages. Those are packages that just contain other packages. Most package only has the absolute minimum it needs to be built - not run. The KDE desktop environment requires many packages to run.
Additionally, package configuration normally happens outside of the package in a declarative manner. You don't write /etc/network.d/111_startup.sh. That's either in an option environment.etc"network.d/111_startup.sh" or (making this up) networking.startupScripts which puts a value in to environment.etc"network.d/{script.name}.
Do no be afraid to ask for help. The nix community is aware of the documentation disaster it has on its hands.
My set-up actually is fairly complicated. I actually have a degree in CS and am looking for tech related jobs. I have decided to go a different direction for now but I intend to learn the nix package manager at some point. Partly because it comes included with my new OS (Bazzite/ublue), and partly because I hear it's useful and pays well in industry.