A repository of configuration and tooling used to set up and standardize a development workstation. Clone this repo and run the included scripts to install tools and apply settings so new machines (or fresh installs) match a consistent environment.
| Directory / file | Purpose |
|---|---|
| tools.sh | Homebrew-based install script for core CLI tools, languages (Java, Node, Python, .NET), Kubernetes tooling, browsers, media apps, AI tools, and optional extras. Run on macOS after installing Homebrew. While it can be run in its entirety, most likely you'll want to pick and choose the specific tools you need for a particular machine. |
| git-config/ | Global Git config layers: shared defaults (gitconfig.shared), platform overlays (gitconfig.macos, gitconfig.linux, gitconfig.windows), and shared ignore patterns (gitignore). Include these from the machine-owned ~/.gitconfig. |
| terminal-settings/ | Shell configs and terminal profiles: shared zsh, bash, and PowerShell profiles (*.shared.sh, *.shared.ps1), Oh My Posh theme (.oh-my-posh.justin.json), and profiles for iTerm2 and Windows Terminal. |
| verify-config.sh | Checks whether machine-owned entrypoints like ~/.gitconfig, ~/.zshrc, ~/.bashrc, and the PowerShell profile include/source the expected repo-managed files. |
| ps-modules/ | Bundled PowerShell modules: oh-my-posh, posh-git, and PSKubectlCompletion, for use when PowerShell isn’t allowed to install from the gallery or you want fixed versions. |
| fonts/ | Fonts such as Cascadia Code (also installable via brew install --cask font-cascadia-code from tools.sh). |
| tool-settings/ | Exported or backup settings for IDEs and tools: VS Code, Visual Studio, ReSharper, JetBrains, Beyond Compare, Sublime Text, SSMS, and Claude (e.g. iTerm2 theme, powerline config). Import or copy as needed per tool. |
| Mac Keyboard Shortcuts.docx | Reference for custom Mac keyboard shortcuts. |
-
Clone the repo
git clone <repo-url> ~/WorkstationSetup && cd ~/WorkstationSetup
-
Install tools (macOS)
Ensure Homebrew is installed, then:./tools.sh
Edit
tools.shto comment out sections you don’t need (e.g. iOS, Microk8s, music apps) or just copy and paste selected commands into your terminal. -
Wire entrypoint config files
Keep the real home files machine-owned and source/include the repo-managed files from them.Example
~/.gitconfigon macOS:[include] path = ~/src/Three21/WorkstationSetup/git-config/gitconfig.shared [include] path = ~/src/Three21/WorkstationSetup/git-config/gitconfig.macos [include] path = ~/.gitconfig.local-machine
Example
~/.zshrc:source ~/src/Three21/WorkstationSetup/terminal-settings/zshrc.shared.sh
Check the current machine:
./verify-config.sh
-
Restore tool settings
Use each file intool-settings/according to the target app’s import/backup restore flow (e.g. VS Code: importvisual-studio-code.json; JetBrains: restore fromjetbrains-settings.zip).
- Entrypoints: Files like
~/.gitconfig,~/.zshrc,~/.bashrc, and PowerShell's profile should stay machine-owned so work tools can safely add managed settings. - Shared defaults: Repo-managed files ending in
.sharedare intended to behave the same across machines. - Platform overlays: Include exactly one Git platform overlay from
gitconfig.macos,gitconfig.linux, orgitconfig.windows. - Local-machine settings: Use
~/.gitconfig.local-machinefor Git settings that differ on this machine, such asmaintenance.repoentries or work-only overrides. - Shell local-machine config: Use
~/.zshrc.local-machine-config/~/.bashrc.local-machine-configfor values consumed by the shared config, such asWORKSPACEorGIT_REPOS. - Shell local-machine overrides: Use
~/.zshrc.local-machine-overrides/~/.bashrc.local-machine-overridesfor aliases, functions, PATH changes, or environment values that should override shared config. - PowerShell: The
pwshrc.shared.ps1and modules inps-modules/support both macOS (e.g. PowerShell installed via Homebrew) and Windows. PowerShell local-machine files use.pwshrc.local-machine-config.ps1and.pwshrc.local-machine-overrides.ps1.