Dotfiles_ArchAP/README.md

162 lines
5.8 KiB
Markdown

# ArchASP Dotfiles
Configuration de la couche utilisateur de la station Arch Linux ArchASP. Le
dépôt privilégie des fichiers lisibles, déployés par GNU Stow, et sépare
explicitement la session utilisateur de l'administration système.
## Overview
Ce dépôt gère Sway, les applications de terminal, le shell, les scripts
personnels et les unités systemd utilisateur. La configuration root, les
paquets de base, le stockage, le réseau, le boot et les helpers sous
`/usr/local` appartiennent au dépôt
[`arch-system`](https://git.labfytools.com/fy59/arch-system).
Certaines configurations restent liées à cette machine : sorties Sway,
périphériques, chemins sous `/home/fy59` et projets présents dans `Documents`.
Elles doivent être relues avant un déploiement sur un autre poste.
## Desktop Stack
La chaîne de session canonique est :
```text
greetd -> tuigreet -> UWSM -> Sway
```
Sway utilise sa barre native avec i3status-rs. Mako fournit les notifications,
Wofi le lanceur, Swaylock le verrouillage, wl-clipboard et Cliphist
l'historique du presse-papiers, et Kitty le terminal.
Le fichier `uwsm/.config/uwsm/default-id` sélectionne `sway.desktop`. La copie
de référence de la configuration root de greetd se trouve dans
`.assets/greetd/config.toml`; son installation réelle sous `/etc/greetd`
relève de `arch-system`.
## Shell Stack
Le shell interactif est Zsh. Son environnement associe Starship, Atuin, FZF,
Zoxide, Eza, Bat et Yazi. `.zprofile` démarre la session graphique via UWSM
lorsque celui-ci autorise un démarrage, et `.zshenv` publie le socket de
l'agent SSH utilisateur.
Les données Atuin, historiques de shell, clés, bases et états applicatifs ne
font pas partie du dépôt.
## Repository Layout
Chaque répertoire de premier niveau, hors `.assets` et `.git`, est un paquet
GNU Stow indépendant. Son contenu reproduit le chemin attendu depuis `$HOME` :
```text
kitty/.config/kitty/ -> ~/.config/kitty/
nvim/.config/nvim/ -> ~/.config/nvim/
sway/.config/sway/ -> ~/.config/sway/
bin/.local/bin/ -> ~/.local/bin/
systemd/.config/systemd/ -> ~/.config/systemd/
zsh/.zshrc -> ~/.zshrc
```
Les thèmes, icônes et wallpapers sont volontairement versionnés. `.assets`
contient les inventaires de reconstruction et des références système ; ce
n'est pas un paquet Stow.
## Deployment
Prérequis : Git, GNU Stow et les paquets décrits dans `.assets`. Cloner le
dépôt principal avec ses sous-modules :
```bash
git clone --recurse-submodules \
ssh://git@git.labfytools.com:2223/fy59/Dotfiles_ArchAP.git \
"$HOME/.dotfiles"
cd "$HOME/.dotfiles"
git submodule update --init --recursive
```
Construire la liste des paquets, puis commencer obligatoirement par un dry-run :
```bash
mapfile -t packages < <(
find . -mindepth 1 -maxdepth 1 -type d \
! -name .git ! -name .assets -printf '%f\n' | sort
)
stow --no --verbose=2 --target="$HOME" "${packages[@]}"
```
Après examen des conflits éventuels, effectuer le déploiement :
```bash
stow --verbose=2 --target="$HOME" "${packages[@]}"
```
Stow reçoit les noms des paquets. Il ne faut pas lancer `stow .`, car la
racine du dépôt n'est pas elle-même un paquet.
## Package Inventory
- `.assets/pkglist-pacman.txt` contient les paquets officiels explicitement
installés (`pacman -Qqen`).
- `.assets/pkglist-aur.txt` contient les paquets foreign/AUR explicitement
installés (`pacman -Qqem`).
- `.assets/external-tools.md` décrit Cargo, npm, builds manuels, projets locaux
et helpers système qui ne sont pas restaurés par Pacman.
Ces fichiers sont des instantanés, pas un programme d'installation. Leur
application et la validation des paquets AUR relèvent de la reconstruction du
système.
## Services
`.assets/enabled-services.txt` recense les services systemd système activés.
Les timers, sockets et paths sont séparés dans
`.assets/enabled-system-aux-units.txt` et
`.assets/enabled-user-aux-units.txt`. Leur activation côté système appartient
à `arch-system`.
Le paquet `systemd` contient les unités utilisateur et leurs liens
d'activation canoniques. Après déploiement ou modification :
```bash
systemctl --user daemon-reload
systemd-analyze --user verify ~/.config/systemd/user/*.service
```
Plusieurs unités lancent du code externe à ce dépôt, notamment Trainlog,
Lardon et Arch Sentinel. Leurs sources et builds doivent être restaurés aux
emplacements documentés dans `.assets/external-tools.md`.
## Secrets
Ne jamais versionner de clé SSH/GPG, `.netrc`, token, cookie, credential,
configuration Rclone ou `gh` privée, clé WireGuard, base Atuin, clé Atuin ou
secret Nextcloud. Les états et caches applicatifs restent sous `$HOME` et sont
exclus de Stow ou de Git.
Un contrôle du HEAD ne remplace pas une analyse de l'historique Git. Tout
secret ayant été commité doit être révoqué ou renouvelé avant une purge de
l'historique et avant la publication d'un miroir.
## Rebuilding ArchASP
Une reconstruction repose sur deux couches :
1. `arch-system` restaure la base Arch, les paquets, greetd, le réseau, le
stockage et les services root ;
2. ce dépôt restaure les sous-modules, fichiers Stow, scripts et unités
systemd utilisateur.
Restent manuels ou externes : installation des paquets AUR, outils Cargo/npm,
builds des projets dans `Documents`, OpenMVS local, helpers `/usr/local`,
secrets, données applicatives et activation contrôlée des unités. Le dépôt ne
prétend donc pas reconstruire seul une machine complète.
## Repository Mirrors
Forgejo est l'upstream principal et conserve le nom de remote `origin`.
GitHub, lorsqu'il sera configuré, sera un miroir secondaire nommé `github`.
Un historique contenant un secret ne doit jamais être envoyé vers ce miroir.
## License
Aucune licence n'est actuellement déclarée pour ce dépôt.