Knowing nothing about how to configure it, I installed it with the graphical installer, booted into a tty, installed claude-code, checked the config files into git, and proceeded to vibe-code a basic sway (now niri) environment to see what it would feel like.
A month later, my NixOS environment is so much better than my heavily optimized macOS environment that I sheepishly use it inside a VM on macOS (UTM) or VNC to my desktop machine so I can use it from my bed.
LLMs really open the doors of desktop Linux since you can git clone all of your deps locally (your window manager, keepassxc, waybar, your apps, nixpkgs, home-manager, even the linux kernel, etc., etc.) and the LLM can dig into source code and web search to do things for you or debug issues. And NixOS adds a level of observability into what's going on since any changes show up in git-diffed config files.
If anyone is like me and used macOS because you used to use Linux but couldn't be bothered anymore when you'd run into a rough edge, you might find it fun to use NixOS + claude-code (or equivalent) running in ~/nix-config.
This is the way. I'm running NixOS on my NAS and my Desktop and I use Nix and home manager on my MBP. Thinking about trying Jovian on my Steam deck. I can have a single flake that describes my home environment and device specific configs for each separate deployment. Claude Code to setup and integrate everything has been a lot of fun and has been productive. I have run NixOS quite a bit on my own prior to this, so it's been helpful to know where and when to push back on CC.
I finished my desktop setup last night. The only thing I did was enable SSH on a clean NixOS install and setup sudo settings for CC. After that I used my NAS CC instance to SSH to the desktop and bootstrap an "idiomatic NixOS install of Claude Code". From there, every change on my NixOS desktop has been via LLM.
I keep lazygit open at my nix config root and periodically press "e" to open modified files with neovim to scope them out.
But other than that I barely open the nix config files since, unless I happen to remember a string to grep for in vim to get me where I would want to be, it's faster to type a prompt to claude and then go back to whatever I'd prefer to be doing.
It's also sobering to have claude build a whole TUI or GTK4 GUI, things I used to look forward to doing myself from scratch up until this year. I have some polished TUIs/GUIs for random things like managing sway/niri monitors or managing blocky logs, and it almost feels pointless to share them online like I used to because you can just vibe-code them yourself. And any of the iterative polish I've had to do now is just going to be next year's vibe-coded one-shot.
But I try not to think about that last paragraph too much...
The last paragraph for me is critical. I've got pretty severe ADHD. I know the things I want to do and the steps to make them, but the executive function to do them just doesn't seem to exist anymore for personal projects. CC has made that sort of work possible for me again. One of my immediate needs was to be able to share screenshots with CC securely. I one-shotted a paste service similar to imgur, but far more simple in design just for this use case. I can share documents and images/text/documents with CC just by pasting into a browser and CC can share files with me by uploading to the underlying services /uploads directory and sending me the link. The whole service took us 5-10 minutes to build and deploy in a split horizon DNS configuration that pretty much just worked as expected on the first try.
Now don't get me wrong. It's a stupid simple app and would have been quick to build personally as well. It just takes a post with clipboard contents and guesses the file type based on data provided. Saves the content into the service /uploads directory with a randomized 6 character name and provides a link. When accessing a link, the service finds all pastes older than pasteTimeoutSetting and deletes them before trying to serve the content. But all I had to do was describe the use case and make a couple small suggestions before the entire thing Just Worked.
Yeah the NixOS recommendation here is clearly a joke and I wouldn't recommend it to almost anyone, but I too switched about a month ago, and it's basically made for LLMs. Let them read the Git repo and they'll actually have a chance at figuring out the issues you have.
It's not a joke. Despite of all the shortcomings it's the only way to have reproducible environments and stay sane. LLMs do help with learning curve, yes.