Core Options

cells/options/core.nix defines the basic values that many other leaves consume.

Up: options

Down: profile options

What this node does

The core option module defines user fields, stateVersion, an optional Noctalia toggle, and two legacy module accumulator lists.

The public teaching version should use placeholders for identity values.

options.my.user = {
  name = mkOption {
    type = types.str;
    default = "alice";
    description = "Unix username";
  };
 
  email = mkOption {
    type = types.str;
    default = "alice@example.com";
  };
};

Why it exists

Many leaves need the same identity information. Git uses the user name and email. Home Manager uses the Unix user and home directory. Secret paths and persistence rules need the same username.

Putting those values under my.user avoids repeating literals across leaves.

Compatibility accumulators

The module also keeps my.nixosModules and my.hmModules. These are legacy lists that the legacy branch can collect.

nixosModules = mkOption {
  type = types.listOf types.deferredModule;
  default = [ ];
};

The dendritic model prefers my.branches.<name>.nixosModules, but the compatibility path lets older module contributions keep working while the tree evolves.