A plain zsh setup for macOS — no framework, no prompt engine — plus a short script that provisions a fresh Mac.
Clone the repository as .dotfiles in your home directory and run the bootstrap
script:
git clone git@github.com:kylewalow/dotfiles.git ~/.dotfiles
cd~/.dotfiles
./bootstrapbootstrap asks for confirmation, takes your sudo password upfront and then
sources installscript. Running it again is safe: every step either skips or
updates what is already there.
- Homebrew — installed when missing, otherwise just put on
PATH - zsh — made the login shell if it isn't already, and
~/.zshrcis symlinked toshell/.zshrc - Plugins —
zsh-autosuggestionsfrom Homebrew, zsh-artisan cloned to~/.zsh - CLI tools —
zoxide,fzf,ripgrep,wget - Databases —
mysqlandredis, both started as background services that come back after a reboot (brew services stop mysqlto undo) - Node —
nvmwith the current LTS as default, pluspnpm - Git — global gitignore,
code --waitas editor, andconfig/.gitconfigpulled in throughinclude.path - Font — Fira Code
PHP is deliberately not managed here, PHP Monitor handles that.
| Path | Purpose |
|---|---|
bootstrap | prompts, then runs the installscript |
installscript | provisions the machine |
shell/.zshrc | the only file symlinked into $HOME |
shell/.exports | environment variables |
shell/.aliases | aliases |
shell/.functions | shell functions |
shell/.global-gitignore | referenced by core.excludesfile |
config/.gitconfig | git aliases and user, included from ~/.gitconfig |
shell/.zshrc also sources the following files when they exist. They are not
part of this repository, so anything machine specific or secret belongs there:
~/.dotfiles-custom/shell/.exports
~/.dotfiles-custom/shell/.aliases
~/.dotfiles-custom/shell/.functions
~/.dotfiles-custom/shell/.zshrc
| Command | Does |
|---|---|
z <fragment> | jump to a directory you have visited before |
zi | pick one interactively through fzf |
browse | open the current repository's remote in the browser |
kraken | open the current directory in GitKraken |
mkd <dir> | create a directory and enter it |
wholisten <port> | show what is listening on a port |
digga <host> | readable dig output |
set_vscode_colors | tint VS Code by project type (Laravel, Nuxt, ProcessWire) |
Feel free to create an issue on this repo if you have any questions about them.