migrate inix to nix-darwin on x86_64-darwin #6

Open
bryan wants to merge 6 commits from inix-darwin-migration into main
Owner

Summary

Migrate inix (2017 iMac Pro) from NixOS to nix-darwin on x86_64-darwin. NixOS on this hardware proved painful (Broadcom WiFi firmware, AMD Vega, T2) — going back to macOS with Nix on top, modeled after mbp.nix but scoped to a garage-machine workload.

Changes

  • New darwinConfigurations.inix on x86_64-darwin (only Intel Mac in the flake)
  • x86_64-darwin added to flake systems
  • nixosConfigurations.inix and hardware-configs/inix.nix removed
  • modules/hosts/inix.nix rewritten as a darwin module: imports fonts, nix-settings, zsh, homebrew, editors, git, cli-tools, activation, syncthing. Brews: pinentry-mac, syncthing. Casks: slack, vlc, zen. (obsidian and vivaldi come from the base homebrew module; zen is host-level on mbp/studio so it's also host-level here.)
  • modules/services/syncthing.nix refactored to use ${config.homebrew.prefix}/bin/syncthing instead of hardcoded /opt/homebrew/bin so it works on both Apple Silicon (/opt/homebrew/bin) and Intel (/usr/local/bin)
  • README.md Prerequisites split — Apple Silicon Macs use Determinate; Intel Mac (inix) uses the upstream installer (curl -L https://nixos.org/nix/install | sh) because Determinate lists x86_64-darwin as unsupported
  • Other docs (AGENTS.md, modules/README.md) updated for the host-count + brewPrefix guidance

Validation

$ nix eval --no-warn-dirty .#darwinConfigurations.inix.config.homebrew.prefix --raw
/usr/local

$ nix eval --no-warn-dirty .#darwinConfigurations.inix.system.outPath --raw
/nix/store/7pimf07rs1232szmwvsaf4zj2k2xrvqj-darwin-system-26.05.06648f4

Re-evaluated mbp, a6mbp, studio after the syncthing refactor — all still produce valid system paths and homebrew.prefix resolves to /opt/homebrew. gnarbox NixOS config still evals (stateVersion = "25.05").

Note: x86_64-darwin sunset

Per the nixpkgs 26.05 release notes: 26.05 is the last release to support x86_64-darwin. Nixpkgs maintains the platform with binary builds until 26.05 goes out of support at the end of 2026. From 26.11 onward (Nov 2026), no packages will be built for x86_64-darwin and source builds will not be supported.

We're tracking unstable on inix today for parity with the other Macs. A scheduled routine (trig_01KH42sj6qQeHnnhLFKkbgvi, fires 2026-06-08) will open a follow-up PR pinning inix to nixos-26.05 once that branch is cut. Note: that follow-up PR will land on the GitHub mirror (https://github.com/bryan-thompsoncodes/nix-configs), not Forgejo, since the cloud-hosted scheduled agent has gh auth but no Forgejo token.

Test plan

  • On the iMac: install Nix via the upstream installer (curl -L https://nixos.org/nix/install | sh) — Determinate doesn't support x86_64-darwin
  • Bootstrap nix-darwin: sudo nix run nix-darwin/master#darwin-rebuild -- switch --flake '.#inix'
  • Verify which brew returns /usr/local/bin/brew (not /opt/homebrew/bin/brew)
  • Verify Slack, VLC, Zen Browser, Obsidian, Vivaldi launch
  • Confirm syncthing connects to existing devices (web UI at http://127.0.0.1:8384)
## Summary Migrate `inix` (2017 iMac Pro) from NixOS to nix-darwin on `x86_64-darwin`. NixOS on this hardware proved painful (Broadcom WiFi firmware, AMD Vega, T2) — going back to macOS with Nix on top, modeled after [mbp.nix](modules/hosts/mbp.nix) but scoped to a garage-machine workload. ## Changes - **New `darwinConfigurations.inix`** on `x86_64-darwin` (only Intel Mac in the flake) - **`x86_64-darwin` added to flake `systems`** - **`nixosConfigurations.inix` and `hardware-configs/inix.nix` removed** - **`modules/hosts/inix.nix`** rewritten as a darwin module: imports `fonts`, `nix-settings`, `zsh`, `homebrew`, `editors`, `git`, `cli-tools`, `activation`, `syncthing`. Brews: `pinentry-mac`, `syncthing`. Casks: `slack`, `vlc`, `zen`. (`obsidian` and `vivaldi` come from the base homebrew module; `zen` is host-level on mbp/studio so it's also host-level here.) - **`modules/services/syncthing.nix`** refactored to use `${config.homebrew.prefix}/bin/syncthing` instead of hardcoded `/opt/homebrew/bin` so it works on both Apple Silicon (`/opt/homebrew/bin`) and Intel (`/usr/local/bin`) - **`README.md` Prerequisites** split — Apple Silicon Macs use Determinate; Intel Mac (inix) uses the upstream installer (`curl -L https://nixos.org/nix/install | sh`) because Determinate lists `x86_64-darwin` as unsupported - **Other docs** (`AGENTS.md`, `modules/README.md`) updated for the host-count + brewPrefix guidance ## Validation ``` $ nix eval --no-warn-dirty .#darwinConfigurations.inix.config.homebrew.prefix --raw /usr/local $ nix eval --no-warn-dirty .#darwinConfigurations.inix.system.outPath --raw /nix/store/7pimf07rs1232szmwvsaf4zj2k2xrvqj-darwin-system-26.05.06648f4 ``` Re-evaluated `mbp`, `a6mbp`, `studio` after the syncthing refactor — all still produce valid system paths and `homebrew.prefix` resolves to `/opt/homebrew`. `gnarbox` NixOS config still evals (`stateVersion = "25.05"`). ## Note: x86_64-darwin sunset Per the [nixpkgs 26.05 release notes](https://nixos.org/manual/nixpkgs/unstable/release-notes#x86_64-darwin-26.05): 26.05 is the last release to support `x86_64-darwin`. Nixpkgs maintains the platform with binary builds **until 26.05 goes out of support at the end of 2026**. From 26.11 onward (Nov 2026), no packages will be built for `x86_64-darwin` and source builds will not be supported. We're tracking unstable on inix today for parity with the other Macs. A scheduled routine (`trig_01KH42sj6qQeHnnhLFKkbgvi`, fires 2026-06-08) will open a follow-up PR pinning `inix` to `nixos-26.05` once that branch is cut. *Note: that follow-up PR will land on the GitHub mirror (https://github.com/bryan-thompsoncodes/nix-configs), not Forgejo, since the cloud-hosted scheduled agent has gh auth but no Forgejo token.* ## Test plan - [ ] On the iMac: install Nix via the **upstream installer** (`curl -L https://nixos.org/nix/install | sh`) — Determinate doesn't support `x86_64-darwin` - [ ] Bootstrap nix-darwin: `sudo nix run nix-darwin/master#darwin-rebuild -- switch --flake '.#inix'` - [ ] Verify `which brew` returns `/usr/local/bin/brew` (not `/opt/homebrew/bin/brew`) - [ ] Verify Slack, VLC, Zen Browser, Obsidian, Vivaldi launch - [ ] Confirm syncthing connects to existing devices (web UI at http://127.0.0.1:8384)
Refactor services/syncthing.nix to use config.homebrew.prefix for cross-arch.
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin inix-darwin-migration:inix-darwin-migration
git switch inix-darwin-migration

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff inix-darwin-migration
git switch inix-darwin-migration
git rebase main
git switch main
git merge --ff-only inix-darwin-migration
git switch inix-darwin-migration
git rebase main
git switch main
git merge --no-ff inix-darwin-migration
git switch main
git merge --squash inix-darwin-migration
git switch main
git merge --ff-only inix-darwin-migration
git switch main
git merge inix-darwin-migration
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
bryan/nix-configs!6
No description provided.