macOS system configuration using Nix Darwin and Home Manager.
git clone https://github.com/patrikduksin/dotfiles.git ~/dotfiles
cd ~/dotfilesThis will install Homebrew, Nix, and apply the nix-darwin configuration:
./install.shdarwin-rebuild switch --flake ~/dotfilesCLI Tools: bat, eza, fd, fzf, ripgrep, zoxide, jq, yazi, direnv, mise, colima, docker, docker-buildx, docker-compose, fish, starship, ffmpeg, imagemagick, cmake, cocoapods, fastlane, watchman, mas
Apps:
- Essential: 1Password, Aerospace, Raycast, Ghostty, Cursor, Helium
- Communication: Slack, Telegram, WhatsApp, Zoom, Discord, Teams, Loom
- Development: Figma, Insomnia, ngrok, mitmproxy, Xcodes, OpenMTP
- Utilities: AlDente, HiddenBar, OBS, Macs Fan Control, Contexts, IINA
- Apps: Spotify, Notion, Notion Calendar, ChatGPT
Mac App Store: Infuse
- Fish shell config
- Zsh shell config (interactive + non-interactive)
- Starship prompt (Nerd Font symbols)
- Git config (1Password SSH signing)
- mise version manager, including Bun, Node, pnpm, Codex, Claude Code, Prettier, eas-cli, agent-browser, Rust, and uv
- Docker CLI with Colima runtime for running containers without Docker Desktop
- Aerospace window manager
- Herdr agent multiplexer with hybrid prefix and direct pane-navigation shortcuts
Herdr keeps the default Ctrl-b prefix and adds direct Ctrl-Option-h/j/k/l
shortcuts for pane navigation. Frequently used tab, split, and zoom actions also
have Ctrl-Option shortcuts while retaining their prefix bindings.
Run Ctrl-b ? inside Herdr to see the active keymap. Use Ctrl-b Shift-g to
create a Git worktree for an independent agent task, and Ctrl-b q to detach
while agents continue running.
This setup installs Docker CLI tools and Colima. Start the local container runtime from the terminal:
docker-startThen run containers normally:
docker run --rm hello-world
docker compose versionStop the runtime when you do not need it:
docker-stop- Login shell: zsh
- Ghostty shell: fish (
/opt/homebrew/bin/fish) - Claude Code shell override: zsh
- Dock: autohide, no recent apps
- Finder: show all extensions, path bar, list view
- Keyboard: fast key repeat
- Trackpad: tap to click, three finger drag
- Dark mode enabled
- Touch ID for sudo
The old fish config had an exposed token. Revoke it at: https://github.com/settings/tokens
Open Cursor and install:
biomejs.biome
dbaeumer.vscode-eslint
dooez.alt-catppuccin-vsc
esbenp.prettier-vscode
expo.vscode-expo-theme
expo.vscode-expo-tools
redhat.vscode-yaml
rvest.vs-code-prettier-eslint
vscodevim.vim
yoavbls.pretty-ts-errors
- 1Password
- Raycast
- Slack, Telegram, WhatsApp, Discord, Teams
- Spotify
- Notion
- Figma
Enable SSH agent in 1Password settings for git signing to work.
~/dotfiles/
├── flake.nix # Entry point
├── flake.lock
├── darwin/
│ └── default.nix # nix-darwin: brew, system settings
├── home/
│ └── default.nix # home-manager: dotfiles, programs
└── config/
├── fish/config.fish
├── zsh/.zshenv
├── zsh/.zshrc
├── starship.toml
├── herdr/config.toml
├── claude/settings.json
├── mise/config.toml
└── aerospace/aerospace.toml
# Update flake inputs
cd ~/dotfiles
nix flake update
# Apply changes
darwin-rebuild switch --flake .