Suites

Suites provide a mechanism for users to easily combine and name collecitons of profiles. For good examples, check out the suites defined in the community branch.

In the future, we will use suites as a mechanism for deploying various machine types which don't depend on hardware, such as vm's and containers.

They are defined with the suites argument in either home or nixos namespace. Suites should be passed as a function that take profiles as an argument.

The profiles are passed based on the folder names and list passed to the relevant profiles argument. In the template's flake.nix profiles is set as [ ./profiles ./users ] and that corresponds to the { profiles, users } argument pattern.

Definition

rec {
  workstation = [ profiles.develop profiles.graphical users.nixos ];
  mobileWS = workstation ++ [ profiles.laptop ];
}

Usage

hosts/my-laptop.nix:

{ suites, ... }:
{
  imports = suites.mobileWS;
}