Hacker News new | ask | show | jobs
by digdugdirk 198 days ago
Does anyone have a good resource for a quickstart/high-level overview of just the terminology required to understand Nix? Flakes/overlays/nixpkgs/etc. I start wading in to try and understand it, and instead run into arguments and disagreements.

Unfortunately, without a base level understanding of the entire ecosystem, I stay lost.

9 comments

yeah, the "entry-level" documentation is definitely one of the weak points of the Nix ecosystem. I'd compare it to trying to learn how to do oil changes on your car and only finding "car guy" web forums full of posts about transmission rebuilds and 3D printing your own carburetors.

my recommendation (as I said elsewhere in this thread, I'm a 10+ year NixOS user) would be to install NixOS on a VM or spare laptop and tinker with configuring it. you can follow the breadcrumbs, for example enabling sshd [0] has a "declared in" link to [1] where you can read the Nix source code of what that NixOS option actually does on your system.

flakes, modules, and overlays are all relatively "advanced" parts of the ecosystem, you don't need to know them as a new user. in particular, you will find many blog posts telling you to use flakes right from the beginning. that's an option, but not at all required.

0: https://search.nixos.org/options?channel=25.11&show=services...

1: https://github.com/NixOS/nixpkgs/blob/nixos-25.11/nixos/modu...

I started playing with nix few months ago. Youtube videos from Vimjoyer helped a lot. On top of that Claude Code is very good at understanding/explaining/updating config.

Regarding features: so far for my home setup (few vms on proxmox) I only needed flakes. They age good at organizing multihost config.

But besides it it works smoothly. And I constantly have thought “wait, why we didn’t always do it this way?”

This article and video might be good for you, but they are more about a conceptual overview of what the fundamental parts of Nix are and how they interact.

https://shopify.engineering/shipit-presents-how-shopify-uses...

https://www.youtube.com/watch?v=6iVXaqUfHi4

Flakes are a dependency-pinning and hermetic evaluation feature baked into the Nix tool itself.

Overlays are an idiom that uses lazy evaluation to build up larger attribute sets in a modular and composable way (e.g., package collections for a particular programming language).

https://nixos-and-flakes.thiscute.world/ is a great guide to Nix with Flakes.

This was the Nix config that helped it 'click' for me: https://github.com/eh8/chenglab that mentions this guide.

I based my own config off of it https://github.com/richardgill/nix

For certain people i think "entry level" for nix means trying to re-read tutorials every couple of years and it never ever feeling comfortable or memorable... but somehow it still itches in the back of your mind that this is how things are suppose to be done. But why is it so... different?
You don't need flakes or some fundamental understanding for a quick start. I simply add programs that I use to configuration.nix. This covers 95% of my use cases. For everything else I use containers. This may be not the nix way, but works super reliably and without much trouble.
Level 1 is using nix to install packages, which you can do by writing a flake like.

The arguments probably come from the fact that flakes are 'experimental', but de facto widely used.

No, but I can empathize. I never understood the Nix language. It's impenetrable to me. I hate it so much.

I keep checking back every year or so secretly hoping they'll have upgraded the language. It's fascinating how successful Nix is given how utterly opaque the language is.

Apparently not