Hi, everybody!
I’ve been toying with the idea of switching to NixOS for some time. I’m currently on arch (6 months), and while I like the idea of a minimal, only-what-I-want-installed, hackable system with the newest packages, I think having a system that always works, even if an update goes south, is more important to me.
Now, I’m still not sure if I should switch. There are some issues I’m worried about, maybe unnecessarily.
For one, what are the trade-offs of switching from Arch? Anything I have to watch out for? I’ve heard there are some issues with regard to the FSH and gaming, or just FSH in general, or just gaming in general. Secondly, the dotfiles. I hear there is the Home Manager for that, but it doesn’t have support for everything, so some files would need to be managed in other ways. Is there a way to manage everything at the same time? Even better if everything is in configuration.nix. I thought of using env.etc.xxx.source and .text to link the dotlifes to the etc folder and change the contents, but it feels… cheap and unsafe to do that. Third, are flakes really that important? I hear about them everywhere, I haven’t researched them yet, but I’m curious what the fuss is about.
Let me know if there is anything else I should consider. I mainly game, watch videos and sometimes play with the system if needed. I’m not sure if I really want to switch, or is it just “oooo, new shiny and cool” thing lol
Thanks :)
If you want to switch slowly, I would install nix and home manager on your Arch system, and slowly migrate your dotfiles, configuration, and packages into home manager. That will give you a comfortable transition opportunity to learn nix. Then, the last 10% of system configuration you can figure out when you install NixOS, and you can just pull in your home manager config for all your userspace dotfiles and programs. Thats how I moved from Ubuntu to NixOS.
And yes, you can have home manager just symlink existing config files to the appropriate location. You don’t have to rewrite everything in nix.
Flakes are only important if you want to develop for a nix system. If you are only using it or if you (like me) only writes server code which gets deployed via docker (or your language packaging solution) there is no need to think about flakes.
I’ve heard there are some issues with regard to the FSH
Most binaries, not patched for NixOS, don’t work out of the box, but usually what you need is in Nixpkgs. If it isn’t, then you have to wait for someone to package it or package yourself and that unfortunately requires some effort
I use GNU stow for my dotfiles because I like it better than the way home manager does it (but I still use home manager for other things). Big piece of advice I’d give is to just remember, as you learn Nix stuff and get all excited about “reproducibility” and “declaring” things, that you don’t have to do everything the Nix way. You could very easily have a single configuration.nix file that mostly just specifies packages and then do nearly everything else the old-fashioned way. It’s your system and your comfort. (But for the record, I used arch-based systems for a long time as well, and though it took me about a week to figure out what I was doing in a NixOS VM, the satisfaction when I finally deployed to bare metal and everything just worked exactly as I intended it to was quite nice). And as others have said here, nixpkgs is massive and likely has all of what you need.
Secondly, the dotfiles. I hear there is the Home Manager for that, but it doesn’t have support for everything, so some files would need to be managed in other ways.
Here you can check if something is supported by home manager: https://home-manager-options.extranix.com/
If something isn’t supported, you can just manage it’s dotfiles like you did on Arch. But probably home manager will cover everything you need