You see, there’s actually not much to learn about Nix the language, it’s a pretty simple and boring domain-specific language. You can fairly well characterize it as a JSON with functions (and comments, of course). The only novelty could be that it’s a purely functional and lazy language, if you’re not familiar with them.
What’s more complicated, and probably daunting at first, is the entire ecosystem that people have been building on top of it.
There’s Nixpkgs, which is a huge collection of packages, where each package is a Nix “program” that automates the compilation of some software. For example, there’s a package for Firefox, which is a Nix program that takes as inputs a bunch of tools and libraries and sources needed to compile Firefox and gives you the Firefox binary ready to be run.
Nixpkgs also contains lib, which is essentially the standard library of Nix. It includes utilities functions, types and the module system, the core of NixOS.
NixOS is basically a package that builds not just some software but an entire GNU/Linux distribution, in the way you define it to be by combining together modules, with each module configuring some portion of the system or some service or piece of hardware and exposing some knobs so you can tweak it the way you like.
So, what you’ll probably find useful in maintaining and organising your configuration is to understand (at a high level, mind you) is how the NixOS module system works. Say, the difference between options and config, which types options can be, what a submodule is, etc. And also what a package is, and how you can “override”, that is to say, customise it.