feat: add nix-darwin scaffolding for macOS hosts #424

Open
lytedev wants to merge 1 commit from nix-darwin into main
Owner

Summary

  • Add nix-darwin flake input (following nixpkgs-unstable)
  • Add darwinConfigurations and darwinModules flake outputs
  • Add darwinHost builder in lib/host.nix mirroring the NixOS baseHost pattern
  • Add darwin modules: default (nix settings, sops, Touch ID sudo), shell-config (fish + CLI tools + dotfile symlinks), user-env (symlink management via system.activationScripts)
  • Add packages/hosts/darwin/ with example template host config
  • No hosts enabled yet — ready for real mac hostnames

Test plan

  • nix flake check --no-build passes
  • nix eval .#darwinConfigurations returns {}
  • Temporarily enabling example-mac: nix eval .#darwinConfigurations.example-mac.config.networking.hostName returns "example-mac"
  • Bootstrap on an actual mac with darwin-rebuild switch --flake .#<hostname>

🤖 Generated with Claude Code

## Summary - Add `nix-darwin` flake input (following `nixpkgs-unstable`) - Add `darwinConfigurations` and `darwinModules` flake outputs - Add `darwinHost` builder in `lib/host.nix` mirroring the NixOS `baseHost` pattern - Add darwin modules: default (nix settings, sops, Touch ID sudo), shell-config (fish + CLI tools + dotfile symlinks), user-env (symlink management via `system.activationScripts`) - Add `packages/hosts/darwin/` with example template host config - No hosts enabled yet — ready for real mac hostnames ## Test plan - [x] `nix flake check --no-build` passes - [x] `nix eval .#darwinConfigurations` returns `{}` - [x] Temporarily enabling example-mac: `nix eval .#darwinConfigurations.example-mac.config.networking.hostName` returns `"example-mac"` - [ ] Bootstrap on an actual mac with `darwin-rebuild switch --flake .#<hostname>` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat: auto-provision Bulwark OAuth client in Stalwart via systemd
Some checks failed
/ check-format (push) Failing after 11s
/ build (push) Successful in 6m6s
8e63bc9b53
Adds a oneshot service that ensures the bulwark-webmail OAuth client
principal exists in Stalwart's internal directory. Idempotent — checks
first, creates only if missing.
style: format bulwark.nix
Some checks failed
/ check-format (push) Failing after 9s
/ build (push) Successful in 6m0s
0dd24e7f4b
style: format bulwark.nix and mail.nix
All checks were successful
/ check-format (push) Successful in 10s
/ build (push) Successful in 5m59s
9377468353
feat: add nix-darwin scaffolding for macOS hosts
All checks were successful
/ check-format (push) Successful in 10s
/ build (push) Successful in 6m3s
c09c77f25b
Add nix-darwin flake input, darwinConfigurations/darwinModules outputs,
darwinHost builder, and darwin-specific modules (shell, user-env, defaults).
Mirrors the NixOS module pattern with darwin adaptations (Touch ID sudo,
macOS paths, system.activationScripts for user env).

No hosts are enabled yet — includes an example-mac.nix template.
lytedev force-pushed nix-darwin from c09c77f25b
All checks were successful
/ check-format (push) Successful in 10s
/ build (push) Successful in 6m3s
to 91286e3ad2
All checks were successful
/ check-format (push) Successful in 10s
/ build (push) Successful in 6m19s
2026-03-23 15:33:51 -05:00
Compare
All checks were successful
/ check-format (push) Successful in 10s
Required
Details
/ build (push) Successful in 6m19s
Required
Details
This pull request can be merged automatically.
This branch is out-of-date with the base branch
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 nix-darwin:nix-darwin
git switch nix-darwin
Sign in to join this conversation.
No reviewers
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
lytedev/nix!424
No description provided.