# Tâche 2 — SJ-9 : Catalogue post-install (paquets de base, Docker officiel, partages, VM tools) > Statut : **implémenté** (2026-06-06). tsc 0 · 104 tests · build OK · boot OK (8 profils servis). > Réf. design : `docs/design/tache2/30-scripts-custom.md §2/§4`, `80-sous-jalons.md` SJ-9. > Clôt la tâche 2. Non testé en live (installe des paquets / Docker sur une vraie machine). ## Périmètre livré 6 profils ajoutés au registre + 4 templates. L'UI post-install (générique, SJ-8/tâche 3) les affiche et exécute **sans modification** — manifeste → formulaire → preview → run. - **Mécanisme `presetVars`** : variables fixes (non-champs) injectées au rendu, surchargées par les valeurs de formulaire. Permet des listes de paquets prédéfinies sans champ utilisateur. - **Templates** (`templates/custom/`) : - `install-package-groups.sh.tpl` (générique, `{{packages}}` shell-safe). - `docker-official-debian.sh.tpl` (clé GPG keyrings + docker.list par codename + paquets + groupe docker + dossier compose ; relogin/reboot signalés). - `sharing.sh.tpl` (Samba/NFS/mDNS via sections Mustache selon cases cochées). - `vm-guest-tools.sh.tpl` (`qemu-guest-agent` ou `open-vm-tools`). - **Manifestes** : `base_tools`, `network_tools`, `dev_git` (presetVars, sans champ, low) ; `docker_official` (medium, confirmation, champs dockerUser/composeRoot/reboot) ; `sharing` (medium, confirmation, bools Samba/NFS/mDNS) ; `vm_guest_tools` (low, select agent). - Tous émettent `PKG_INSTALLED=` / `SERVICE_ENABLED=` / `ERR=` → `buildPostInstallResult` (SJ-8) les parse sans changement. ## Tests 3 cas ajoutés : `base_tools` injecte bien sa liste fixe (preset), `sharing` ne rend que les paquets cochés (sections Mustache), `docker_official` exige confirmation. ## Bilan tâche 2 APT (SJ-0→3) · Docker scan/pull-check/apply-prune-down (SJ-4→6) · profils OS Proxmox/RPi + sonde + proxy persistant (SJ-7) · post-install moteur+bootstrap+identité (SJ-8) · catalogue post-install (SJ-9). **Volet moteur tâche 2 complet.** Catalogue détaillé/config fine (partages, presets réutilisables, `install_profiles`/`machine_profile_state` en base) = tâche 4.