Sure, I use it on my laptop more or less just like that. Generally speaking, when you are using a web browser, word processor, music player, etc you won’t really notice much difference between Linux distros.
The differences are in the initial setup and ongoing maintenance/management. That being said, if you aren’t already familiar with Nix, be aware there is a substantial learning curve with Nixos. Much more than most other Linux distros.
If you are the type who likes to explore and learn new things and/or you have a background in programming, Nixos is great. The stability and reproducibility of Nixos is awesome. I find being able to change a couple of lines in a config file and then watch your desktop be reconfigured quite rewarding. If anything does break, you can always just reboot into a prior generation.
On the other hand, if you are a casual user looking for a quick way to get started with Linux, Nixos is probably the wrong choice.
One of the features I really like in NixOS is nix run. A few days ago, while I shared my screen in a video meeting, I wanted to give the participants remote control so they would draw something for me to express an idea. Everyone watching was super impressed with how I ran a nix search paint and took something “of the shelf” with:
nix run nixpkgs.kolourpaint -c kolourpaint
It just worked and it took seconds! I was satisfied as well by the experience.
Thank you guys! This is really encouraging and indeed, as dalto said, it’s the reproducibility that is so attractive in NixOS. I like to learn new tools. But while skimming the official subreddit and this forum, I came across many posts like “I’m using desktop environment X and the wifi doesn’t work” and similar low-level issues that require multi-day time investments. Roadblocks like those would be a deal-breaker for me. So right now, I’m really sure if it’s worth for me.
Yes, my experience is that the cost of using NixOS is upfront: you need hardware that’s well supported by Linux and you have to set up configuration and do an old style manual installation.
Then, after it is done, everything works forever, and there’s very few things you could do to break the system.
But I won’t lie to you. I have set it up in my laptop to force myself to learn it. On my son’s computer I installed Ubuntu. It breaks, but I don’t stray away from the beaten path on it, so no danger there. Also, the hardware is much older and not well supported, so if it doesn’t work in Ubuntu, it probably wouldn’t work in NixOS anyway, and I won’t waste time trying to figure it out.
As long as there is good support for your hardware including kernel support for hardware and eventual accompanying odd firmware, I can’t see what would separate NixOS from OtherOS.
I always use laptops from IBM / Lenovo’s ThinkPad series that offers Linux as an option.
That way you’re pretty safe. For desktop, you have more freedom, easier to swap out components, but Lenovo also offers certified Linux desktops.
Answering to the orignal question, for me, yes, it has been a excellent choice. But it is important to know that the beginning is not straight-forward. There is really a learning curve at the start, which I was willing to pay.
NixOS is the OS for general productivity in my opinion. I used to use Arch for years, but it’s extremely bothersome to set up a new machine or fix one if something breaks.
With NixOS, if it works, it works, and I can easily rollback if I accidentally break something. As already mentioned, nix run and nix shell help a lot with using software in an ad hoc manner.
The main benefit for me is this, instead of starting from scratch with every install, reconfiguring my shell and other tools, and dealing with constant breakage as packages update, I can just continually interate on my configuration and continue to refine it over time.
Thanks to my DevOS project, I build my entire OS in hercules-ci, so if something breaks, I’ll know about it immediately, and updates always happen in a hyper controlled and easily roll-backable fashion ala flakes. I can also easily pull unstable packages and modules from master when I need them, while still using the latest stable release as a baseline.
I haven’t yet, but I’m also going to write some nixos tests in the near future to test tools like tmux, which seems to constantly break the yank plugin on every update, for example.
I could literally go on all day, but I think you get the idea.