= User-specific configuration
:toc:

This is where user-specific configurations comes in.
Similar to modules, the top-level of this directory contains users for various config types (e.g., home-manager, NixOS).

As such, files put in here are only a part of the total sum of configuration (whether it is a home-manager configuration or a NixOS system).
It shouldn't fully configure their respective system and should be put as a host configuration otherwise.

Users shouldn't also have their own set of modules similar to this project's own modules.
They should be imported as a profile or hardcoded in the user config.

Take note of the following structure:

[source, tree]
----
users/
├── home-manager/
│   ├── foo-dogsquared/
│   ├── harepoint/
│   └── polski/
├── nixos/
│   ├── foo-dogsquared/
│   ├── harepoint/
│   └── vmguest/
└── README.adoc
----

This folder is to be expected to be imported through `lib.filesToAttr` from the link:../lib/default.nix[`../lib/default.nix`].

There are conventions for setting in each user type.

* For NixOS user configuration, it is expect to only have one user with their respective user-specific configuration.
This includes user-specific packages, home-manager-specific configuration footnote:[Though, it is encouraged to put it as a separate home-manager user configuration if it's big enough.], and so forth.
If you want to set users from the host, see link:../hosts/README.adoc[Host-specific configurations] for more details.

* home-manager users are just home-manager configurations (i.e., `$XDG_CONFIG_HOME/nix/home.nix`).
That's pretty much it.
