Heya, been hearing about NixOS for a long time now, mostly from the peeps over at the Linux Unplugged podcast. So was thinking about jumping onto the nix-train, however it seems like it has a learning curve. Does anyone have any good learning resources, blog-posts, guides, whatever beans that you used to get started with NixOS?
Appreciate any tips ❄️
Im on my own NixOS journey right now, so i cant fully vouch for all this yet. Here are my bookmarks for Nix/NixOS learning resources:
- Zero to Nix: Nix and flakes quick start guide.
- Nix Pills: Introduction to Nix package manager and nixpkgs collection.
- A tour of Nix: Introduction to the Nix language.
- NixOS & Flakes book: Book about NixOS and flakes.
- NixOS in production book: Book about using NixOS in production environment (incomplete).
- Nix dev: Documentation
- Nix-notes github repo: Some notes about a bunch of topics.
- Nix from first principles (Flake edition) blog
Apart from all this, ive learned the most from a mix of looking at other people’s configurations and reading source code. The documentation is super messy, especially if you want to make use of flakes (which i personally recommend from the get go).
+1 for these! I’d also add https://nixos.asia/en
NixOS docs themselves are a tad lax, but it will get better.
Learning nix itself is also important:
Just this morning I was having issues with a wacky dual-boot install with NixOS and Windows sharing an EFI partition, and quite interestingly ChatGPT and I were able to troubleshoot the process and get it resolved in under half and hour. I was really impressed by the specific configurations it was giving me for my /etc/nixos/configuration.nix , so that is also another resource you may consider leaning on when you run into walls in other documentation sources.
Thanks for the tip, and nice to hear about your experience too 👍
This is also a pretty good one: https://nixos-and-flakes.thiscute.world/ just ignore the domain name, the guy is explaining stuff very well.
I learned a ton from this, it’s kind of “The Book” I guess. For OP, there’s a pretty massive series of blog posts I fumbled along with too, https://ianthehenry.com/posts/how-to-learn-nix/introduction/ though it’s a couple years old.
Thank you both ✨
The best way I know of is to get yourself a VM and get into the weeds; try to configure a system to your liking.
Follow the NixOS manual. The Wiki is unofficial; often opinionated, out of date or just plain wrong. Take it with a grain of salt. The canonical source of documentation is the NixOS manual and it’s not nearly as bad as you may have heard.
Make extensive use of https://search.nixos.org/options or
man configuration.nix
. Finding and making proper use of options and the module system is the bread and butter of using NixOS.Eventhough everyone and their mom will recommend them to you for nebulous reasons, ignore flakes for now. You will know when you’ll benefit from using them; namely when you need to use something outside of NixOS/Nixpkgs. You’re going to have enough to figure out with plain old NixOS on its own though; I don’t have external dependencies in my config to this day.
To wrap it up, make sure to ask the community if something’s not working as expected: https://github.com/NixOS/nixpkgs#community
Much appreciated dude 🙌
If you want to use NixOS, then you are going to have to read and dive in. Documentation on their site is a pretty good place to start.
https://nix.dev/ and https://zero-to-nix.com/ are the best resources imo.
I’ve actually been getting into NixOS recently; interested in replacing an old server I’ve had for like 10 years with something I can just build from a bunch of config files.
Can confirm it is confusing and I have no idea how anything works. :D
In my searches, I’ve come across https://nixos.org/guides/nix-pills/ , which I’ve gone through a few chapters of - seems good so far.
Since you’re listening to LUP anyways, the Nix Nerds room on their Matrix is a great resource as well.
The #nix:nixos.org room on matrix is a great place to ask questions if you get stuck.
If you’re interested in using flakes, this repo was helpful when learning how to get my first system configurations set up in an organized way https://github.com/Misterio77/nix-starter-configs
After you’re done with the initial setup, I’ve found looking for nix code on GitHub to be very useful for seeing how to do things.