Host: home-macbook (cutover)
Host cutover (matrix column) — part of #36 · order 4 of 7 · verdict: 🟡 mostly portable · nix-darwin
First darwin host — establishes the system.defaults / mac-app-util / GUI-config-drop pattern. Imports modules/my/nix-darwin.nix (system environment.systemPackages + per-user users.users.<n>.packages). Darwin per-user is ready now: nix-darwin supports users.users.<n>.packages and per-user wrappers shadow system ones in PATH on darwin too, so this host takes per-user wrappers directly (knownUsers/uid requirements still apply).
Modules to land
Host-specific / blockers
- Everything is disabled by default; home-macbook opts in per tool and sets per-user/system values.
- GUI
.app config (ghostty-bin, zed) read from fixed ~/Library/... / ~/.config/zed paths on Dock launch — a CLI wrapper doesn't cover that; seed via a darwin activation symlink. (See Epic "stays partial".)
- Keep
mac-app-util as a darwin module (already in modules/flake/darwin.nix); drop its HM variant.
- 1Password GUI is an external
/Applications app; agent socket path is fixed → manual/keep.
- GUI app config that isn't a file →
system.defaults.CustomUserPreferences / defaults write.
Cutover
Verify
Done when
home-macbook builds HM-free; GUI + CLI config verified.
Host: home-macbook (cutover)
Host cutover (matrix column) — part of #36 · order 4 of 7 · verdict: 🟡 mostly portable · nix-darwin
First darwin host — establishes the
system.defaults/ mac-app-util / GUI-config-drop pattern. Importsmodules/my/nix-darwin.nix(systemenvironment.systemPackages+ per-userusers.users.<n>.packages). Darwin per-user is ready now: nix-darwin supportsusers.users.<n>.packagesand per-user wrappers shadow system ones in PATH on darwin too, so this host takes per-user wrappers directly (knownUsers/uid requirements still apply).Modules to land
my.{git,jujutsu,gh}and setsettingsmy.{fish,nushell,direnv,starship}specialArgs.neovimConfiguration = inputs.nvf-darwin.lib.neovimConfigurationinmodules/flake/darwin/default.nix(shared by both macs); enablemy.nvfmy.{ghostty,zed}my.{claude-code,gemini-cli,amp-cli}my.<tool>sHost-specific / blockers
.appconfig (ghostty-bin, zed) read from fixed~/Library/.../~/.config/zedpaths on Dock launch — a CLI wrapper doesn't cover that; seed via a darwin activation symlink. (See Epic "stays partial".)mac-app-utilas a darwin module (already inmodules/flake/darwin.nix); drop its HM variant./Applicationsapp; agent socket path is fixed → manual/keep.system.defaults.CustomUserPreferences/defaults write.Cutover
mkHostinmodules/flake/darwin.nixsoJasons-MacBook-Prono longer includeshome-manager-darwin.darwinModules.home-manager; removehosts/home-macbook/home-manager/**.Verify
nix build .#darwinConfigurations."Jasons-MacBook-Pro".systemDone when
home-macbook builds HM-free; GUI + CLI config verified.