macOS development environment configs: ghostty, neovim (NvChad), fish, tmux, starship, git.
Paste into zsh (the stock macOS shell) — idempotent, re-run as often as you like:
curl -fsSL https://raw.githubusercontent.com/FabioLissi/dotfiles/main/install.sh | bashThe script installs Homebrew, packages (fish, starship, neovim, tmux, bat, eza,
trash, pyenv, fzf, gh), Ghostty, Symbols Nerd Font Mono, symlinks all configs,
makes fish the default shell (so Ghostty stops opening zsh), and sets up fisher
and tpm plugins. Existing real config directories are moved to *.bak.*, never
deleted. Or run it from a clone: bash ~/dotfiles/install.sh.
- Nothing font-related anymore — IosevkaTerm Nerd Font installs via Homebrew
~/repos/forge-fishis a local fish plugin — clone it, or remove it fromfish_plugins- The per-machine secrets files below
install.sh installs only the dev core. For everything else (Blender, KiCad,
VS Code extensions, …) there's a Brewfile snapshot of the personal machine:
bash ~/dotfiles/install.sh --apps # or: brew bundle install --file=~/dotfiles/BrewfileAPI keys are not tracked. config.fish sources ~/.config/fish/secrets.fish
when present. Preferred flow: keep secrets in 1Password, then render the file
from the committed template (fish/secrets.fish.tpl, no secrets in it):
secrets_syncRequires the 1Password CLI (in the Brewfile) with app integration enabled
(1Password → Settings → Developer → Integrate with CLI), and vault items named
as in the template. Fallback: write secrets.fish by hand with
set -gx MY_API_KEY "..." lines.
Store SSH keys in 1Password instead of key files — nothing to migrate between machines. Enable 1Password → Settings → Developer → Use SSH agent, import your key as an SSH Key item, then:
ln -sfn ~/dotfiles/ssh/config ~/.ssh/configThis is not part of install.sh on purpose: only link it after the agent toggle is on, or ssh will try a socket that isn't there.
Git email is per-machine. Create ~/.gitconfig.local by hand:
[user]
email = you@example.com