2021-11-29 09:56:24 +00:00
= Host-specific configuration
:toc:
2022-07-09 06:04:17 +00:00
These are NixOS configurations that are specific to a machine (e.g., desktop, servers, VMs, containers, installation media).
2021-11-29 09:56:24 +00:00
Ideally, it should be made minimal as much as possible considering you also have to manage your users.
2021-12-21 06:29:27 +00:00
== Integrating with custom modules
The host configurations placed here most likely use the link:../modules/nixos[custom NixOS modules].
2022-07-09 06:04:17 +00:00
The custom modules shouldn't be imported manually from the host as this is already taken care of from the link:../flake.nix[flake definition].
2021-12-21 06:29:27 +00:00
It is best practice to assume the host configurations make use of the link:../modules/nixos[custom NixOS modules], link:../pkgs[custom packages], and the flake inputs.
In other words, always pay attention to link:../flake.nix[`../flake.nix`].
== User management
2021-11-29 09:56:24 +00:00
For managing users, there are multiple ways to manage them with this config:
* The usual `users.users.${user}` from system configuration (see `man configuration.nix.5`).
2021-12-21 06:29:27 +00:00
* If you intend to import users from the link:../users/nixos/[`../users/nixos/`], you can simply import them through `imports` in the system module.
+
2022-07-09 06:04:17 +00:00
For a convenient option, there is the function `getUsers` defined from the link:../lib/private.nix[private custom library].
2021-12-21 06:29:27 +00:00
You can use it as follows:
+
[source, nix]
----
imports = [ # Your modules ]
# Import the following NixOS users.
++ (lib.attrValues (lib.getUsers "nixos" [ "foo-dogsquared" "polski" ]));
----