Bootstrap ton Mac. Vite. Bien. Joli.
Un installateur TUI moderne pour Apple Silicon, propulsé par Homebrew et Bubble Tea.
- Pourquoi setup-macos ?
- Installation
- La TUI en action
- Features
- Profils inclus
- Usage
- Catalogue personnalisé
- Roadmap
- FAQ
- Contribuer
- License
Fini les scripts bash de 800 lignes que personne ne relit. Fini les
brew installà la chaîne. Fini les Brewfile qu'on oublie de versionner.
| Avant 😩 | Avec setup-macos ⚡ |
|---|---|
| 800 lignes de bash que personne ne relit | curl | bash — 1 ligne, 2 minutes |
brew install séquentiel pendant 1 heure |
3 workers en parallèle, 3× plus rapide |
| Brewfile perdu dans un Notion | Profils versionnés dans le code |
| Tu refais tout à la main sur chaque Mac | Un profil = ton setup cloné partout |
- ⚡ Rapide — 3 workers parallèles[^workers], jusqu'à 3× plus vite que
brew installséquentiel - 🎨 Beau — TUI moderne avec recherche fuzzy, prévisualisation et progress bars en temps réel
- 🧠 Intelligent — détecte ce qui est déjà installé, propose des profils pré-configurés
- 🔄 Reproductible — exporte ton setup en Brewfile, partage-le, ou applique un profil tout fait
Pour qui ? Tous les devs Mac qui en ont marre de passer 2 heures à bootstrapper un nouveau poste.
Une seule commande dans ton terminal :
curl -fsSL https://raw.githubusercontent.com/yanix2445/setup-macos/main/install.sh | bashC'est tout. Le script télécharge le binaire, l'installe dans ~/.local/bin/, et tu peux lancer setup-macos immédiatement.
Le flow d'installation complet : download → SHA256 verify → install dans ~/.local/bin/.
Important
Compatibilité : conçu pour les Mac Apple Silicon (M1/M2/M3/M4) sur macOS 11 (Big Sur) ou plus récent. Requiert également Homebrew d'installé. [!NOTE] Téléchargement manuel ? Si tu récupères le binaire à la main depuis la page Releases (via Safari ou Chrome), macOS pose un attribut « quarantaine » qui déclenche un warning Gatekeeper « developer cannot be verified » au premier lancement. Le binaire n'est pas signé Apple Developer ID — c'est attendu.
Pour retirer la quarantaine avant le premier lancement :
xattr -d com.apple.quarantine ~/.local/bin/setup-macosCe souci ne concerne pas l'installation via curl | bash ci-dessus : curl ne pose pas l'attribut quarantaine.
Si ~/.local/bin n'est pas déjà dans ton PATH, ajoute cette ligne à ton ~/.zshrc :
export PATH="$HOME/.local/bin:$PATH"Le menu principal donne accès à 3 modes — chacun illustré ci-dessous.
Tu choisis un preset (dev-web, pentest…), tu valides, c'est parti.
Recherche fuzzy en temps réel sur tout le catalogue, avec panneau de preview pour chaque outil.
Sélectionne tes outils, génère un Brewfile standard, partage-le ou applique-le sur un autre Mac via brew bundle.
Une interface terminal fluide construite avec Bubble Tea et Lipgloss. Navigation au clavier, palette Bun-inspired, transitions douces. Pas un script bash qui crache du texte — une vraie app.
3 workers concurrents tournent en arrière-plan. Là où brew install enchaîne séquentiellement, setup-macos télécharge et compile 3 paquets à la fois. Gain mesuré : 2× à 3× sur un profil complet.
Tape git, dns ou pent — la liste se filtre en temps réel avec un panneau qui montre la description, la formule Homebrew, les tags et le statut d'installation.
5 presets pour différents usages : minimal, dev-web, dev-python, devops, pentest. Tu en choisis un, tu valides, c'est parti.
Tu veux cloner ton setup sur un autre Mac ? Exporte ta sélection en Brewfile standard, commit-le, et brew bundle n'importe où.
Note
Les outils sans formule Homebrew (ohmyzsh, p10k, etc.) sont écrits en commentaire dans le Brewfile — brew bundle les ignore. Pour les répliquer, relance setup-macos install <id> sur la machine cible.
La commande doctor valide ton catalogue YAML, vérifie l'état de Homebrew, et te dit si ton PATH est bien configuré. Diagnostic en 2 secondes.
setup-macos update fetch la dernière release sur GitHub et remplace le binaire en place. L'ancien est gardé en .bak au cas où. Zéro friction.
| ID | Pitch | Outils clés |
|---|---|---|
minimal |
Le strict nécessaire | Git, Zsh, Oh My Zsh, Powerlevel10k |
dev-web |
Stack JavaScript/TypeScript moderne | Node, pnpm, Bun, HTTPie, doggo, lazygit |
dev-python |
Setup Python rapide avec uv |
Python 3.14, uv, ruff, black, gitleaks |
devops |
Réseau, monitoring, sécu d'infra | mtr, trippy, gping, doggo, nmap, trivy |
pentest |
Boîte à outils offensive | nmap, masscan, nuclei, sqlmap, hydra |
Tip
Détails complets de chaque profil : setup-macos profile
Lance sans argument pour ouvrir l'interface :
setup-macos| Écran | Touches | Action |
|---|---|---|
| Menu | ↑/↓ ou j/k |
Naviguer |
| Menu | Entrée |
Valider |
| Menu | p / s / b |
Raccourcis directs (Profils, Search, Brewfile) |
| Menu | q ou Ctrl+C |
Quitter |
| Picker | ↑/↓ |
Naviguer dans la liste |
| Picker | Espace |
Cocher / décocher |
| Picker | Ctrl+A / Ctrl+N |
Tout cocher / tout décocher |
| Picker | Entrée |
Lancer l'installation |
| Picker | Échap |
Retour au menu |
| Installer | Échap |
Annuler |
Tout ce que fait la TUI est accessible en commande directe. setup-macos --help affiche une aide bun-style, regroupée par usage :
# Installer des outils par ID
setup-macos install git node pnpm lazygit
# Appliquer un profil complet
setup-macos profile dev-web
# Recherche fuzzy + fiche détaillée
setup-macos search dns
setup-macos info doggo
# Lister ce qui est installé
setup-macos list --installed
# Exporter en Brewfile
setup-macos export pentest ~/Brewfile
# Diagnostiquer
setup-macos doctor
# Se mettre à jour
setup-macos updateLe catalogue (catalog.yaml) et les profils (profiles.yaml) sont stockés dans ~/.local/share/setup-macos/. Tu peux les éditer directement pour ajouter tes propres outils.
Pour utiliser des fichiers custom sans toucher aux defaults :
setup-macos -C ~/mes-outils/catalog.yaml -P ~/mes-outils/profiles.yamlVoir catalog.yaml et profiles.yaml pour la structure attendue.
✅ Disponible
- TUI complète (menu, picker, installateur, export, doctor)
- 5 profils prêts à l'emploi
- Résolution des dépendances (
depends_on) avec tri topologique - Commande
doctor(validation catalogue, PATH, brew) - Commande
uninstall(cleanup complet et propre) - Export Brewfile
- Auto-update via GitHub Releases avec vérification SHA256 + attestation OIDC
- First-run bootstrap Homebrew automatique
- CI/CD de release automatisée (GitHub Actions, SLSA Level 3)
- Captures et GIFs de démo (voir
docs/screenshots/)
🚧 En cours
- Homebrew tap (
brew tap yanix2445/setup-macos)
📋 Planifié
- Signature Apple Developer ID + notarisation (zéro warning Gatekeeper, partout)
- Support des Mac Intel (
darwin-amd64) - Auto-update en arrière-plan (avec opt-out)
- Plus de profils communautaires (
data-science,mobile,gamedev…) - Plugin / hook system pour étendre le catalogue
Pourquoi pas de support Intel ?
Cible volontairement Apple Silicon (M1+) pour rester simple : un seul binaire darwin/arm64 couvre la grosse majorité du parc dev macOS actuel, et le projet date de 2024+. Le support Intel viendra si la demande existe — la cross-compile est triviale (GOOS=darwin GOARCH=amd64), c'est surtout une question de release pipeline à doubler.
Y a-t-il un warning Gatekeeper au lancement ?
Via curl | bash : non. curl ne pose pas l'attribut com.apple.quarantine, donc Gatekeeper ne s'active pas.
Via téléchargement manuel (Safari, Chrome, AirDrop) : oui, car ces apps posent la quarantaine. Solution : xattr -d com.apple.quarantine ~/.local/bin/setup-macos. Voir la section Installation pour le détail.
La signature Apple Developer ID (qui éliminerait ce souci partout) est dans la roadmap.
En quoi c'est mieux qu'un script bash + un Brewfile ?
Trois différences concrètes :
- Parallélisme — 3 installations simultanées au lieu d'une queue séquentielle (2× à 3× plus rapide)
- Interactivité — fuzzy search, prévisualisation, sélection multiple, progress bars temps réel — pas juste du texte qui défile
- Profils versionnés —
profiles.yamlest lisible, modifiable, partageable, contrairement à un Brewfile noyé dans un dotfiles repo
Et si tu veux quand même un Brewfile : setup-macos export <profil> t'en génère un.
Pourquoi 3 workers et pas plus ?
Hardcodé à 3 dans internal/brew/install.go pour deux raisons :
- Saturation réseau — au-delà de 3 downloads parallèles depuis les CDN Homebrew, le gain disparaît (latence + throttling)
- Saturation CPU — certaines formules compilent depuis les sources (
gcc,node, etc.). 3 compilations simultanées tiennent sur un M1, 8 plient la machine
Si tu as une raison de vouloir plus, ça se change facilement — ping-moi.
git clone https://github.com/yanix2445/setup-macos
cd setup-macos
make dev # lance directement via `go run`, itération la plus rapideAjouter un outil : édite catalog.yaml, ajoute une entrée avec id, name, desc, category, formula et check. Lance setup-macos doctor pour valider.
Pour l'architecture détaillée, le layout des packages et les conventions internes, voir CLAUDE.md. Pour le process de release, voir RELEASING.md.
MIT — fais-en ce que tu veux.
Développé par Yanis Harrat, et propulsé par les outils fantastiques de Charm (Bubble Tea, Lipgloss).



