Setup
~/git/dotfiles 기반으로 호스트별 머신 설정.
전제 조건
~/git/dotfiles존재해야 함. 없으면 중단.- hostname이 아래 표에 해당해야 함.
호스트별 설정
| Hostname | OS | stow 패키지 | 추가 설정 |
|---|---|---|---|
| axiom | macOS | base, axiom |
packages, stow, sops, Aperture |
| eve | macOS | base, eve |
packages, stow, sops, Aperture |
| mo | NixOS | base, mo |
packages (nixos-rebuild), sops, Aperture |
| girl | SteamOS | base, girl |
packages (mise) |
| walle | Proxmox (Debian) | base, walle |
packages (apt), sops |
| ava | Windows 10 | pwsh | 수동 (stow 미사용, windows/install.ps1) |
Workflow
1. dotfiles 존재 확인
if [ ! -d "$HOME/git/dotfiles" ]; then
echo "~/git/dotfiles를 찾을 수 없습니다. 먼저 clone 해주세요."
echo " git clone git@github.com:deuxksy/dotfiles.git ~/git/dotfiles"
exit 1
fi
2. hostname 감지
HOSTNAME=$(hostname -s 2>/dev/null || hostname | sed 's/\..*//')
case $HOSTNAME in
axiom|eve|mo|girl|walle) ;;
*)
echo "지원하지 않는 hostname: $HOSTNAME"
echo "지원 목록: axiom, eve, mo, girl, walle"
exit 1
;;
esac
3. 패키지 설치 (stow보다 먼저) — /infra:packages 위임
brew/nix/mise/apt가 stow를 포함한 시스템 패키지를 설치하므로 stow 배포 전에 실행해야 함.
상세 로직(Brewfile realpath 처리, nixos-rebuild, mise, apt)은 /infra:packages 스킬이 담당.
# macOS (axiom, eve) - Brewfile이 stow를 포함하므로 먼저 실행
# /infra:packages install — brew bundle (realpath 우선)
# NixOS (mo) - flake가 모든 패키지(stow 포함)를 관리
# sudo nixos-rebuild switch --flake ~/git/dotfiles/nix/nixos#mo
# SteamOS (girl) - mise로 런타임 설치
# cd ~/git/dotfiles/$HOSTNAME/scripts && ./setup.sh
# Proxmox/Debian (walle) - apt + 스크립트
# apt install -y stow sops
# cd ~/git/dotfiles/$HOSTNAME/scripts && ./install_nvtools.sh
4. stow 배포
cd ~/git/dotfiles
# 충돌 사전 확인
stow -t ~ --simulate --verbose base 2>&1
# 충돌이 있으면 사용자에게 확인 후 처리
# 옵션 1: 기존 파일 백업 후 제거
# 옵션 2: stow --adopt -t ~ (기존 파일을 dotfiles로 이동)
# 공통 (모든 호스트)
stow -t ~ base
# 호스트별
case $HOSTNAME in
axiom) stow -t ~ axiom ;;
eve) stow -t ~ eve ;;
mo) stow -t ~ mo ;;
girl) stow -t ~ girl ;;
walle) stow -t ~ walle ;;
esac
stow 충돌 시 --simulate --verbose로 먼저 확인. 사용자 승인 후에만 --adopt 사용.
5. secrets 복호화
# ~/.key 존재 확인
if [ ! -f ~/.key ]; then
echo "~/.key 파일이 없습니다. sops 복호화를 스킵합니다."
echo "age 키를 수동으로 배치해주세요."
else
# 복호화 성공 여부 확인
if ! sops -d ~/.key >/dev/null 2>&1; then
echo "~/.key 복호화 실패. age 키를 확인해주세요."
else
eval "$(sops -d ~/.key)"
fi
fi
# .env.sops 파일이 있는 경우 - 비원자적 덮어쓰기 방지
if [ -f ~/.hermes/.env.sops ]; then
TMPFILE=$(mktemp)
if sops -d ~/.hermes/.env.sops > "$TMPFILE" 2>/dev/null; then
install -m 600 "$TMPFILE" ~/.hermes/.env
rm -f "$TMPFILE"
else
rm -f "$TMPFILE"
echo "~/.hermes/.env.sops 복호화 실패. 스킵합니다."
fi
fi
6. Tailscale Aperture 설정
Tailscale Aperture을 AI 프록시로 사용. 설정은 sops로 관리되는 API key와 연동.
- Aperture이 이미 설정되어 있는지 확인
- 환경변수:
ANTHROPIC_BASE_URL등이 Aperture을 가리키는지 확인 - 상세 설정은
~/git/dotfiles/nix/nixos/hosts/mo/(mo) 또는~/.claude/(macOS) 참조
7. 결과 리포트
| 단계 | 상태 |
|---|---|
| dotfiles 확인 | OK |
| hostname 감지 | axiom |
| 패키지 설치 (/infra:packages) | OK |
| stow 배포 | OK (base, axiom) |
| sops 복호화 | OK |
| Aperture | OK |
참고
references/dotfiles-infra.md— 전체 호스트/하드웨어/네트워크/패키지 매니저 구조 요약references/dotfiles-ai-agents.md— Claude Code + OMC + 다중 에이전트 검증 워크플로우 규칙 요약
Key Rules
- ~/git/dotfiles 없으면 중단:
exit 1로 즉시 종료. 복구 불가 - 지원하지 않는 hostname이면 중단:
exit 1로 즉시 종료. 수동 설정 안내 - 패키지 설치 → stow 순서: brew/nix/mise가 stow를 설치하므로 패키지 설치 먼저. 패키지 설치는
/infra:packages로 위임 - stow 충돌 시 사용자 확인:
--simulate로 사전 확인.--adopt는 승인 후만 사용 - sops는 age 키 필요: 키 없으면 복호화 스킵하고 안내
- sops 덮어쓰기 안전: 임시 파일에 복호화 후
install -m 600으로 교체 - 한국어 리포트: 결과는 항상 한국어로 출력