> As you can see, it uses our ./configuration.nix as a module. What are modules again? Per NixOS wiki:
> > Modules are files combined by NixOS to produce the full system configuration. A module contains a Nix expression. It declares options for other modules to define (give a value). It processes them and defines options declared in other modules.
I think the quoted documentation is not well written. Modules may be simple, but this description is certainly not. It reads like someone wrote a longer, more complicated but detailed sentence, and then in an effort to improve it, clipped it down in a very “lossy” way into shorter, punchier statements.
Nix has volumes of half useful documentation like this.
Suggestion for the author: the “why use it” discussion deserves it own heading. As I write this, that content is situated in the “What is Home Manager” section.
I want to setup my configs using Nix and Home Manager but I just find it so confusing and not very user friendly. Every guide I’ve seen is either a really basic case of setting up a single package and config or an extremely complicated setup using Flakes that I can’t wrap my head around.
This guide I feel like falls more into the former, it gives you a really basic example but isn’t enough to go off for me.
Drake's book looks great. I appreciate his efforts to create a mental model and learning approach to NixOS.
I found a set of tutorials on YouTube by Will, to be incredibly helpful at the beginning of my NixOS journey. Even though these tutorials are a couple of years old, they should have aged well.
Drake's book, should help confirm some assumptions I've made about how NixOS works. Given NixOS's declarative nature, I find it easy to copy configurations to do what I want - a handy approach when pressed for time, but it does leave some gaps in understanding that need to be filled.
I think it is wise to use Nix for a bit before trying to manage all your user configs with it. Using `nix-shell` for project dependencies is a good starting point. You can't really make any costly mistakes here since the scope of any given project is likely much less than all your system and user configurations.
Nix shell plus something like direnv using flakes or nix expressions (non-flake approach) would give you a chance to learn the language and ecosystem. Once you feel comfortable with this, home-manager should be much more approachable.
> If you happen to have a necessity for such a thing, you're better off using Home Manager, else you would end up implementing parts of Home Manager by yourself.
So if I need to do X then I should use Y, but why do I need to do X?
I use NixOS daily as well, I installed home-manager as part of my initial configuration and have basically just ended up using configuration.nix in a git repo for everything anyways since I'm the only user. It feels like a good idea in theory, but I don't think it's actually that useful for most
> As you can see, it uses our ./configuration.nix as a module. What are modules again? Per NixOS wiki:
> > Modules are files combined by NixOS to produce the full system configuration. A module contains a Nix expression. It declares options for other modules to define (give a value). It processes them and defines options declared in other modules.
> Simple as.
If only.
Also, the article is very much a How not a Why.
Could you please elaborate?
Nix has volumes of half useful documentation like this.
This guide I feel like falls more into the former, it gives you a really basic example but isn’t enough to go off for me.
I found a set of tutorials on YouTube by Will, to be incredibly helpful at the beginning of my NixOS journey. Even though these tutorials are a couple of years old, they should have aged well.
Drake's book, should help confirm some assumptions I've made about how NixOS works. Given NixOS's declarative nature, I find it easy to copy configurations to do what I want - a handy approach when pressed for time, but it does leave some gaps in understanding that need to be filled.
You can find the tutorials I mentioned at the following link: https://www.youtube.com/playlist?list=PL-saUBvIJzOkjAw_vOac7...
The tutorials are easy to understand and have good explanations
Nix shell plus something like direnv using flakes or nix expressions (non-flake approach) would give you a chance to learn the language and ecosystem. Once you feel comfortable with this, home-manager should be much more approachable.
So if I need to do X then I should use Y, but why do I need to do X?
Maybe I'm missing it and it's really obvious.
If you have time, may I ask you to please provide more opinion on what's easier to understand?
We are always looking for more input.