= Configs
:toc:


This is the folder containing various configurations for various environments, typically the ones configured using the Nix module system such as NixOS, home-manager, and nixvim.
Each of these configurations are assumed to use custom modules defined at link:../modules/[../modules/] (where it has similar folder structure).

Furthermore, these configurations do have a certain "codename" in the commits for easier inspection of the history.
Here is the following list of them used in the repo history:

* `diskoConfigs` for Disko configurations.
* `hosts` for NixOS systems (e.g., `hosts/ni`).
* `users` for home-manager configurations (e.g., `users/foo-dogsquared`).
* `nixvimConfigs` for NixVim configurations (e.g., `nixvimConfigs/fiesta`).
* `wrapperPackages` for wrapper-manager packages (e.g., `wrappers/archive-setup`).
* `flake` for flake-parts (seeing it only has one of them, it is constantly referred to as `flake`).

These "codenames" are also used for their environment-specific module structuring (e.g., `hosts.ni.services.backup.enable` for NixOS, `nixvimConfigs.fiesta.setups.tree-sitter` for NixVim, `users.foo-dogsquared.setups.desktop.enable` for home-manager) with the exception of flake-parts where it is basically a free-for-all.

Lastly, these modules are referred collectively in the commits as `modules`.


[#conventions]
== Conventions

There's a few things you need to remember for these configurations.

- Module arguments that are only suitable to be included in the first build step of the configuration are all under the `firstSetupArgs` namespace.
- Module arguments that are only found inside of the configuration itself should be under the `configurationArgs` namespace.
