Server Host Composition
The server host shows the other side of the branch model: it does not inherit the workstation profile and instead selects explicit server branches.
Up: hosts
Down: server branch | matrix branch | server leaves
What this host does
The host selects only the branches needed for a headless role.
config.my.hosts.server = {
system = "x86_64-linux";
branches = [ "server" "matrix" ];
};Unlike the workstation host, this pattern does not merge my.profile.branches. That prevents desktop and Home Manager assumptions from leaking onto a server.
Host-specific bootstrap
Cloud hosts often need a short-lived bootstrap shape: mutable users, an SSH authorized key, or cloud-init. Those choices belong in hostCfg.nixosModules, not in the generic server branch.
config.my.hosts.server.nixosModules = [
({ lib, ... }: {
users.mutableUsers = true;
services.cloud-init.enable = true;
users.users.admin.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAA... public-key-placeholder"
];
})
];Do not publish real keys or deployment domains in public notes.
Service role settings
The same host can set service options for the Matrix branch.
config.my.matrix = {
enable = true;
domain = "matrix.example.com";
enableTelegramBridge = false;
};The Matrix leaf reads these options. The host decides the deployment role.