Personal dotfiles and machine setup, managed with the rcm suite. Works on both Intel and Apple Silicon Macs.
git clone https://github.com/samcdavid/dotfiles.git ~/.dotfiles && ~/.dotfiles/setup/macThis single command will:
- Install Homebrew and all packages/casks
- Symlink dotfiles via rcm
- Authenticate with GitHub
- Generate SSH and GPG keys
- Set Fish as default shell
- Install asdf plugins and language runtimes
- Install Oh My Fish packages
- Install Neovim plugins
- Install tmux plugins
- Configure macOS preferences and text replacements
Each run is logged to ~/laptop.log (auto-numbered on re-runs: laptop1.log, laptop2.log, etc.).
- Set up 1Password before running the script
- Shell: Fish with Oh My Fish and 30+ custom functions
- Editor: Neovim with LazyVim framework
- Terminal: Ghostty + tmux with vim-like bindings and TPM
- Version Manager: asdf (Ruby, Node.js, Erlang, Elixir, Python, Go)
- VCS: Git with GPG and SSH key signing
setup/
βββ mac # Bootstrap script
βββ macos # macOS preferences (Dock, Finder, cursor, text replacements)
βββ Brewfile # Homebrew packages and casks
βββ text-replacements.plist # Looks of disapproval text replacements
config/
βββ fish/ # Fish shell config + 32 custom functions
βββ ghostty/ # Ghostty terminal config
βββ nvim/ # Neovim LazyVim setup
βββ omf/ # Oh My Fish packages
βββ tmuxinator/ # Tmuxinator project sessions
direnvrc # direnv layouts (anaconda, poetry)
editorconfig # Editor defaults
envrc # Environment variables
gitconfig # Git with GPG signing
gitignore_global # Global gitignore
gitmessage # Commit message template
psqlrc # PostgreSQL client config
tmux.conf # tmux config (portable Intel/Apple Silicon)
tool-versions # asdf runtime versions
| Category | Functions |
|---|---|
| Git | gs, gc, co, gr, glog, pull, push, shove, pap, end_feature |
| Elixir/Phoenix | server, iexc, update_mix, hexu, rebaru, phoenixu |
| PostgreSQL | pg_init, pg_start, pg_stop, pg_user |
| Docker | stop_docker, rm_docker, rmi_docker |
| Tmux | mux, muxc, muxn, muxs |
| System | ll, myip, vim, tf, cleanpyc |
rcup # Re-symlink after pulling changes
rcup -v # Verbose output
mkrc <file> # Add a new dotfile to the repo
lsrc # List all managed symlinks
rcdn # Remove symlinks