It was a rainy weekend, and after brewing a mugfull of coffee I sat comfortably and opened my laptop that I powered off yesterday after running an sudo pacman -Syuu yesterday to keep my Arch up to date. I like keeping things nice and up-to-date you know. The first red flags came when my fingerprint recognition wasn’t working when I tried to log in – but that’s fine, I can fix that later, not a biggie. Then the bluetooth was not seeing any devices; after 20 minutes of twiggling, reinstalling, restarting services, it did ultimately find, but didn’t cast audio through that. That’s ok, we’ve been there before, right? Wait why does my dGPU not turn on? Ok, let’s try reinstalling the drivers and cleaning some of processes, restarting. Ok now my bluetooth doesn’t work again – odd. Wait dGPU also still doesn’t work, let me remove the drivers completely… oh wait you also want to remove HIP SDK? But I need that for work… I mean, sure, ok I’ll install it again.
Morning slowly drifted to late afternoon, while I realized I have not spent a minute of that time on what I originally intended to do – recreational coding (that’s what all the normal people do on weekends, right?). After ultimately fixing all my issues I sat silently staring at my laptop, realizing I’m now roughly where I left things yesterday evening, except I burnt through a good fraction of my weekend scrolling through the Arch wiki and oftentimes toxic forums, the recurring suggestion from which was “if you can’t handle it, maybe you shouldn’t have used Arch to begin with.”
Well… maybe I shouldn’t have. …
recreational coding
Well, good news, it actually is fun to dick around in the Nix configuration and see those changes manifest on your system.
Nice write up, I enjoyed reading this! 15-20 years ago I would have loved nix and dumping hours into configuring every little detail.
I’m at the point now where I just want a distro I can install in 10-20 mins, copy over a couple of dot files, install a few apps, and be up and running.
You have Arch in NixOS? I guess I don’t understand what NixOS really is, even if I’m interested in its ability to be reproduced from one computer to another.
As the other person said, the bit about Arch is just the preamble.
But you can use Nix Home-Manager on Arch (or other distros), if you’re so inclined, which will give you that reproducibility for the stuff in your home-directory.In some ways, this is like backing up and restoring your dotfiles, but it allows you to template those dotfiles and depending on the program, it offers simple ways to populate the dotfile templates. For example, KDE applications don’t generally offer very legible dotfiles and so configuring e.g. a panel via dotfiles is kind of a pain. To help with this, there’s Nix Plasma-Manager.
The post is about NixOS. The intro paragraph about Arch is just a preamble to provide the motivation for switching.
So… is it fair to say that it’s like Ansible then?
Ok, Ansible has the config files on a separate control node, but for a multi-device setup, would that be comparable?
The purpose is similar, i.e. configuring a system, but I’d say Ansible works best, if you need to make a few small changes from an existing distro, whereas NixOS rather takes the approach of controlling everything about the operating system.
And in many ways, controlling everything is actually simpler.
No, not really. The imperativity of ansible vs the declarativity of nix actually does make a big difference in practice.
honestly, where NixOS shines for me is in my homelab. i don’t always have time to fully document what i’m doing, but my NixOS config is code-as-documentation for when work burns all of my memories away and has a git log and conflict management so i can manage multiple systems that share common config.
and once you find out you can have services run on systemd with syntax like
services.jellyfin.enabled = trueyou’ll never want to go back to containers, although it has ways to manage those as well.it’s overall a great OS for tinkering and deploying small services across small networks. not sure how it scales, but for my use case it’s damn near perfect


