Personal dev environment configuration for macOS - Zsh, Ghostty, Neovim, Tmux, and supporting shell scripts.
macOS only. Linux is not supported.
Install these first before anything else.
Git - comes pre-installed on macOS. If missing:
xcode-select --installHomebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/HEAD/install.sh | bashbrew install ghostty ripgrep neovim tmux jq tig bat| NAME | VERSION |
|---|---|
| ghostty | 1.2.0 |
| tmux | 3.4 |
nvm install --lts
nvm use --ltsnpm install -g @anthropic-ai/claude-code corepack dts-generator http-server jsdoc-to-markdown jsdoc pdf2json prettier typescript yarn| NAME | VERSION |
|---|---|
| prettier | 3.6.2 |
Steps to configure Zsh, Ghostty, Neovim, Lazy, Prettier, and Tmux.
git clone https://github.com/michaeljymsgutierrez/bashrc-cg ~/bashrc-cgRequired for Ghostty and Neovim icons to render correctly.
cp ~/bashrc-cg/fonts/*.ttf ~/Library/Fonts/brew install fzfAdd to ~/.zshrc:
source ~/bashrc-cg/path.cgf
source ~/bashrc-cg/prompt.cgf
source ~/bashrc-cg/alias.cgfAdd to ~/.config/ghostty/config:
config-file = "~/bashrc-cg/ghostty.cgf"Custom GLSL shaders are available in shaders/. To enable one, uncomment the relevant custom-shader line in ghostty.cgf.
Add to ~/.config/nvim/init.lua:
local homeDirectory = os.getenv('HOME') .. '/bashrc-cg/nvim-cgf.lua'
local initNvimConfig = loadfile(homeDirectory)
if initNvimConfig then initNvimConfig() endAdd to ~/.tmux.conf:
source ~/bashrc-cg/tmux.cgfThe color theme (tmux-colors/cg-theme.tmux) is automatically sourced by tmux.cgf - no extra step needed.
cat ~/bashrc-cg/prettier.cgf > ~/.prettierrc
cat ~/bashrc-cg/lazy-lock.cgf > ~/.config/nvim/lazy-lock.json
cat ~/bashrc-cg/gitignore-global.cgf > ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_globalgit clone https://github.com/michaeljymsgutierrez/cg-claude ~/cg-claude
cd ~/cg-claude && ./pull.shpull.sh copies CLAUDE.md, skills/, and plugins/known_marketplaces.json from the repo into ~/.claude/. Run ./push.sh to sync changes back to the repo.
Utility scripts in shellscripts/ for system info, notifications, and maintenance. Used primarily as Tmux status bar widgets and system helpers.
| Script | Purpose |
|---|---|
| battery.sh | Battery level and status |
| cpu.sh | CPU usage |
| memory.sh | Memory usage |
| network.sh | Network interface info |
| date.sh / time.sh / timenow.sh | Date and time display |
| calendar-notification-count.sh | Calendar notification count |
| mail-notification-count.sh | Mail notification count |
| slack-notification-count.sh | Slack notification count |
| discord-notification.sh | Discord notification count |
| system-notification-count.sh | System-wide notification count |
| audio-restart.sh | Restart core audio |
| switch-ssh.sh | Switch between SSH key profiles |
| stopservices.sh | Stop common dev services |
| force-reboot.sh | Force system reboot |
| force-shutdown.sh | Force system shutdown |
| earth.sh / iconize-string.sh | Terminal icon/string helpers |
| set-icon.sh | Set app icon |
source ~/.zshrc # Apply Zsh changes
nvim # Launch Neovim