1.6 KiB
Hosts
Nix flakes contain an output called nixosConfigurations
declaring an
attribute set of valid NixOS systems. To create hosts, you can use the
nixos.hosts
argument and pass modules
to each host. Host-specific modules
typically go in the hosts
folder of the template.
Each host should follow a certain channel to define the pkgs
of that host.
You can use the nixos.hostDefaults
to set defaults and global modules for all
hosts.
For each host, the configuration automatically sets the networking.hostName
attribute to the name of the host. This is for convenience, since nixos-rebuild
automatically searches for a configuration matching the current systems hostname
if one is not specified explicitly.
It is recommended that the host modules only contain configuration information specific to a particular piece of hardware. Anything reusable across machines is best saved for profile modules.
This is a good place to import sets of profiles, called suites, that you intend to use on your machine.
Additionally, you can pass modules from nixos-hardware in the
modules
argument for relevant hosts.
Example
hosts/librem.nix:
{ suites, hardware, ... }:
{
imports = suites.laptop ++ [ hardware.purism-librem-13v3 ];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
fileSystems."/" = { device = "/dev/disk/by-label/nixos"; };
}
flake.nix
{
nixos.hosts.librem = {
system = "aarch64-linux";
modules = ./hosts/librem.nix;
};
}