Skip to content

yanix2445/setup-macos

Repository files navigation

⚡️ setup-macos

Bootstrap ton Mac. Vite. Bien. Joli.
Un installateur TUI moderne pour Apple Silicon, propulsé par Homebrew et Bubble Tea.

macOS Apple Silicon Go 1.26 MIT License Latest release

📑 Sommaire

🎯 Pourquoi setup-macos ?

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 install sé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.

🚀 Installation

Une seule commande dans ton terminal :

curl -fsSL https://raw.githubusercontent.com/yanix2445/setup-macos/main/install.sh | bash

C'est tout. Le script télécharge le binaire, l'installe dans ~/.local/bin/, et tu peux lancer setup-macos immédiatement.

Installation de setup-macos via curl | bash
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-macos

Ce souci ne concerne pas l'installation via curl | bash ci-dessus : curl ne pose pas l'attribut quarantaine.

Ajouter au PATH

Si ~/.local/bin n'est pas déjà dans ton PATH, ajoute cette ligne à ton ~/.zshrc :

export PATH="$HOME/.local/bin:$PATH"

📸 La TUI en action

Le menu principal donne accès à 3 modes — chacun illustré ci-dessous.

Mode « Profil rapide »

Tu choisis un preset (dev-web, pentest…), tu valides, c'est parti.

Mode profil rapide : sélection d'un preset et installation

Mode « Parcourir & choisir »

Recherche fuzzy en temps réel sur tout le catalogue, avec panneau de preview pour chaque outil.

Mode parcourir : fuzzy picker avec preview live

Mode « Exporter en Brewfile »

Sélectionne tes outils, génère un Brewfile standard, partage-le ou applique-le sur un autre Mac via brew bundle.

Mode export : génération d'un Brewfile à partir d'une sélection

✨ Features

🎨 TUI moderne

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.

⚡ Installations parallèles

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.

🔍 Fuzzy search instantané

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.

📦 Profils prêts à l'emploi

5 presets pour différents usages : minimal, dev-web, dev-python, devops, pentest. Tu en choisis un, tu valides, c'est parti.

📝 Export Brewfile

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.

🩺 Doctor intégré

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.

🚀 Auto-update atomique

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.

📋 Profils inclus

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

🛠️ Usage

Mode interactif (TUI)

Lance sans argument pour ouvrir l'interface :

setup-macos

Raccourcis clavier

É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

Mode CLI (scripts, automation)

Tout ce que fait la TUI est accessible en commande directe. setup-macos --help affiche une aide bun-style, regroupée par usage :

Sortie de setup-macos --help : aide bun-style en français

# 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 update

⚙️ Catalogue personnalisé

Le 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.yaml

Voir catalog.yaml et profiles.yaml pour la structure attendue.

🗺️ Roadmap

✅ 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

❓ FAQ

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 :

  1. Parallélisme — 3 installations simultanées au lieu d'une queue séquentielle (2× à 3× plus rapide)
  2. Interactivité — fuzzy search, prévisualisation, sélection multiple, progress bars temps réel — pas juste du texte qui défile
  3. Profils versionnésprofiles.yaml est 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.

🤝 Contribuer

git clone https://github.com/yanix2445/setup-macos
cd setup-macos
make dev          # lance directement via `go run`, itération la plus rapide

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

📝 License

MIT — fais-en ce que tu veux.

Développé par Yanis Harrat, et propulsé par les outils fantastiques de Charm (Bubble Tea, Lipgloss).

About

Installateur TUI moderne pour outils macOS — Homebrew + Bubble Tea, en français, avec self-update

Topics

Resources

License

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors