- Creating [[id:de801b92-819e-4944-9f5b-5cea145a2798][Reproducible executables with Nix]] enabling to execute with one script only requiring the package manager.
- How the build process works along with [[id:8f23f862-a19a-4a13-8d8f-69c280a8e072][Nix derivations]].
- The new way to manage channels with [[id:6873de22-9eac-492c-93a8-6cdf8cbfc0f8][Nix flakes]].
- [[Nix flakes]] is an upcoming feature for Nix, replacing the traditional Nix channels into a decentralized set of derivations that can be retrieved from anywhere similar to Go modules [fn:: At a glance, anyways. I'm not experienced enough with Go to say that with utmost confidence.].
For another example, you can see some examples from [[https://github.com/neovim/neovim/blob/f695457f815544d0dc16469569c70556e3165bb6/contrib/flake.nix][Neovim]] and [[https://gitlab.com/veloren/veloren/-/tree/685f4971ac0deb31b301e9d2bc0201d2531fd895/nix][Veloren]] (which also uses Nix flakes).
You can set overlays automatically either by setting =nixpkgs.overlays= from your system configuration or =~/.config/nixpkgs/overlays/= folder for user-specific settings.
You could also set overlays for standalone Nix code similarly through the =overlays= key — e.g., ~import <nixpkgs> ? { overlays = (self: super: { } ); };~.
Nix throws a bunch of traditional concepts behind as well as pioneers a bunch of things creating a steeper learning curve.
The [[https://nixos.org/learn][official documentation]] for Nix is pretty great at covering ground of all Nix stuff which makes it good as a reference but horrible for a newbie who wants to gain a quick overview of what Nix is all about.
So I'll list a bunch of resources that helped me becoming comfortable with the Nix thing.
- If you want an introduction to Nix, the [[https://www.youtube.com/playlist?list=PLRGI9KQ3_HP_OFRG6R-p4iFgMSK1t5BHs][Nixology]] video series is a great primer starting with [[https://youtu.be/6iVXaqUfHi4][this video]].
You don't have to watch through the whole playlist but it also gives practical starter points such as [[https://youtu.be/q8bZy9kuzEY][demystifying Nixpkgs]] and [[https://youtu.be/qYGo9QYNVpM][the standard library]] which you'll need you know once you've started packaging with Nix.
I really recommend this series, it's pretty great!
- If you're decided to go with NixOS, the first few chapters of the [[https://nixos.org/learn.html][official manuals]] are great and extensive.
A good first reading section after installation is [[https://nixos.org/manual/nixos/stable/index.html#ch-running][how to administer your NixOS installation]] and [[https://nixos.org/manual/nix/stable/#chap-package-management][its package management process]].
+ I have difficulty grokking the manual but thankfully a fellow newcomer [[https://stephank.nl/p/2020-06-01-a-nix-primer-by-a-newcomer.html][wrote a document listing the terminologies]] helping me absorb the material (big thanks to Stéphan Kochen for the writing).
- Take a look at [[https://nixos.wiki/wiki/Configuration_Collection][others' NixOS config]] and see how they did it.
For other examples, you can take a look at [[https://github.com/foo-dogsquared/nixos-config][my config]] and the [[https://github.com/hlissner/dotfiles/][inspiration behind my config]] (except his' is on the edge of the bleeding edge).
+ The [[https://nixos.org/guides/nix-pills][beloved Nix pills series]] and the [[https://nixos.org/manual/nixpkgs/stable][nixpkgs manual]] is a great starting point especially if you're starting to contribute to the [[https://github.com/NixOS/nixpkgs/][official package set]].
+ [[https://nix.dev/][nix.dev]] and [[https://nixos.wiki/][the unofficial Nix wiki]] are also great introductions to more Nix stuff with practical applications.
+ Jon Ringer, one of the long-time Nix user and contributor, has a [[https://www.youtube.com/channel/UC-cY3DcYladGdFQWIKL90SQ][YouTube channel focused on Nix tutorials at beginners- and intermediate-level]].