My Nix Configuration for macOS using nix-darwin and home-manager.
Supports both Apple Silicon and Intel Macs, with multi-user support for shared machines.
# First time setup (after installing Nix)
nix run nix-darwin -- switch --flake ~/.config/nixpkgs#<config-name>
# Subsequent rebuilds
darwin-rebuild switch --flake ~/.config/nixpkgs#<config-name>Available configurations: salarm3max (Apple Silicon), salarintel (Intel)
User-specific settings (name, email, etc.) are stored in users/*.nix files.
Example user profile (users/myusername.nix):
{
username = "myusername";
fullName = "My Full Name";
email = "me@example.com";
gitSigningKey = "~/.ssh/id_ed25519.pub"; # or null if not using signing
jujutsuBranchPrefix = "myprefix";
}Then reference it in your machine configuration in flake.nix:
myMachine = mkDarwinConfig {
system = "aarch64-darwin";
hostname = "my-machine";
users = [ (import ./users/myusername.nix) ];
};For shared machines with multiple users:
sharedMachine = mkDarwinConfig {
system = "aarch64-darwin";
hostname = "shared-machine";
users = [
(import ./users/user1.nix)
(import ./users/user2.nix)
];
};See CLAUDE.md for detailed documentation on:
- Repository architecture and structure
- Adding new programs
- Adding new machine configurations
- Common commands and aliases
- Customization options