mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 10:58:02 +00:00
56 lines
2.0 KiB
Plaintext
56 lines
2.0 KiB
Plaintext
= Host-specific configuration
|
|
:toc:
|
|
|
|
These are NixOS configurations that are specific to a machine (e.g., desktop, servers, VMs, containers, installation media).
|
|
Ideally, it should be made minimal as much as possible considering you also have to manage your users.
|
|
|
|
|
|
|
|
|
|
== Integrating with custom modules
|
|
|
|
The host configurations placed here most likely use the link:../modules/nixos[custom NixOS modules].
|
|
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].
|
|
|
|
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
|
|
|
|
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`).
|
|
|
|
* If you intend to import users from the link:../users/nixos/[`../users/nixos/`], you can simply import them through `imports` in the system module.
|
|
+
|
|
--
|
|
For a convenient option, there is the function `getUsers` defined from the link:../lib/private.nix[private custom library].
|
|
You can use it as follows:
|
|
|
|
[source, nix]
|
|
----
|
|
imports = [ # Your modules ]
|
|
# Import the following NixOS users.
|
|
++ (lib.attrValues (lib.getUsers "nixos" [ "foo-dogsquared" "polski" ]));
|
|
----
|
|
--
|
|
|
|
* You could also easily map link:../users/home-manager[one of my home-manager configurations] into one of the users for a NixOS system with `lib.mapHomeManagerUser` which accepts two arguments: a name from of the home-manager user folder and the user config as if configuration with `users.users.<name>`.
|
|
+
|
|
--
|
|
Here's an example to easily get my main home-manager config to be one of the users of the system.
|
|
|
|
[source, nix]
|
|
----
|
|
lib.mapHomeManagerUser "foo-dogsquared" {
|
|
extraGroups = [ "audio" "docker" ];
|
|
password = "what";
|
|
createHome = true;
|
|
home = "/home/foo-dogsquared";
|
|
}
|
|
----
|
|
--
|