Theme Selection

cells/theme.nix stores named theme data and assigns the selected object to config.my.theme.

Up: theme system Down: theme application

What this leaf does

The file defines a themes attribute set and selects one by my.profile.theme.

let
  themes = {
    catppuccin-mocha = {
      slug = "catppuccin-mocha";
      variant = "dark";
      accent = "mauve";
    };
  };
in {
  config.my.theme =
    themes.${config.my.profile.theme}
      or (throw "Unknown theme: ${config.my.profile.theme}");
}

Why it exists

The selected theme becomes a typed object available to every imported cell. Application leaves do not need to know all available themes. They only consume config.my.theme.

What to copy

Keep theme data complete enough that consumers do not invent missing values. If Waybar needs a variation name, put that in the theme object.