Skip to content

Repository files navigation

Setties

개인 macOS zsh 환경 설정을 담고 있는 저장소입니다.

남은 할 일

  • TODO.md 파일 참조

Prerequisites

  • Python 3.14+
  • uv
curl -LsSf https://astral.sh/uv/install.sh | sh

사용 방법

$ ./scripts/bootstrap.py --help

Quick verify

./v./scripts/bootstrap.py verify 의 shortcut 입니다. 환경 설정이 올바른지 빠르게 확인할 때 사용합니다.

$ ./v

Machine profiles

Machine-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/profiles

Profile 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.

Manual install steps

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..."

Source of truth

  • 설치 대상·설치 명령·사용/비사용 이유는 전부 scripts/deps.json이 단일 기준입니다. ./v가 각 엔트리의 installnotes를 출력하므로, 이 README는 "어디를 봐야 하는지"만 가리키도록 유지합니다.
  • 설치 대상이 아닌 시스템 상태 검사는 scripts/checks.json이 단일 기준입니다. 체크의 기대 상태와 profile selector를 바꿀 때는 Python 코드를 수정하지 않습니다.
  • 예: 컨테이너 런타임 선택(왜 Colima인지, 왜 Docker Desktop/podman을 설치하지 말아야 하는지)은 docker 엔트리의 notes에 담겨 있습니다.

Pre-commit

  • 커밋 전에 git fetch --prune <upstream remote>를 실행하고, 현재 브랜치가 upstream보다 뒤처져 있으면 커밋을 막습니다.
  • 네트워크 오류로 fetch를 못 해도 커밋을 막습니다. 의도적으로 최신 여부를 확인할 수 없으면 실패하도록 둔 정책입니다.
  • .zshrc/Users/<name> 또는 /home/<name> 형태의 하드코딩된 home 경로가 들어가면 실패합니다.
  • $HOME을 사용하도록 강제합니다.
  • 설치 후 훅 등록:
    • brew install pre-commit
    • pre-commit install --hook-type pre-commit --hook-type post-merge --hook-type post-rewrite

post-merge/post-rewrite 훅은 git pull 또는 git pull --rebase 이후 자동으로 ./v를 실행합니다.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages