Bootstrap Mesin Baru
Dokumen ini untuk mesin macOS yang masih kosong, belum ada Homebrew, belum
ada repositori, belum ada konfigurasi apa pun. Kalau mesinmu sudah punya
repositori ini, cukup ikuti SETUP.md saja.
Prasyarat
- Mac dengan macOS 13 atau lebih baru
- Akses administrator
- Koneksi internet
- Kredensial git untuk repositori ini (repo privat, jadi
git clonetanpa kredensial akan gagal) - Layout keyboard US, bukan nonlocalized, karena
xcode-select --installmenampilkan tombol berbahasa Inggris
Perintah Tunggal
git clone <repo-url> ~/Developer/dotfiles
cd ~/Developer/dotfiles
bash scripts/bootstrap.sh
<repo-url>sengaja dibiarkan sebagai placeholder, sama seperti diREADME.md. Ganti dengan URL repositorimu.
Jalankan skrip sebagai pengguna biasa, jangan
sudo. Homebrew menolak dipasang sebagai root.
Pratinjau Dulu
Skrip ini mengubah mesin secara nyata, jadi pratinjau selalu lebih aman:
DRY_RUN=1 bash scripts/bootstrap.shDry-run mencetak rencana tiap langkah tanpa menyentuh filesystem: tidak
memanggil xcode-select --install, tidak memasang Homebrew, tidak meng-clone,
tidak menjalankan brew bundle.
Yang Perlu Diketahui Sebelum Menjalankan
Pada mesin yang benar-benar kosong, Xcode Command Line Tools belum ada. Langkah 1 memicu dialog sistem yang harus kamu tekan sendiri, lalu skrip berhenti dan meminta kamu mengulang perintahnya. Installer Homebrew sendiri juga butuh Command Line Tools, jadi melanjutkan di tengah dialog itu hanya akan menghasilkan error yang membingungkan.
Jadi di mesin kosong, jalankan perintahnya dua kali. Di mesin yang sudah punya Command Line Tools, sekali saja cukup.
Enam Langkah
| # | Langkah | Yang Terjadi |
|---|---|---|
| 1 | Xcode Command Line Tools | Cek xcode-select -p. Kalau kosong, jalankan xcode-select --install lalu berhenti dan minta diulang. |
| 2 | Homebrew | Paket manager dari brew.sh. Prefix ditentukan arsitektur: /opt/homebrew untuk Apple Silicon, /usr/local untuk Intel. |
| 3 | Clone repositori | Clone ke ~/Developer/dotfiles kalau direktori itu belum ada. Kalau sudah ada, dilewati tanpa perubahan. |
| 4 | Paket dari Brewfile | brew bundle memasang semua entri Brewfile. |
| 5 | Git hooks | make hooks memasang pre-commit hook. |
| 6 | Symlink dotfiles | make install menyambungkan konfigurasi ke beranda. |
Semua langkah idempotent. Menjalankan skrip berulang kali aman: yang sudah beres akan dilewati, bukan dipasang ulang.
Non-Interactive dan CI
Kalau variabel CI terisi, instalasi Homebrew berjalan dengan
NONINTERACTIVE=1 supaya tidak berhenti menunggu jawaban.
Skrip ini tetap tidak cocok untuk CI, karena langkah 1 memerlukan seseorang
menekan tombol Install di dialog sistem. Pada runner tanpa sesi GUI, dialog
itu tidak pernah tampil. Untuk CI, pasang Command Line Tools lebih dulu lewat
paket resmi yang diunduh atau machine image, pastikan xcode-select -p
sudah mengembalikan path, baru jalankan skrip tanpa DRY_RUN=1.
Verifikasi
cd ~/Developer/dotfiles
make verify # cek symlink
make lint # cek kualitas repomake verify akan mencetak satu baris untuk tiap entri di
scripts/lib/symlinks.sh. Semua harus bertanda OK.
Yang Tidak Dilakukan Skrip Ini
- Tidak menerapkan setelan animasi macOS. Jalankan
make macos. - Tidak memasang tool di luar Homebrew seperti
uvdanty. LihatTOOLCHAIN.md. - Tidak mengedit aplikasi yang dipasang manual lewat DMG, seperti Dia dan
Writer. Lihat
APPLICATIONS.md. - Tidak menyentuh file profil shell. Kalau
brewtidak ada di PATH setelah instalasi, skrip memberi perintah untuk menambahkannya sendiri.
Pemecahan Masalah
Clone gagal
Repo ini privat. Pilih salah satu, lalu ulangi:
# Pakai SSH
ssh-keygen -t ed25519 -C "email-kamu"
ssh-add ~/.ssh/id_ed25519
REPO_URL=git@github.com:aderamdani/dotfiles bash scripts/bootstrap.shbrew tidak ditemukan di PATH
eval "$(/opt/homebrew/bin/brew shellenv)" # Apple Silicon
eval "$(/usr/local/bin/brew shellenv)" # IntelSupaya permanen, tambahkan baris yang sama ke ~/.zprofile.
brew bundle gagal
Pesan Homebrew menyebut paket mana yang bermasalah. Perbaiki manual:
cd ~/Developer/dotfiles
brew bundle check --verbose # lihat yang belum terpasang
brew bundle --file=BrewfileDirektori repo sudah ada tapi bukan repositori dotfiles yang benar
Skrip tidak pernah menghapus atau menimpa direktori itu. Pindahkan manual lalu ulangi:
mv ~/Developer/dotfiles ~/Developer/dotfiles.lama
bash scripts/bootstrap.shmake install gagal karena file asli sudah ada
install.sh mencadangkan file yang sudah ada ke
~/.dotfiles-backup/<timestamp>/ sebelum menimpanya. Kalau muncul error
lain, jalankan make install DRY_RUN=1 untuk melihat rencana tanpa
mengubah apa pun.
Dialog Install tidak muncul
xcode-select --install kadang diam-diam tidak menampilkan dialog bila
instalasi sudah berjalan. Periksa:
xcode-select -pKalau path tetap kosong, unduh Command Line Tools manual dari
developer.apple.com/downloads dan pasang lewat dmg-nya.