Modern rewrite of my old dotfiles (lucadibello/dotfiles), now fully managed with Nix flakes + nix-darwin + home-manager. It provisions my personal macOS setup (shell, CLI tools, GUI apps, window manager, terminal/tmux, Git identity) in a reproducible way.
flake.nix: entrypoints for hostsLucas-MacBook-Pro-16-inch(MacBook) andLucas-Mac-Mini(Desktop).darwin/: nix-darwin modules (system defaults, TouchID/WatchID for sudo, keyboard/caps remap, Finder tweaks, PATH/EDITOR env, Homebrew taps/casks, AeroSpace service).home/: home-manager modules for shell (zsh + fzf/zoxide/atuin), prompt (starship), tmux (Catppuccin theme, cpu/battery/fzf/yank/pain-control plugins), Git user config, dev toolchain (fnm, sdkman, jdk21), and CLI packages (neovim, zed, lazygit, claude-code, etc.).hosts/<hostname>/configuration.nix: host-specific settings (e.g., TouchID vs WatchID, gaming packages for Mac Mini).config/: extra assets (e.g., Ghostty cursor shader).bootstrap.sh: helper script to bootstrap the system (installs nix-darwin, builds flake).
-
Install Nix with flakes enabled (e.g., Determinate/official installer). Ensure you have
nixavailable. -
Clone this repo to
~/Developer/nix-config(or adjust paths accordingly). -
(Optional) Add a host entry under
hosts/<your-host>/configuration.nixand pointflake.nixto it if your machine name differs fromLucas-MacBook-Pro-16-inch. -
Apply the system:
chmod +x bootstrap.sh ./bootstrap.sh
-
Log out/in (or reboot) to let macOS defaults and services settle.
- Packages: edit
home/packages.nixfor CLI tools; GUI/casks live indarwin/homebrew.nix. - Shell & prompt: tweak
home/zsh.nix(zsh + oh-my-zsh withgit,vi-mode,tmuxplugins) andhome/starship.nix; aliases includenix-switchfor updating the system. - Window management:
darwin/services.nixconfigures AeroSpace withalt-centric bindings (tiles/accordion layouts, workspaces A–Z/0–9, Ghostty launcher onalt-enter) and smart window movement rules. - Terminal:
home/ghostty.nixsets font (JetBrains Mono), theme (Github Dark), custom cursor shader, zsh integration, and auto-starts acoretmux session. - System defaults: adjust Finder/keyboard/loginwindow options (e.g., Caps Lock to Escape, hidden files, no guest login) in
darwin/system.nixand env indarwin/settings.nix. - Homebrew:
darwin/homebrew.nixmanages casks (browsers, AI tools, dev apps) and brews, withzapcleanup enabled.
-
Pull latest changes, edit modules as needed, then run:
nix-switch
Note: This is an alias for
sudo darwin-rebuild switch --flake ~/Developer/nix-config#<HOST_NAME>, automatically configured inzsh. -
nix flake updatebumps inputs (nixpkgs,nix-darwin,home-manager) to the pinned release (25.11today).