My macOS configuration — nix-darwin + home-manager for a fully declarative dev environment.
- Shell: zsh with starship, fzf, zoxide, atuin
- Editor: Neovim via nixvim
- Git: delta, lazygit, sensible defaults
- Terminal: ghostty, zellij
- Kubernetes: colima + k3s, kubectl, helm, k9s (guide)
- Tools: direnv, eza, bat, ripgrep, fd, yazi, btop
-
Fork/clone this repo
-
Update the hostname in
flake.nix:darwinConfigurations."your-hostname" = darwin.lib.darwinSystem { ... };
-
Update user details in
modules/home.nix:home.homeDirectory = "/Users/your-username"; programs.git.settings.user.name = "your-name"; programs.git.settings.user.email = "your@email.com";
-
Update the host config in
hosts/mac.nix:networking.hostName = "your-hostname"; users.users.your-username = { ... }; home-manager.users.your-username = import ../modules/home.nix;
-
Remove my stuff you don't need:
modules/minecraft.nix— Prism Launcher + JDKmodules/secrets.nixandsecrets/— my encrypted keys- SSH config in
modules/home.nix— my machines
-
Rebuild:
darwin-rebuild switch --flake .#your-hostname
# Rebuild after changes
darwin-rebuild switch --flake .#your-hostname
# Format nix files
nix fmtflake.nix # Entry point
hosts/mac.nix # Host-specific config
modules/
darwin.nix # System packages, services
home.nix # User environment, shell, tools
nixvim.nix # Neovim configuration