Basic setup files and setup instructions
These are the configuration files and settings that I'm using on my computers. Use at your own risk.
See the Brew bundles to install software using Homebrew:
brew bundle # Core CLI + runtimes (Brewfile)
brew bundle --file=Brewfile.dev # Optional languages, DBs, utilities
brew bundle --file=Brewfile.apps # GUI + Mac App Store appsBrewfile.apps includes mas entries (e.g., Xcode); remove any you do not want before running the bundle.
Capture the exact versions you installed with brew bundle lock --file=<bundle>.
Install miniconda and create a default environment code.
brew install miniconda
conda create --name code
conda activate codeAnything drops into code unless I pick a specific environment for a project.
Make sure that dot.condarc is already linked to from ~/.condarc.
The shell now loads Conda's activation hook lazily, so the first conda/activate command may take a moment while the hook initializes, but interactive startup stays fast.
Git configuration:
git config --global user.name "My Name Here"
git config --global user.email "my_email@example.com"See also dot.gitconfig_base.
From the repo root run:
./bootstrap.shThe script detects where it lives, links each dot.* file into $HOME, and backs up any conflicting files into ~/.dotfiles_backup/<timestamp>. If you want to preview the actions, add --dry-run.
PATH customizations live in dot.dotfiles_path; edit that file to add or remove directories once it is linked to ~/.dotfiles_path.
If you prefer to create links manually, use the commands below (assuming your clone lives under ~/repos/owner/name):
ln -s ~/repos/tvogels01/dotfiles/dot.aliases ~/.aliases
ln -s ~/repos/tvogels01/dotfiles/dot.bash_logout ~/.bash_logout
ln -s ~/repos/tvogels01/dotfiles/dot.bash_profile ~/.bash_profile
ln -s ~/repos/tvogels01/dotfiles/dot.bashrc ~/.bashrc
ln -s ~/repos/tvogels01/dotfiles/dot.condarc ~/.condarc
ln -s ~/repos/tvogels01/dotfiles/dot.duckdbrc ~/.duckdbrc
ln -s ~/repos/tvogels01/dotfiles/dot.editorconfig ~/.editorconfig
ln -s ~/repos/tvogels01/dotfiles/dot.gitconfig_base ~/.gitconfig_base
ln -s ~/repos/tvogels01/dotfiles/dot.gitignore_global ~/.gitignore_global
ln -s ~/repos/tvogels01/dotfiles/dot.dotfiles_path ~/.dotfiles_path
ln -s ~/repos/tvogels01/dotfiles/dot.psqlrc ~/.psqlrc
ln -s ~/repos/tvogels01/dotfiles/dot.screenrc ~/.screenrc
ln -s ~/repos/tvogels01/dotfiles/dot.vimrc ~/.vimrc
ln -s ~/repos/tvogels01/dotfiles/dot.zlogin ~/.zlogin
ln -s ~/repos/tvogels01/dotfiles/dot.zlogout ~/.zlogout
ln -s ~/repos/tvogels01/dotfiles/dot.zprofile ~/.zprofile
ln -s ~/repos/tvogels01/dotfiles/dot.zshrc ~/.zshrc
ln -s ~/repos/tvogels01/dotfiles/ssh_config ~/.ssh/configAfter sourcing ~/.aliases, an activate helper is available. Run it in any project directory to:
- Execute
nvm useif a.nvmrcfile is present. - Activate the Conda environment whose name matches the current folder (if it exists).
- Source
.venv/bin/activatewhen a local Python virtualenv is available.
Both NVM and Conda hooks are loaded on demand the first time you use nvm, node, npm, or conda, keeping shell startup latency low.
-
Create a named environment (shared default is
code):conda create --name <project> python=3.12
-
Inside the project folder run
activateto enter the matching Conda env automatically. -
Capture dependencies:
conda env export --from-history > environment.yml
-
Exit with
conda deactivate(the helper does not auto-deactivate).
Projects that prefer python -m venv can still use .venv/bin/activate and skip Conda entirely.
Add to ~/Library/Application\ Support/Code/User/settings.json:
{
"editor.formatOnSave": true,
"editor.inlineSuggest.enabled": true,
"editor.minimap.enabled": false,
"files.autoSave": "onFocusChange",
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"python.defaultInterpreterPath": "/usr/local/Caskroom/miniconda/base/envs/code",
"settingsSync.ignoredExtensions": [],
"terminal.integrated.inheritEnv": false,
"workbench.editor.tabCloseButton": "left",
"[python]": {
"editor.formatOnType": true
}
}Search in their market place (for either code or cursor).
code --list-extensions --show-versions | sortSee Brewfile.vscode as an alternative.
Start with:
brew bundle dump --describe --file=Brewfile.newThen merge Brewfile.new with the existing Brewfile.
brew update
./brew_upgrade_all.shAlso check for untracked (and outdated) software:
brew bundle cleanupconda update --allAlso try: softwareupdate --list
Run set_macos_defaults.sh to apply favorite defaults (Dock position, alert sounds, speech voice). The script runs defaults write commands with set -euo pipefail, prints each change, restarts the Dock, and reminds you of manual checklist items (FileVault, Bluetooth, etc.). Pass --help to see usage.
Link ssh_config to ~/.ssh/config (see Installation above). The default entry keeps EC2 instances alive and logs in as ec2-user. Add host-specific overrides below that block and keep permissions strict (chmod 600 ~/.ssh/config). Pair this with per-host keys in ~/.ssh and ssh-add -K ~/.ssh/<key> as needed.
CHEATSHEET.md summarizes the most common commands:
activatehelper order of operations (nvm use→conda activate <cwd>→.venv)brew bundle,./brew_upgrade_all.sh, and lockfile tips- Conda/Jupyter workflows, VS Code reminders, and SSH config usage
Update the cheat sheet whenever workflows change so onboarding stays accurate.