I’ve been here a week ago already asking if Arch would be fine for a laptop used for university, as stability is a notable factor in that and I’m already using EndeavourOS at home, but now I’m curious about something else too - what about Arch vs NixOS?
I heard that NixOS is pretty solid, as due to the one file for your entire system format you can both copy and restore your system easily whenever, apart from your normal files and application configurations of course.
Are there any major downsides to NixOS compared to Arch apart from the Arch Wiki being a bit less relevant? I’d also lose access to the AUR, but admittedly I don’t think I’ve ever actually needed it for anything, it’s just nice to have. Also, since NixOS has both rolling release and static release and you can mix and match if you wanna get packages from unstable or not, I’m not losing Arch’s bleeding edge, which is nice.
Removed by mod
Huh, I never expected anyone to recommend Arch to me because you have to tinker too much with an alternative distro. I thought simplicity was the reason why people liked NixOS, no?
Removed by mod
I have set up my archlinux os in a weekend with btrfs snapshots and everything I need. About once a quarter I tinker with it for 30 minutes to either fix a broken update or do some custom solutions to minute problems. It has been running like this for 5years. And snapshots allow me to rollback any fuckups in 1 minute.
I tried to setup nixos twice, because I love the concept. Both times I tinkered with it for 1 to 2 weeks, had to take paid leave. At the end, some stuff still didn’t work as I wanted it to. Any customization that is not already natively implemented in nix is a huge pain in the ass to add. Things that would be a 5min config edit on arch took hours on nix to make them rEpRoDuCaBLe. I have experienced no additional benefit over btrfs snapshots.
Tldr: If I could pay somebody 100$ to set up nixos just the way I want it, I’d use it. But since I have to do it in my own free time, I won’t.
Nix is a pain. Not everything works. Example Netword supposed to be able to put options in some confines. Sure most work but I have two in my config that nix well not put in. Why they are valid an I’m running them on my current Os but my nix van refuses to build with them. Another nftsble rules. Again supposed to put them in config file. But I have some nix does not like, completely valid rules but nix won’t build with them. I’ll tinker with it but it still needs work.
I’m not sure I agree with this… I’m using nix on several different generation thinkpads, two older generation MacBooks (one air and one pro), two different older generation imacs, as well as my home built PC, and an OEM built pc… All with little to no tinkering whatsoever.
All my tinkering was first setting nix up and figuring out how to use it… Then I saved and copied my config and use the same one on all the machines (albeit with subtle changes on first install).
I’ve used arch a handful of times over the years, and it is without question, significantly more “needy” over time, imo.
Removed by mod
I have not… And in fairness to me, OP didn’t mention the need for any of those things. OP mentions having not even installed anything with the AUR in Arch, which to me just means they are looking for something stable out of the box, which nix has been for me across many platforms.
Removed by mod
This is my experience as well. I went back to Arch after trying NixOS for a few weeks. I just ended up spending way too much time tinkering with the system instead of using it. Also, I feel like a major advantage to nixos is only viable if you have multiple machines. I only have a main desktop.
deleted by creator
Guix
+1, since for me it’s much easier to grok the language and the schema at a single glance.
Plus for those worrying about linux-libre kernel not having the right drivers for your hardware, non-guix has you covered and you can easily switch to linux-mainline. I’m really enjoying Guix a lot right now.
Removed by mod
deleted by creator
Its pretty easy to update the packages yourself, just bump the version and the hash, or if needed add some missing libraries.
Because the review process is slow, sometimes it’s easier to just check the Guix Patches buglist for existing submitted patchfiles and then add them to your tree
I’m a bit surprised to see that you disagreed with the “NixOS is hard to configure” bit, but then also listed some of the reasons why it can be hard to configure as cons.
By “configure”, they probably didn’t mean just setting up say, user accounts, which is definitely easy to set up in Nix.
The problems start to arise when you want to use something that isn’t in Nixpkgs, or even something that is out of date in Nixpkgs, or using a package from Nixpkgs that then has plugins but said plugin(s) that you want aren’t in Nixpkgs.
From my experience with NixOS, I had two software packages break on me that are in Nixpkgs - one of them being critical for work, and I had no clue where to even begin trying to fix the Nixpkg derivation because of how disorganized Nix’s docs can be.
Speaking of docs inconsistencies you still have the problem of most users saying you should go with Flakes these days, but it’s still technically an experimental feature and so the docs still assume you’re not using Flakes…
I was also working on a very simple Rust script, and couldn’t get it to properly build due to some problem with the OpenSSL library that one of the dependent crates of my project used.
That was my experience with NixOS after a couple of months. The concept of Nix[OS] is fantastic, but it comes with a heavy cost depending on what you’re wanting to do. The community is also great, but even I saw someone who heavily contributes to Nixpkgs mention that a big issue is only a handful of people know how Nixpkgs is properly organized, and that they run behind on PRs / code reviews of Nixpkgs because of it.
I’d still like to try NixOS on say, a server where I could expect it to work better because everything is declarative such as docker containers - but it’s going to be a while before I try it on my PC again.
deleted by creator
deleted by creator
Nix would need some proper GUI for that. It’s very “shove into cold water”, which isn’t exactly the best experience.
deleted by creator
The downside of NixOS is bad documentation. Which makes it take quite a while to get your config setup the way you want. Its so worth it though. I used arch for 5+ years and have been on NixOS for about 6 weeks now. I’m definitely never going back. My conifg is done, I barely have to change anything now. Its all saved in a git repo so I never have to make it again. I’ve already switched all of my machines over. And even a few of my friends. Which has been super easy to do cause I just give them my config then remove everything they don’t need. I’ve only been using it for a little while but it feels so reliable and Unbreakable even though I’m running unstable packages. Because if anything breaks you just go back to the last generation that worked. Which made me willing to just try anything when I was setting it up.
Also you could run Nix package manager on arch for this, but the nix package repo is amazing. It has everything i’ve needed or even thought about installing. And in my opinion its way better than using AUR packages. Most of the time you just DL them and don’t have to build them. Its just so much faster and more reliable then using Paru or Yay. Plus there is a NUR( nix user repo) but tbh I’ve never even looked at it.
The other con I know of is issues running binaries and app images. But there are was work arounds for them. I use a few app-images by just running 'appimage-run '. And so far its worked perfectly. As for a binaries you can use steam-run or I think using distrobox would work. But I haven’t had to do anything like that yet.
I found this YouTube channel quite useful when I was setting mine up. Vimjoyer
I found it fairly difficult to set up nixos on one of my machines, because it simply didn’t ship with a certain, relatively common kernel module/user space app. I also couldn’t find a usable workaround (only compiling my own kernel on every update, which is not exactly my kind of fun).
So, you might want to try that out first.
Out of curiosity, which one?
https://nixos.wiki/wiki/Linux_kernel
You can specify custom parts of the config that enables that module and/or extra module packages.
If you specify a custom part of the config then ye sure you’ll be compiling the kernel on each kernel update but you don’t need to manually configure it
I used to like the idea of nixos because it felt “tidy” to configure everything centrally. However that tidyness is achieved by adding an extra layer which just replicates the configuration options of every program. If there is a bug in that layer or something is just not implemented, either you have to learn the whole inernals of nixos and nixpkgs, for which there is no real documentation, or you have to resort to doing things imperatively again, which is hard because of the opacity of the generated system and also defeats the whole purpose. So basically, you are completely dependent on nixos developers for things you could have easily done yourself on arch.
I have to disagree with this, with home-manager you can pretty much put just put your normal config files inside your NixOS config and map them into wherever they’re meant to go, except now they’re managed by nix
The built in config options are really nice but you don’t have to use them in the slightest as long as the package itsself is in nixpkgs
deleted by creator
Arch breaks all the time. It has to because upstream is usually always changing so breakage is inevitable.
Though a person’s mileage on this may vary (less update frequency, less no of programs etc.), the constant thing about rolling release is that breakages within software releases are to be expected.
deleted by creator
No. Not a recent opinion. I’ve used Arch for more than 3 years now.
Ofc, Arch users should learn how to resolve a package conflict, or how to downgrade packages, or generally how to debug the system. Sometimes you also have to migrate config files.
On the other hand, as an arch user, I can tell that it mostly just works. If you customize heavily an ubuntu, it will break more likely. And while you can fix an arch, you probably have to reinstall an ubuntu.
Moreover, Arch has a testing repository which is not the default.
My experience with Arch is that it has been very solid and stable. It is just “makes sense” for the most part and so issues are very resolvable.
If you use the AUR, you can get times when packages need to be excluded ( held back ) in order for the overall system to update. I do not see that as an Arch problem and it is easy to handle.
One thing that is an Arch problem is that, if you do not update often enough, you can end-up with outdated keys that prevent you from installing before packages. The solution is just to update the keyring before updating everything else but this is confusing for a new user and kind of dumb in my opinion. I feel like the system should do this for me.
Ironically, I find Arch is most stable if you update very frequently ( which makes the updates smaller and more incremental ). I do a quick update almost every day without any fear of breaking my system. Any “problems” I have had with Arch updates are trying to update a system that has not been updated forever. Even then, it is just a bit more work.
Another thing that can happen if you leave it too long is that packages will have been replaced by newer ones. Keeping up to date means there are only going to be a small number of those. An update after a year can run into a surprising number of them.
I dug out an old laptop that had Arch on it from 3 years before. Updating it was annoying but in the end it was totally up to date and stable.
Arch is not stable but it’s easy to fix issues arising from its rolling release nature. One of the ways being utilizing the AUR package
downgrade
for easy package version rollbacks. I should also note that the most common reason for Arch breaking is rarely ever because of the distro itself but because upstream has introduced breaking changes. You can see this when an upstream feature breaks in Arch, then Fedora picks up the same bug a few weeks/month later.Arch is however the most solid distro I’ve ever used since I began using Linux many many moons ago.
One thing that is an Arch problem is that, if you do not update often enough, you can end-up with outdated keys that prevent you from installing before packages. The solution is just to update the keyring before updating everything else but this is confusing for a new user and kind of dumb in my opinion. I feel like the system should do this for me.
Arch already does this. Could be that your install has the keyring refresh service disabled but I’ve had it enabled for a good while now and I’ve never encountered that outdated pacman keyring issue.
deleted by creator
Let me put it like this: it’s about learning curve. Arch is relatively easy to begin with, but NixOS gets much easier the more nix you learn.
What do I mean about that? Imagine having to patch something, which can be the thing. On arch you’d have to replace a package, which could lead to issues and conflicts, whereas NixOS gives you the option to keep two or even more versions of the same library, because it does not rely on your traditional UNIX path.
But with this super power comes a catch. You have to learn a programming language and learn how the nix store operates, which is a pretty high learning curve. Also, NixOS suffers from a governance issue and going by the documentation is like shooting in the dark.
That being said, the best manual for NixOS is GitHub, searching for anything and filtering by the nix language. You’ll see a ton of varying systems, be they workstations or servers.
And no matter what all the warnings say, no, flakes aren’t EXPERIMENTAL or UNSTABLE, but rather CONTENTIOUS internally. Again: I love NixOS, but they gotta fix their governance issues.
I’ve been using Arch for almost 8 years, and I enjoy basically everything about it. Since Nix has been so popular lately, I thought I’d take a look at it too. I like what it does, but the documentation is really poor, and the learning curve is insanely steep. When flakes and nix-command become stable, I’ll be giving it another shot
I too am something of an Arch user
Btw
As a recent NixOS convert coming from Bazzite (Kinoite/Silverblue with user friendly daily driver and gaming tweaks), and before that mostly Arch-based distros, I’d say it boils down to the tradeoff between having way more control over reproducibility and having to deep dive into the often poorly documented domain specific rabbit hole that is Nix. If you’re comfortable with going out of your way to learn, looking for examples, reading source code to find out what options you can use or how stuff works, it can absolutely be worth it but it’s a steep price to pay for sure.
I personally adore what Nix sets out to solve and find it extremely rewarding to learn. Plus, as a developer, I enjoy puzzling out how to get stuff done and don’t mind diving into the source if I need to, so it works for me. I’d absolutely prefer solid documentation, of course, but it’s not a deal breaker.
When it comes to software, the Nix repo has a staggering amount of prebuilt binaries ready to download (which you can search here) and it’s often not too hard to hack together your own reproducible package if you want after you get comfortable enough with it. At least for my use cases, I haven’t really missed much from my days using Arch and the AUR. If anything, I appreciate how much more consistent it tends to be in comparison.
If you, like myself, go for a flake (yet another rabbit hole within a rabbit hole) based setup and point to the unstable repo, you basically get a fully reproducible, easy to update and rollback rolling release not too dissimilar to using Arch with auto btrfs snapshots enabled. That’s how I used to do Arch and it feels pretty familiar.
Anyway, that’s what I got. If you have any more specific concerns or questions I’d be happy to elaborate!
Edit: I forgot to add but I find a nice way to get comfortable without fully commiting is using Nix as a package manager on any old distro. You could install it on Endeavour (I recommend this method) and play around with Home Manager, use it as a dotfiles manager on steroids, have it declaratively install and manage the CLI apps you can’t live without and whatnot, see how you like it. That’s how I started, I have a common HM config I’ve so far used with Debian at work, Ubuntu running under WSL when I’m on Windows and now NixOS itself.
I use NixOS for University and would highly recommend it if you want a highly configurable system that’s declarative, however, NixOS doesn’t have great documentation for certain features and usually does things differently, so you’ll have to learn the Nix way of doing things. On the plus side, I’ve never been unable to fix my OS when it broke, you simply rollback, or if there isn’t a suitable rollback, you can plug in a live usb and set the system to use a specific commit (can’t remember the exact command for this and that’s presuming you store your config with git). Also according to these statistics nixpkgs has more packages than the AUR.
I think you just mean “declarative”. Highly configurable is literally any distro. I’d say NixOS is actually LESS configurable by design, but that is sort of the point: a repeatable image based on a template no matter what.
By highly configurable, I meant that you can configure it exactly to your needs, in the same way that you can with Arch.
If you want to make your OS to a hobby, choose NixOS.
If you want a system that just works, use Kinoite or Debian.
If you want cutting edge software but fear Arch/Endeavour is prone to breakage, consider doing file system snapshots e.g. with snapper which you can boot into.
If you want cutting edge software but fear Arch/Endeavour is prone to breakage, consider doing file system snapshots e.g. with snapper which you can boot into.
openSUSE Tumbleweed fits that bill perfectly.
You can setup your Arch with grub menu btrfs snapshots just like NixOS for convenient rollbacks. NixOS has too steep a learning curve, coming from someone who recently tried it and ended up being somewhat disappointed by it. NixOS sounds good on paper but in reality it is a long way from a mature product for desktop or general use.
As you mentioned Arch has AUR which packages just about anything and everything you could ever want in the future. And the Arch Wiki will never be “not relevant” so long as you are using Linux anywhere, the Arch Wiki is a handy reference.
NixOS sounds good on paper but in reality it is a long way from a mature product for desktop or general use.
It’s 20 years old already, will it ever be ready at this point?
Removed by mod
I’ve already considered Debian, but… I dunno, this isn’t what I’d call the most logical reason, but I just kinda don’t like it as my desktop OS. I’d use Debian over basically anything else for a server, but as a desktop OS I don’t like the vibe.
Keep in mind, I started using Linux this summer and in a few years I’ll probably look back at this wondering why I was such an idiot, but I gotta fall and get a bloody nose first to notice ;3
Removed by mod
deleted by creator
Removed by mod
NixOS’s documentation is dog. It’s not absolute dog, but it’s dog. The learning curve is brutal.
But… the (mostly) declarative management is its strongest feature. It’s very solid and you can easily unfuck you system if you haven’t done stuff like mess with partitions or delete files manually.
If NixOS had better documentation and GUI to manage the system, it would be a no-brainer, but unfortunately, it is about 5-10 years away from that. The community is very top heavy, but it’s easy to just do your own stuff.
My honest opinion? Neither. Just go with something that works out of the box like Linux mint until you’re done with school then you’ll have time to mess with your system. That’s what I did for a friend of mine when he went to college. Gave him a laptop with mint on it and never heard a single complaint from him. It has everything he needs. Focus on school now and worry about distros later.
School is a time to learn and both Arch and NixOS provide plenty of opportunities for that.
While true, but they also need a system that they don’t need to mess with so they can focus on their school. Unless they’re going into w degree that utilizes Linux then I guess it makes more sense.
I have to agree, if you’re late or have assignments that don’t work correctly because of your special Arch/Nix install, you’re going to be in for a very rough time. College is when you need to focus on learning exactly what is prescribed by the professors and instructors. Anything else you learn is secondary, and your free time is best spent on extracurriculars and trying to make friends because thats the stuff that’s really hard to do after college. Y’know what’s not hard to do after college? Scavenge a junk computer for next to nothing and install NixOS and Arch on it
I guess I’m not crazy after all for looking out for OP. I am getting downvoted for it. 😁
Not crazy at all. Came here to say the same thing. My vote would be to pick a distro that’ll let you focus on the schoolwork. Debian, Fedora, Ubuntu, or even just Linux Mint.
My instance has downvotes disabled so as far as I can see you have a positive score :)
That’s pretty nice. I don’t really care about downvotes, especially on Lemmy. They don’t mean anything anyway.
I don’t know about everyone else, but I had a lot more spare time to tinker with linux when I was a student than after, having a full time job. But I guess if you only have the one computer and need it to work, then tinker in a VM or something. Don’t wait with tinkering and learning about linux if it is interresting to you and something you want to spend time on. You might not have the time for it in a few years.
I think you are understating the value of the Arch Wiki and AUR.
I am also a university student. I was required by one of my courses to program an Arduino using ArduinoIDE. My program, however, was not detecting my Arduino. By simply scrolling the Arch wiki, I found the issue, downloaded the fix via AUR and was able to get it working hassle-free. An equivalent of this process does not exist on NixOS.
I do not know what programs your uni requires, but if you do plan on using them on Linux, Debian or Arch, or their many derivatives should be the go-to simply for documentation and quick-fixes alone.