docs: rewrite ArchASP dotfiles guide
This commit is contained in:
parent
c54d7d22bf
commit
75289913f6
2 changed files with 129 additions and 127 deletions
227
README.md
227
README.md
|
|
@ -1,161 +1,162 @@
|
|||
# Dotfiles ArchASP
|
||||
# ArchASP Dotfiles
|
||||
|
||||
Configurations utilisateur de mon poste principal sous **Arch Linux**, avec un environnement **Wayland / Sway**.
|
||||
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.
|
||||
|
||||
Ce dépôt contient uniquement les fichiers liés à ma session utilisateur.
|
||||
Les configurations système, les paquets, Btrfs, Snapper, Limine, TLP, nftables et les outils nécessitant les droits root sont gérés séparément dans le dépôt [`arch-system`](https://git.labfytools.com/fy59/arch-system).
|
||||
## Overview
|
||||
|
||||
## Environnement
|
||||
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).
|
||||
|
||||
- Arch Linux
|
||||
- Sway
|
||||
- Wayland
|
||||
- Kitty
|
||||
- Zsh
|
||||
- Neovim
|
||||
- PipeWire / WirePlumber
|
||||
- systemd utilisateur
|
||||
- GNU Stow pour le déploiement des fichiers
|
||||
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.
|
||||
|
||||
## Contenu
|
||||
## Desktop Stack
|
||||
|
||||
Le dépôt regroupe notamment :
|
||||
La chaîne de session canonique est :
|
||||
|
||||
```text
|
||||
.config/
|
||||
├── kitty/
|
||||
├── nvim/
|
||||
├── sway/
|
||||
├── systemd/user/
|
||||
└── ...
|
||||
|
||||
.local/
|
||||
├── bin/
|
||||
└── share/
|
||||
|
||||
.zshrc
|
||||
greetd -> tuigreet -> UWSM -> Sway
|
||||
```
|
||||
|
||||
### Scripts utilisateur
|
||||
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 dossier `~/.local/bin` contient plusieurs outils personnels, notamment :
|
||||
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`.
|
||||
|
||||
- gestion temporaire du seuil de charge de la batterie ;
|
||||
- synchronisation Nextcloud à la demande ;
|
||||
- lancement conjoint de Thunderbird et Proton Mail Bridge ;
|
||||
- démarrage et arrêt à la demande de VMware et Samba ;
|
||||
- notifications de batterie faible ;
|
||||
- outils de maintenance Arch et AUR ;
|
||||
- scripts liés à Sway, au presse-papiers et à la session Wayland.
|
||||
## Shell Stack
|
||||
|
||||
### Services systemd utilisateur
|
||||
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 unités présentes dans `.config/systemd/user/` permettent notamment de gérer :
|
||||
Les données Atuin, historiques de shell, clés, bases et états applicatifs ne
|
||||
font pas partie du dépôt.
|
||||
|
||||
- les notifications de batterie ;
|
||||
- Cliphist ;
|
||||
- GNOME Keyring ;
|
||||
- l’agent SSH ;
|
||||
- Swayidle ;
|
||||
- Wlsunset ;
|
||||
- Proton Mail Bridge ;
|
||||
- différents services propres à la session graphique.
|
||||
## Repository Layout
|
||||
|
||||
Les services lourds ou occasionnels ne sont pas démarrés en permanence.
|
||||
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` :
|
||||
|
||||
## Installation
|
||||
```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
|
||||
```
|
||||
|
||||
Cloner le dépôt dans le dossier personnel :
|
||||
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 \
|
||||
https://git.labfytools.com/fy59/Dotfiles_ArchAP.git \
|
||||
"$HOME/Dotfiles_ArchAP"
|
||||
|
||||
cd "$HOME/Dotfiles_ArchAP"
|
||||
git clone --recurse-submodules \
|
||||
ssh://git@git.labfytools.com:2223/fy59/Dotfiles_ArchAP.git \
|
||||
"$HOME/.dotfiles"
|
||||
cd "$HOME/.dotfiles"
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
Avant tout déploiement, vérifier les liens qui seraient créés :
|
||||
Construire la liste des paquets, puis commencer obligatoirement par un dry-run :
|
||||
|
||||
```bash
|
||||
stow --no --verbose --target="$HOME" .
|
||||
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[@]}"
|
||||
```
|
||||
|
||||
Puis appliquer les dotfiles :
|
||||
Après examen des conflits éventuels, effectuer le déploiement :
|
||||
|
||||
```bash
|
||||
stow --verbose --target="$HOME" .
|
||||
stow --verbose=2 --target="$HOME" "${packages[@]}"
|
||||
```
|
||||
|
||||
En cas de conflit avec des fichiers existants, les sauvegarder ou les comparer avant de les remplacer.
|
||||
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.
|
||||
|
||||
## Recharger la configuration
|
||||
## Package Inventory
|
||||
|
||||
Après une modification des unités systemd utilisateur :
|
||||
- `.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
|
||||
```
|
||||
|
||||
Pour réactiver les unités voulues :
|
||||
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`.
|
||||
|
||||
```bash
|
||||
systemctl --user enable --now NOM.service
|
||||
systemctl --user enable --now NOM.timer
|
||||
```
|
||||
## Secrets
|
||||
|
||||
Pour recharger Sway :
|
||||
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.
|
||||
|
||||
```bash
|
||||
swaymsg reload
|
||||
```
|
||||
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.
|
||||
|
||||
## Mise à jour du dépôt
|
||||
## Rebuilding ArchASP
|
||||
|
||||
Depuis le dépôt :
|
||||
Une reconstruction repose sur deux couches :
|
||||
|
||||
```bash
|
||||
git status
|
||||
git add -A
|
||||
git commit -m "chore: update user configuration"
|
||||
git push
|
||||
```
|
||||
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.
|
||||
|
||||
Les données sensibles ne doivent jamais être ajoutées au dépôt.
|
||||
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.
|
||||
|
||||
Sont notamment exclus :
|
||||
## Repository Mirrors
|
||||
|
||||
- clés SSH ;
|
||||
- mots de passe ;
|
||||
- jetons d’accès ;
|
||||
- fichiers `.netrc` ;
|
||||
- mots de passe d’application ;
|
||||
- clés WireGuard ;
|
||||
- bases de données personnelles ;
|
||||
- fichiers contenant des informations privées.
|
||||
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.
|
||||
|
||||
## Séparation avec `arch-system`
|
||||
## License
|
||||
|
||||
| Dépôt | Responsabilité |
|
||||
|---|---|
|
||||
| [`Dotfiles_ArchAP`](https://git.labfytools.com/fy59/Dotfiles_ArchAP) | Configuration utilisateur, Sway, Neovim, Kitty, Zsh, scripts et unités systemd utilisateur |
|
||||
| [`arch-system`](https://git.labfytools.com/fy59/arch-system) | Paquets, configuration système, Btrfs, Snapper, Limine, TLP, nftables, sudoers et helpers root |
|
||||
|
||||
Cette séparation évite de mélanger les fichiers personnels avec les éléments propres à l’installation du système.
|
||||
|
||||
## Avertissement
|
||||
|
||||
Ces fichiers correspondent à mon matériel, mon utilisateur et mon organisation personnelle.
|
||||
|
||||
Ils peuvent servir de référence, mais ne doivent pas être déployés tels quels sur une autre machine sans vérifier :
|
||||
|
||||
- les chemins ;
|
||||
- le nom d’utilisateur ;
|
||||
- les écrans et périphériques ;
|
||||
- les commandes disponibles ;
|
||||
- les unités systemd ;
|
||||
- les dépendances installées.
|
||||
|
||||
## Licence
|
||||
|
||||
Configuration personnelle fournie sans garantie.
|
||||
Aucune licence n'est actuellement déclarée pour ce dépôt.
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ Personal SwayFX configuration, modular and lightweight, designed for everyday Wa
|
|||
- swayfx
|
||||
- swaylock
|
||||
- swayidle
|
||||
- tlp
|
||||
- tlp-pd
|
||||
|
||||
### Bar and status
|
||||
- i3status-rs
|
||||
|
|
@ -85,7 +87,7 @@ Example:
|
|||
|
||||
The Sway bar is placed at the top and uses `i3status-rs` as its backend.
|
||||
|
||||
The `i3status.toml` file includes:
|
||||
The i3status-rust configuration includes:
|
||||
- workspaces,
|
||||
- focused window,
|
||||
- music,
|
||||
|
|
@ -101,10 +103,8 @@ The `i3status.toml` file includes:
|
|||
|
||||
## Autostart
|
||||
|
||||
On startup, the config launches:
|
||||
- `wlsunset` for blue light reduction,
|
||||
- `wl-paste --watch cliphist store` for clipboard history,
|
||||
- `swayidle` for automatic locking and screen power management.
|
||||
On startup, Sway launches the inactive-window transparency helper, LiMusic and
|
||||
`autotiling`. Wlsunset, Cliphist and swayidle are owned by user systemd units.
|
||||
|
||||
## Keybinds
|
||||
|
||||
|
|
@ -113,25 +113,26 @@ Some important shortcuts:
|
|||
- `Mod + q`: close the focused window.
|
||||
- `Mod + Shift + e`: exit Sway via `swaynag`.
|
||||
- `Mod + r`: resize mode.
|
||||
- `Mod + Shift + c`: reload the config.
|
||||
- `Mod + Ctrl + l`: lock the screen.
|
||||
- `Mod + Ctrl + r`: reload the config.
|
||||
- `Mod + Alt + o`: lock the screen.
|
||||
- `Print`: capture a selected area to the clipboard.
|
||||
- `Shift + Print`: capture the full screen to the clipboard.
|
||||
- `Mod + Ctrl + e`: launcher wofi
|
||||
- `Mod + v`: wofi cliphist
|
||||
- `Mod + F9``Mod + F10``Mod + F11`: power profiles
|
||||
- `Mod + Alt + l`: launcher Wofi.
|
||||
- `Mod + Alt + v`: Cliphist via Wofi.
|
||||
- `Mod + F9`, `Mod + F10`, `Mod + F11`: TLP power profiles.
|
||||
|
||||
## Power profiles
|
||||
|
||||
The bar includes a `powerprofilesctl` block with:
|
||||
The bar displays the current TLP and platform profiles. The related keybinds
|
||||
use the unprivileged `tlpctl` interface provided by `tlp-pd`:
|
||||
- `performance`,
|
||||
- `balanced`,
|
||||
- `power-saver`.
|
||||
|
||||
The related keybinds are:
|
||||
- `Mod + F9`: power-saver.
|
||||
- `Mod + F10`: balanced.
|
||||
- `Mod + F11`: performance.
|
||||
- `Mod + F9`: `tlpctl power-saver`.
|
||||
- `Mod + F10`: `tlpctl balanced`.
|
||||
- `Mod + F11`: `tlpctl performance`.
|
||||
|
||||
## Floating windows
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue