Skip to content

fkb032/nixmac-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

I'll never set up a Mac from scratch again.

Every new Mac starts the same way. You open System Settings. You turn on dark mode. You move the dock. You make the icons smaller. You turn off smart quotes. You spend an hour in Finder preferences. You download Chrome, then Slack, then Spotify, then twenty other apps. You configure git. You set up SSH keys. You try to remember what shell plugins you had.

A week later you're almost back to where you were. Almost.


This repo is the fix. My entire Mac — every app, every system preference, every dev tool, every shell config — declared in Nix and managed by nixmac.

Nix is a declarative system: you describe what you want, and it builds exactly that, every time. nixmac is a macOS app that sits on top of it — lets me evolve my config with natural language ("add Figma to my apps"), validates every change, and applies it. When I want something different, I describe it and nixmac writes the Nix.

New Mac? git clone, open nixmac, done. Every app, every preference, every tool — back in minutes, not days.


What nixmac manages

What Examples
System macOS preferences as code Dark mode, dock on the left, no smart quotes, screenshots to ~/Screenshots
Home Manager Dev environment as code Git with 1Password commit signing, zsh, tmux, direnv
Homebrew Brews + casks Chrome, Slack, Cursor, Obsidian, 1Password, Warp
.nixmac/ Reserved modules Core config that stays locked down

The Homebrew list in flake-modules/darwin.nix reflects my actual machine. Trim or replace via nixmac (natural language) or by editing the file directly.


Remember setting all of this up?

system.defaults.NSGlobalDomain.KeyRepeat = 2;

One line. Applied on every machine, forever.


Fork it

Prerequisite: This repo is tuned for Determinate Nix. Vanilla Nix may require small tweaks.

Already on nix-darwin:

  1. git clone <this-repo> ~/.darwin
  2. Edit users/default.nix — fill in your username, full name, email, home directory, and optionally a git signing key (see comment in the file).
  3. In flake-modules/darwin.nix — rename the "My-MacBook-Pro" attribute key to your hostname (scutil --get LocalHostName). Update the matching hostname = "My-MacBook-Pro"; lines.
  4. In flake-modules/packages.nix — rename "My-MacBook-Pro" in the cachix-deploy-spec agents block (or delete the block if you don't use Cachix).
  5. Install nixmac and open it — it picks up ~/.darwin automatically.

New to Nix:

  1. Install Determinate Nix (one command).
  2. Install nixmac — it can help you get nix-darwin set up.
  3. Clone this repo to ~/.darwin and follow the steps above, or start fresh from nixmac's built-in templates.
  4. Open nixmac and ask for your first change in plain English.
.
├── flake.nix                  # entry point
├── flake-modules/darwin.nix   # the whole config — start here
├── users/default.nix          # user profile (edit me)
├── .nixmac/                   # nixmac app integration
└── rebuild.sh                 # CLI fallback

License

MIT. See LICENSE.


nixmac — your Mac, declared in Nix, evolved by AI.

About

My Mac, declared in Nix, managed by nixmac — a public nix-darwin template

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors