Personal dotfiles and declarative macOS configuration. The machine definition lives under jpuccinelli/ as a Nix flake: nix-darwin, Home Manager, and nix-homebrew. One darwin-rebuild switch applies CLI packages, Homebrew apps, macOS defaults, fonts, and symlinked editor/terminal configs.
Full install and maintenance steps: see jpuccinelli/README.md.
| Piece | Role |
|---|---|
flake.nix / flake.lock |
Pins nixpkgs, nix-darwin, Home Manager, nix-homebrew |
configuration.nix |
Packages, Homebrew, macOS defaults, security, activation scripts, Home Manager user |
jpuccinelli/dotfiles/ |
Source files for zsh (see repo layout), VS Code, Cursor, and Terminal.app plist |
- Core / shell:
git,direnv,ripgrep,zsh,fd,htop,jq,yq,wget,tree,nmap,fzf,just,pure-prompt,dig,curl,openssh,vim - Python / tooling:
uv,poetry,pyenv,nil,nixpkgs-fmt - Kubernetes / cloud:
kubectl,kubecolor,argocd,argo-workflows,stern,kubernetes-helm,kubectx,krew,terraform, plus kubectl-related tools:kubectl-tree,kubectl-images,kubeconform,popeye - Krew plugins (activation):
ai,deprecations(installed at rebuild); symlinks wirekubectx/kubens/kubectl-tree/popeyetokubectl-*names
- Brews:
azure-cli,node,openssl,kube-ps1,kubelogin(Azure tap),gh - Casks: Chrome, Docker Desktop, VS Code, iTerm2, ExpressVPN, Miniconda, Slack, Rectangle, Bitwarden, Copilot CLI, and Quick Look–related casks (
suspicious-package,apparency,quicklookase,qlvideo)
- Dark mode, Finder/screen capture/dock/menu bar clock, trackpad (including three-finger drag), Control Center extras, startup chime off, quarantine prompts reduced
- Touch ID for sudo (with reattach), application firewall (stealth + block incoming)
locate: activation loads the daemon and refreshes the database on rebuild- iTerm2: copy-on-select enabled via
defaults
- Nerd Font: Meslo LG (for Pure prompt glyphs)
- zsh with oh-my-zsh (minimal plugins) and Pure prompt; kube-ps1 from Homebrew layered in; direnv, fzf, conda/miniconda hook, NVM (Homebrew node), Docker completions, kubectl completion, kubecolor aliases — see generated/init content in
configuration.nixandjpuccinelli/dotfiles/zsh/.zshrcif you keep a copy there.
Symlinks from this repo’s jpuccinelli/dotfiles/ into:
- Terminal.app:
Library/Preferences/com.apple.Terminal.plist - VS Code:
settings.json,keybindings.jsonunder Application Support - Cursor:
settings.json,keybindings.jsonunder Application Support
- Xcode: Command Line Tools before first Homebrew/Nix-driven install (
xcode-select --install). - SSH: Generate keys, add to GitHub, use Keychain (
ssh-add --apple-use-keychain,UseKeychainin~/.ssh/config) — patterns referenced in the zsh init inconfiguration.nix. - Cluster tooling: Match
kubectlclient to cluster policy if your org requires a specific version (e.g. viaaz aks install-cli); the flake pins Nix’skubectlbut clusters may differ.
If you are not using the Nix flake, the older “install everything with Homebrew by hand” list is superseded by the declarative config above; prefer jpuccinelli/README.md and a flake rebuild.