Discussion
Why I love NixOS
bikelang: I don’t any experience with Nix - but how does it handle software which runs its own updating processes outside the package manager? Specifically thinking about software like Discord, Slack, Docker Desktop, Jetbrains Toolbox, etc.Is the Nix-ism to just reject using such software?
MuffinFlavored: really good question.right now I have bought into the Nix koolaid a bit.I have NixOS Linux machines and then nix-darwin on my Mac.I use Nix to install Brew and then Brew to manage casks for things like Chrome what I'm sure updates itself. So the "flake.lock" probably isn't super accurate for the apps you described.
uncletaco: No there’s a nerd who will obsessively submit the latest version of any popular software that does that to nixpkgs. Or suggest you use the flatpak.
whytevuhuni: That's not much different than other distros, because the way auto-update usually works, is it can't use root permissions or the system package manager, so it has to install the newer version in $HOME. Once the update is installed, the system package becomes a trampoline to that.I tried Discord, and this one seems to download some updates on first run, but the version sticks to the one from the system (0.0.127, latest is 0.0.129). So I assume it just doesn't update, or it tries to and fails.
fareesh: doesn't it use up a lot of disk space compared to other distros because of the way everything is set up?
Valodim: Yes. But disk space isn't exactly the most valuable resource you have as a developer/power user
quchen: The idea is so good it’s as close to platonic as it gets. The user experience of writing your own nix expressions is so bad that it makes me angry every time I try. Not only that, but at some point the beginner help (!) meta became »use flakes, don’t do what the existing tutorials tell you, yes flakes are unstable beta and there are no tutorials but use it I beg you«. No, please, let me choose my own way to learn!I haven’t given it a shot in the LLM age yet though, and trying out NixOS in a VM is not only easy, it is practical – in the sense that when you’re happy, you can simply boot that same config/OS anywhere else by just installing that config. And I’ll never forget that one time where I completely borked my everything in the VM, did a kernel rollback with like 3 command line args and a reboot, and the OS was, well, rolled back. As I said, almost platonic.What I can recommend is using nix-the-package-manager. Whenever I need the newest version of something, `nix-env -i <whatever>` and it’s there and works. If it doesn’t, roll back. If I need a different version, that’s on nixpkgs as well, with the same negligible amount of friction.
soumyaskartha: Most people who try Nix either quit in the first week or never go back to anything else. There is no in between.
Daunk: What would the in between be?
Diti: Using a regular mutable system and Nix on top using Home Manager for example.
Imustaskforhelp: Gobolinux comes to mind.If you don't mind a very limited set of software, the way tinycorelinux is setup can also allow multiple different tcz installedThese two Linux distros essentially allow two different versions of same software/libraries (glibc/python whatever) installed(Gobolinux explicitly states that whereas I find it to be an unintended but elegant consequence for tinycorelinux but I recommend taking a look at Gobolinux)
MarsIronPI: [delayed]
epolanski: What I like most about nixos is that you can have deterministically cached packages you don't need to rebuild every time in your ci.It's also simple to setup dev environments with nix.
bikelang: Nix in CI seems like a really excellent match. I don’t care much about the ATproto space - but Tangled has built their CI system on Nix and I find that really compelling. CI Caching is just awful with GitHub actions - so it made me disappointed that Forgejo went that route.
dangirsh: My love for NixOS really became clear when I realized I never have to write Nix again by hand.A WIP NixOS config for working with agents:https://github.com/dangirsh/tsurf
redrove: Same. I have a full homelab and multiple macs, can’t say I’ve written a line of real Nix code by hand.If you’re itching to try Nix, now is the time.
hombre_fatal: Same.Can't imagine going back to the status quo where my system is the accumulation of terminal commands over time instead of a config file.
BoredPositron: The problem I have with nix is that I just don't need another hobby. Keeping everything up to date in an ever changing environment like an os just looks like chore. I install my system and image it every week and keep maybe the initial and a monthly snapshot. Why would nix be better in my case? Maybe I am missing something essential but I also don't bork my system that often tbh.
qiine: nixos updates tend to be a lot less eventful than others distro, in fact the way it largely prevent system borking when updating, is spiritually freeing.
linsomniac: >I haven’t given it a shot in the LLM ageI haven't tried it in almost a year, but using Claude Code for setting up my nix config back then worked amazingly well. I've only dabbled in NixOS, and I'm very tempted to it for my workstation when I reinstall it in the next month.Given how much Claude Code + Opus have improved in the last year, I'd give it a fighting chance to make a nice Nix config. I'll probably start setting up a spare laptop to get the base configs dialed in before switching over to it.
bspammer: [delayed]
jwiz: Use it for a month or two and decide it's not for you.That is in between "use it for very short period of time" and "use it forever"
edent: I'd love NixOS more if they had any decent documentation.Everything seems scattered around a dozen forums, a hundred old blog posts, and a thousand issues of "this work on my machine (3 releases ago)".
snailmailman: It doesn't help that there are two NixOS wikis. nixos.wiki and wiki.nixos.org.wiki.nixos.org claims that nixos.wiki is outdated and unofficial. But both appear to receive updates, and which one wins the SEO game is a coinflip whenever i google a nixos question.
hombre_fatal: For a personal desktop environment, I just install them normally when there's no up to date nixified option.For some things I've vibe-coded a nix module on github that uses a scheduled github action to check for underlying app updates and then it generates a new hash and tags a release.I've done that for claude code and cursor, which is also an opportunity to let me manage their config files from my nix config.
Macha: So Discord, and quite a lot of software like this has actually two layers of updates. There's updates of the web page (which is basically writing a bunch of JS to the home directory) which NixOS does nothing to prevent, and then there's updates of the host program (i.e. Electron) which NixOS disables.Jetbrains Toolbox is in a sort of different category with tools like Rustup, since it's a package manager of its own. If you manage your IDEs with Toolbox, then your IDE versions are "outside Nix" and not managed by Nix. It's just packaged into its own pretend FHS environment and then doesn't know anything about it being on Nix. That said, updates of Toolbox itself will need to happen through your package manager.As a last comment, why run Docker Desktop on Linux at all? Like I understand on Windows and Mac - docker is inherently tied to Linux so the Windows/Mac apps abstract away the fact that it's running a VM and doing a bunch of port mapping and filesystem mounting under the hood so you can pretend it's not running on a VM, but on Linux I've always just installed docker straight onto the host.
k_roy: There’s more to Docker Desktop than just “oh it’s just docker underneath”1. Unified experience across Windows, Mac, Linux2. The security posture is much stronger by default. Many people, who would probably be considered the “target audience” for Docker Desktop, don’t bother to make docker-ce rootless, or don’t use podman, so running it in a VM is better, though admittedly often annoying.3. Not everybody is a CLI warrior. Docker Desktop gives a decent GUI, ways to monitor and control containers visually, and even deploy kubernetes with a single click.
exe34: ChatGPT is very good at pulling it together to give you working code. Not on the first try, but on the third try it usually works.
moonlion_eth: my entire system is configured using a flake i built with coding agent and skills to tell it how to configure things in nixos heh
hombre_fatal: A lot of us use NixOS/nix yet haven't read any documentation nor hand-written nix ourself. That's Claude Code's job.
snailmailman: I run NixOS and the number of times ive been able to install something 'normally' (not via nixpkgs/flake) is approximately zero. You cant go to a website and download a binary and just run it. Almost every program references a shared library and wont be able to find it.Nixpkgs is very complete in my experience, and in the instances where its not, someone usually has made a flake. The only times ive had to custom-make a flake were extremely new programs, or extremely old ones. Often the newer programs had PRs waiting on nixpkgs anyway, and were only a few days away from building properly in nixos-unstable.
dandanua: [delayed]
schindlabua: After having done the switch to nixOS, I can confidently say that managing a system any other way (like with apt/brew + 20 handwritten bash scripts) really is neanderthal technology and nix is superior in every single way.It's also great for the AI era, copilot is really good with that stuff.
johnisgood: I would have never become a power user of Linux were I used LLM to do the installation of Gentoo once upon a time. :( So do you guys not know much about the distro you are using, or how does this work? I honestly thought your comment was sarcasm, but apparently it is not.
drdaeman: If only.Claude Code has to be actively steered, because while it knows some nixpkgs it surely doesn’t know it enough. E.g. it was absolutely incapable of fixing lldap settings after system upgrade from 25.05 to 25.11. It just prodded around blindly, producing meaningless configs instead learning how the module works.NixOS docs work for me, but I tend to just go for the nixpkgs source instead. Manuals document options but not how those are actually plumbed through, nor what remains behind the scenes like all systemd unit settings). Claude can do this too, but it goes quite weird roundabout ways with a lot of weird `find /nix/store` and `nix eval`s to get to it, slow and token-hungry (and not always accurate).This said, Claude is very helpful at checking logs and providing a picture of what’s going on - saves ton of time this way. Plus it can speed up iterating on changes after it’s fed enough knowledge (but don’t expect it to do things right, that’s still on you). It has breadth of it, but not the depth, and that shows at almost any non-trivial task.
hombre_fatal: You don't have Claude Code git clone nixpkgs and home-manager for local reference?I feel you on the nix store + nix eval death loop, though it gleans real info. If I weren't on the Claude Max plan I'd probably feel more of the pain. And context is now 1MM tokens which means you're not running out just as it's starting to piece things together, heh.
DHolzer: I switched over to Nix about a year ago. I was a Windows user before that for 30 years and tried Linux a couple of times, but it never stuck. Now I know I will never touch Windows again. With NixOS I've finally found a system that actually works for me — and the full OS configuration is in a repo. My god, I love it so much. Sometimes I even prefer nix-shells over uv for quick one-off Python scripts. I cannot sufficiently convey how absolutely barbaric everything else feels in comparison. Not having Nix would be like having to work on code without Git — absolutely unacceptable. And it really isn't that much work — you do it once. The next time you set up a new system, without Nix, you'll have to do the full configuration all over again.
DanielVZ: Using it for a year or so and then try another OS is my guess
Norfair: This is exactly why I made https://nix-ci.com/ And it supports Forgejo, GitHub, and GitLab.
hombre_fatal: NixOS is high-level declarative, so you're reading high-level config diffs when the AI agent is pitching changes.Unless you're brand new to Linux or computing, it's not a mystery what a given nix config change is ever doing.You can probably guess what this does: networking.firewall.allowedTCPPorts = [ 8080, 9000 ]; The moment you really need to know exactly what that does, you can look it up.The things to know about the OS are high level things. The rest of its idiosyncrasies you learn just in time through daily exposure.
shevy-java: NixOS kind of extends the idea of reproducible builds. Any snapshot could be a guarantee that things just work. This can also be extended onto the user base - if one user has solved a problem, it should be solved for all of them. So we can jump from guarantee to guarantee here.My only gripe with NixOS is Nix. I think that this is also the biggest drawback of NixOS. I don't have an alternative; but perhaps it may be better to allow any format to be used, rather than force nix onto everyone.
drdaeman: I do, but it somehow tends to forget how to do things right now and then - despite having notes in memories system - and starts to do them in its own weird ways.I’m going to experiment with skills next, or maybe make it build a few helper scripts for itself to quickly get some module source from nixpkgs matching flake.lock without having to think of it all. I’m positive about Claude for nix management, merely saying it’s not something that “just works” for now and reading nix code is still on the human part of the tandem.This said, to be fair - when it gets the approach right, it excels. I was setting up Ente for photos backup and sharing, and it produced a nice overlay with custom patches for my needs from just “figure out why /shared-albums/ redirects wrong and fix”. Found the module, the package, pulled source, analyzed it, proposed a patch (settings weren’t enough), did it - I only had to test, and only because I haven’t provided it with a browser. Felt amazing.