On 1 February 2026, I made the first commit to my NixOS config repo (db9cb44 for those playing at home). Little did I know that that commit would eventually lead me here.
Initially, the Nix language (nixlang for short) can be quite confusing. What's a flake? What does the
Once I figured it out and everything clicked into place, Nixlang started feeling quite ergonomic.
After figuring the language out, I delved into the meat and potatoes: declaring stuff. NixOS is billed as the most declarative and configurable system, after all.
Initially, I only used Nix for the OS config, and my dotfiles were managed separately with dotkeeper.
That is until
I switched to it because it provides a convenient way to configure your programs in the same language, i.e. Nix. It also integrates with catppuccin.nix, which automatically applies Catppuccin palettes to your apps saving me a lot of time. After spending some time rewriting configs to fit everything into home-manager's system, I finally felt, well, at home.
Instead of the typical approach of installing your development tools and compilers system-wide and hoping nothing breaks, Nix gives you the devShell. You add one to the outputs of
Combine this with direnv and nix-direnv to automatically activate the devshell when you
It's quite convenient for me, especially when contributing to other projects, to be able to quickly have all of the libraries and tools I need at my disposal without having to clutter up my system when I'm done.
On most other systems, you'll probably end up with a bunch of random tools you installed five years ago that you needed one time and never touched again. Go ahead, check for yourself. While things like
It's a lot easier on NixOS. I'll sift through my config, find packages I don't need anymore, delete them, and they're gone. Any unneeded components and dependencies are wiped out with them, and if another program still needs one of its dependencies it'll be kept around without fuss.
Nix also solves the "I just need this tool once" issue. You can drop into a
While I've painted Nix(OS) in quite the positive light so far; it's not without issue. Documentation is... sparse. If it weren't for Vimjoyer I'd probably have quit by now.
Evaluation times are also quite slow, especially on lower-end hardware. While I do use Lix, which has a slightly faster evaluator than regular Nix, it can still take up to eight minutes on my hardware to come to the conclusion that
nixpkgs is the biggest repository of software ever. Over 140,000 packages according to search.nixos.org as of writing. It's also open to contribution!
If you ever encounter a package being out-of-date or broken in nixpkgs, I'd highly encourage you to open a PR to fix it. That's how I started in nixpkgs at least.
Obviously don't go spamming useless PR's (the repo is busy as is), but help out if you can. It'll benefit you and it'll benefit everybody else. If you've had a PR of yours merged and want to know if it's landed in your channel yet, I'd recommend checking out this website. Just type in the PR number, select the branches you want to check, and press Check.
I've really enjoyed my year's experience on NixOS, and I fully intend to keep using it for years to come.
If you want my config, you can check it out here. It's under the Unlicense, so you can do whatever you want with it.
subscribe: atom rss