New computer, new OS. Arch or NixOS for FW16?

Dear all,

Batch 18er here. As my FW16 will come later this year, it might be a good time to reconfigure everything. As I saw a lot of you are actually quite enjoying NixOS, I am considering it for my next machine.

Context:
I tried nearly all distros in the top100 of distrowatch, except NixOS. I entered the Arch world through Manjaro, then went for the ‘original Arch’. I am on Arch for at least 5 or 8 years now. The FW16 will be used mainly for work (ML engineering mostly, so heavy workloads during prototyping, and a bit of native mobile dev). Because I want to get best performances, I am also considering CachyOS.

So, I am here to collect your thoughts on the topics, do you prefer Arch or NixOS? And would it be possible to apply CachyOS’s performance tricks on NixOS? I have to admit I love AUR, so I am a bit afraid to loose it ahah

Salut,

I’ve heard NixOS has some gotchas, such as not being FHS-compliant. And that it really shines when setting up fleets of machines, not just one.

That said, I’d like to try it too on my FW16 (batch 8, my credit card just got charged).

Since it’s for work, maybe a dual boot with Arch would give you the best of both worlds?

Please keep us posted!

1 Like

If I wasn’t running Nix then I’m sure I would be running Arch. I like both, generally, but after spending some time with Nix I prefer it for most use cases these days, as I’m a fan of declarative models. There are threads for both Nix and Arch on these forums that will be worth looking through.

Pretty much everything about my nix setup is documented here if you’re interested.

Honestly, either will be good, and you can use nix tooling in arch if you like, to get a hybrid approach and start learning nix.

3 Likes

Thanks for your answers!
For dual boot, I always end up with ‘regrets’ as one of the two distros becomes the only one I use, while the other one just become unusable lost space haha

And @CodeMichael, do you see any real drawback that would prevent someone to go on Nix? And do you notice any day-to-day performance issues?

1 Like

Long winded opinion, TL;DR included at bottom:

To be frank, I don’t really understand what people mean these days when they ask about performance comparisons between two Linux distributions. Unless you have scientifically accurate timing needs around performance (does your lively-hood require knowing if a process completes in 100 milli or 300 milli), I haven’t seen any evidence that there are wild inconsistencies in how one distribution implements a common software stack. Most major differences between distros tend to end up being that one has a newer kernel, or mesa version, or similar. I’m assuming that if you use Arch or Nix your software stack is going to be the fundamentally similar: Systemd, Gnome/KDE, Mesa, Wayland, etc, and neither of those platforms makes decisions that fundamentally change how those stacks perform for the average user. Both environments allow you to choose different kernels with different scheduling priorities (zen, rt, etc) if that’s your cup of tea. If you are the type of user who is capable of noticing performance deltas between compiler flags then neither of those platforms is the one you’re looking for as you likely need even greater control over the build of your software stack and should be looking at Gentoo, LFS or similar.

Arch and Nix both excel at delivering only the software you intend to be on your system along with their dependencies while also giving you a very extensive software repository (assuming you use AUR). Their largest “downside” is that they aren’t the default target for many software projects build packaging. The drawback to Nix is that it requires you to change some ideas about how software should be managed (imperative vs declarative models) and not everyone is interested building that understanding for a personal device.

Personally I believe that declarative systems and reproducibility are the future of software systems at every level of the stack and Nix is a pretty good example of how to execute on those ideas, which is why I’m using it these days. It also folds in useful ideas around multiple generations of software living in the tree which allows for complex version mixing with dependency management, rollbacks, and graceful failure of software updates. I suspect there are more elegant way to implement these ideas than how Nix has done it, but I haven’t seen them yet.

Here is one area where Nix might have an edge on Arch, Nix should handle long hiatuses with grace. Arch usually will too, but occasionally Arch has a breaking change that requires you to be aware and take action as part of an update. Even if a Nix update fails, you are always left with a functioning system (I’m not saying its impossible to mess up a nix update, but Nix is designed to not throw away the previously working state by default and to rollback if there’s a problem).

TL;DR
You wont find any real drawbacks on any of the platforms discussed, except items that, in most cases, boil down to personal preference and learning curves. Use what feels good, experiment with new ideas if that’s fun or interesting to you.

6 Likes

Wow, I wasn’t expecting such a detailed answer, thanks a lot! Learning new stuff is always fun, so I think you convinced me to try Nix on my future FW16!

1 Like