Dotfiles_ArchAP/docs/installation.md

156 lines
5 KiB
Markdown

# Installation
Ce guide déploie la couche utilisateur depuis un clone neuf. Il n'installe pas
Arch Linux, ne modifie pas `/etc` et n'automatise pas les dépendances externes.
Pour une reconstruction complète, commencer par [Recovery](recovery.md).
## 1. Prérequis
- une installation ArchASP dont la couche système est prête ;
- un compte utilisateur et un `$HOME` sauvegardé avant tout remplacement ;
- Git, GNU Stow et Bash ;
- un accès au dépôt Forgejo ou au miroir GitHub ;
- les paquets examinés dans les inventaires de `.assets/`.
Vérifier les outils avant de continuer :
```bash
git --version
stow --version
bash --version
```
## 2. Cloner
Forgejo est l'upstream principal :
```bash
git clone --recurse-submodules \
ssh://git@git.labfytools.com:2223/fy59/Dotfiles_ArchAP.git \
"$HOME/.dotfiles"
cd "$HOME/.dotfiles"
```
Le miroir public peut servir de source de récupération :
```bash
git clone --recurse-submodules \
https://github.com/labfytools/Dotfiles_ArchAP.git \
"$HOME/.dotfiles"
cd "$HOME/.dotfiles"
```
Pour restaurer le snapshot stable plutôt que `main` :
```bash
git switch 0.1.0
```
## 3. Vérifier les sous-modules
```bash
git submodule update --init --recursive
git submodule status --recursive
```
Une ligne commençant par `-` indique un sous-module non initialisé ; une ligne
commençant par `+` indique un commit différent de celui épinglé.
## 4. Examiner les inventaires
Les listes Pacman et AUR sont des snapshots, pas des commandes aveugles à
installer. Comparer leur contenu à la machine cible et lire
[`packages.md`](packages.md) ainsi que
[`external-tools.md`](../.assets/external-tools.md) avant toute installation.
## 5. Définir les 32 packages Stow
Les commandes suivantes sont destinées à Bash :
```bash
packages=(
atuin bat bin btop cliphist eza fastfetch fzf gtk-3.0 gtklock
hyprwhspr icons kitty mako nvim opencode portal qt5ct qt6ct
quickshell starship sway swaylock systemd themes tmux uwsm wallpapers wofi yazi
ytmusic-tui zsh
)
printf '%s\n' "${packages[@]}"
```
`docs/` et `.assets/` ne doivent pas être ajoutés à ce tableau. Le package
`portal` demande l'installation du backend décrite dans
[`portal/README.md`](../portal/README.md).
Le package
`quickshell` déploie `~/.config/quickshell/labfy-sway/` ; une Nerd Font
(`ttf-jetbrains-mono-nerd` sur cette machine) fournit les icônes.
SwayFX 0.6 est un paquet foreign/local à reconstruire depuis sa source
vérifiée ; `scenefx` et `quickshell` sont présents dans la liste Pacman
officielle de cette machine. Voir les inventaires `.assets/`.
QuickShell fournit l'agent graphique Polkit requis pour authentifier les
changements de fuseau effectués par `timedatectl`. Le service utilisateur
`quickshell-labfy-sway.service` le lance une seule fois par session ;
aucune règle `sudoers` propre au fuseau n'est nécessaire.
Le backend batterie exige TLP et `/usr/local/sbin/batlimit-set`, déployé
séparément avec les droits root selon `bin/root/README.md`.
## 6. Effectuer le dry-run
Depuis la racine du dépôt :
```bash
stow --no --verbose=2 --target="$HOME" "${packages[@]}"
```
Lire chaque conflit. Un fichier réel déjà présent à la cible peut masquer ou
bloquer un lien Stow ; le sauvegarder et décider explicitement de sa source
avant le déploiement. Ne pas utiliser d'option d'adoption sans audit préalable.
## 7. Déployer
Une fois le dry-run accepté :
```bash
stow --verbose=2 --target="$HOME" "${packages[@]}"
```
Cette commande crée ou met à jour des liens sous `$HOME`. Elle ne doit pas être
exécutée depuis une autre racine ni avec `.` comme nom de package.
## 8. Recharger systemd user
Les liens d'activation versionnés dans le package `systemd` expriment les
unités utilisateur attendues. Recharger et vérifier avant tout démarrage :
```bash
systemctl --user daemon-reload
systemd-analyze --user verify \
"$HOME"/.config/systemd/user/*.service \
"$HOME"/.config/systemd/user/*.timer
systemctl --user --failed
systemctl --user is-enabled quickshell-labfy-sway.service labfy-quickshell-updates.timer
systemctl --user is-active quickshell-labfy-sway.service labfy-quickshell-updates.timer
```
Si les liens `*.wants/` ne sont pas déjà en place sur la machine cible,
activer les unités avec `systemctl --user enable quickshell-labfy-sway.service
labfy-quickshell-updates.timer`. Dans une session SwayFX déjà ouverte, les
démarrer avec `systemctl --user start quickshell-labfy-sway.service
labfy-quickshell-updates.timer`. Le démarrage suivant est assuré par
`wayland-session@sway.desktop.target` et `timers.target`.
Certaines unités dépendent de projets externes. Ne les démarrer que lorsque
leurs chemins et configurations locales existent ; voir [`systemd.md`](systemd.md).
## 9. Valider
```bash
git status --short
git submodule status --recursive
find "$HOME/.config" -xtype l -print
systemctl --user --failed
sway --validate --config "$HOME/.config/sway/config"
```
La dernière commande nécessite Sway installé. Un lien cassé ou une unité en
échec doit être diagnostiqué avant de considérer la restauration terminée.