개인 macOS zsh 환경 설정을 담고 있는 저장소입니다.
- TODO.md 파일 참조
- Python 3.14+
- uv
curl -LsSf https://astral.sh/uv/install.sh | sh$ ./scripts/bootstrap.py --help./v 는 ./scripts/bootstrap.py verify 의 shortcut 입니다. 환경 설정이 올바른지 빠르게 확인할 때 사용합니다.
$ ./vMachine-specific profiles live outside Git in ~/.config/setties/profiles.
Separate multiple profiles with whitespace or commas. For example, a personal
Mac that should not require remote-access services uses:
mkdir -p ~/.config/setties
printf 'personal\n' > ~/.config/setties/profilesProfile selectors in scripts/deps.json control dependencies. Selectors in
scripts/checks.json control non-dependency machine-state checks, including
whether remote-access services must be enabled or disabled. ./v reports which
entries are active or skipped for the current profile.
Some dependencies require sudo or interactive setup and cannot be automated by the bootstrap script.
# Go (official installer)
curl -fSL -o /tmp/go.pkg https://go.dev/dl/go1.26.0.darwin-arm64.pkg
sudo installer -pkg /tmp/go.pkg -target /
# Zoom
brew install --cask zoom
# RunCat (App Store only, no brew cask)
mas install 1429033973
# Remote-access setup (non-personal machines only)
# Remote Login (SSH)
sudo systemsetup -f -setremotelogin on
# Screen Sharing
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist
# Auto restart after power loss (for headless/SSH access)
sudo pmset -a autorestart 1
# Disable FileVault (prevents pre-boot password prompt blocking SSH after power loss)
sudo fdesetup disable
# Auto-login (skip login screen after boot so SSH is immediately available)
sudo defaults write /Library/Preferences/com.apple.loginwindow autoLoginUser echoja
# VS Code Settings Sync (built-in, requires interactive sign-in)
# Open VS Code → Cmd+Shift+P → "Settings Sync: Turn On..."- 설치 대상·설치 명령·사용/비사용 이유는 전부
scripts/deps.json이 단일 기준입니다../v가 각 엔트리의install과notes를 출력하므로, 이 README는 "어디를 봐야 하는지"만 가리키도록 유지합니다. - 설치 대상이 아닌 시스템 상태 검사는
scripts/checks.json이 단일 기준입니다. 체크의 기대 상태와 profile selector를 바꿀 때는 Python 코드를 수정하지 않습니다. - 예: 컨테이너 런타임 선택(왜 Colima인지, 왜 Docker Desktop/podman을 설치하지 말아야 하는지)은
docker엔트리의notes에 담겨 있습니다.
- 커밋 전에
git fetch --prune <upstream remote>를 실행하고, 현재 브랜치가 upstream보다 뒤처져 있으면 커밋을 막습니다. - 네트워크 오류로 fetch를 못 해도 커밋을 막습니다. 의도적으로 최신 여부를 확인할 수 없으면 실패하도록 둔 정책입니다.
.zshrc에/Users/<name>또는/home/<name>형태의 하드코딩된 home 경로가 들어가면 실패합니다.$HOME을 사용하도록 강제합니다.- 설치 후 훅 등록:
brew install pre-commitpre-commit install --hook-type pre-commit --hook-type post-merge --hook-type post-rewrite
post-merge/post-rewrite 훅은 git pull 또는 git pull --rebase 이후 자동으로 ./v를 실행합니다.