Profile Options

cells/options/profile.nix is where the default branch set and high-level profile switches are declared.

Up: options

Down: branches | addons branch

What this node does

The profile options define default branches for workstation-style systems.

my.profile.branches = [
  "base"
  "desktop"
  "security"
  "legacy"
  "addons"
];

They also define a selected theme, a security level, and add-on toggles for operational tooling.

Why it exists

The profile is the default diet of a host. A laptop can inherit the global branch list and add host-specific modules. A server can ignore the profile and select only server and matrix.

This keeps common workstation behavior in one place while still allowing hosts to diverge.

Branch schema

The profile module also defines my.branches as an attribute set of branch records.

my.branches.<name> = {
  description = "Human-readable branch purpose";
  nixosModules = [ /* NixOS modules */ ];
  hmModules = [ /* Home Manager modules */ ];
};

This is the central collector type. Every branch and leaf depends on it.

What to copy

Use profile options for coarse policy, not individual package lists. Fine details belong in leaves. Profile options should answer questions such as “desktop or server?”, “balanced or hardened?”, and “which theme?”.