# macOS (nix-darwin) — `lyrathorpe-mac`

Flake host: `lyrathorpe-mac` (`aarch64-darwin`). Apple Silicon Mac managed by
**nix-darwin** from this same flake. Built via `mkDarwinHost` (single-user —
macOS owns the account; identity still comes from the registry). Files:
`configuration.nix`.

## What this host is

A macOS workstation. The interactive user environment (shell, git, editor,
Claude) is the **shared `../../home` bundle** — the same modules the Linux hosts
use — so the terminal experience matches. The Linux-only `desktop.nix`/`sway.nix`
are intentionally left out. This host config covers the macOS-specific layer:
system packages, Homebrew, and macOS UI defaults.

## Package sourcing

- **nixpkgs** (`environment.systemPackages`) for CLI tooling and libraries.
- **Homebrew**, owned declaratively by `nix-homebrew` (Rosetta enabled for
  x86_64 formulae). The `brews`/`casks` lists are **authoritative**:
  `onActivation.cleanup = "zap"` uninstalls anything not declared. GUI apps are
  casks (nixpkgs darwin GUI support is unreliable); a few version-pinned
  toolchains and the PWA host stay on brew for continuity.
- **Mac App Store** apps are **not** declarative: nix-darwin 26.05 runs
  activation as root, and `mas` cannot reach the App Store session from root.
  Install them by hand with `mas install <id>` from a GUI Terminal (the `mas`
  CLI is in `environment.systemPackages`).

## macOS integration

- `security.pam.services.sudo_local` — **Touch ID for sudo** (and
  `darwin-rebuild`'s sudo prompt), kept in `sudo_local` so it survives OS
  updates. `reattach` pulls in `pam_reattach` so Touch ID works inside tmux
  (which the terminals auto-start).
- `system.defaults` — declarative dock / finder / global / trackpad preferences,
  applied on activation and reversible. This is the main reason to run nix-darwin
  beyond package management.
- The JetBrainsMono Nerd Font is installed to `/Library/Fonts`; set it in
  iTerm2 (Settings → Profiles → Text → Font) so the tmux statusline glyphs
  render.

## stateVersion

`system.stateVersion = 5` (the nix-darwin state version, an integer — not a
NixOS release string). Read `darwin-rebuild changelog` before changing it.

## Apply

```sh
darwin-rebuild switch --flake .#lyrathorpe-mac
```
