From 58301d04c22cfc50791bb8c38d13a3a842ec8bbb Mon Sep 17 00:00:00 2001 From: Anael Ginder Date: Fri, 18 Sep 2026 11:24:31 +0200 Subject: [PATCH] fix(dotfile): divers fix --- README.md | 38 +++++++++++++++++--------------------- install/install.sh | 13 ++++++++----- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 7ee69c6..6545fdd 100644 --- a/README.md +++ b/README.md @@ -15,22 +15,21 @@ Les fichiers de config sont gérés avec **Stow** plutôt que copiés directemen ## Contenu du dépôt ``` -. -├── dotfiles/ -│ ├── spaceship/ -│ │ └── spaceship.zsh # prompt zsh Spaceship -│ ├── zellij/ -│ │ ├── config.kdl # config principale zellij -│ │ └── layouts/ -│ │ └── default.kdl # layout par défaut -│ └── zsh/ -│ └── zshrc.perso # config zsh perso (linkée en ~/.zshrc.perso) +dotfiles/ (racine du dépôt) +├── spaceship/ +│ └── spaceship.zsh # prompt zsh Spaceship +├── zellij/ +│ ├── config.kdl # config principale zellij +│ └── layouts/ +│ └── default.kdl # layout par défaut +├── zsh/ +│ └── zshrc.perso # config zsh perso (linkée en ~/.zshrc.perso) ├── install/ │ └── install.sh # script d'installation / mise à jour └── README.md ``` -> **Note** : `dotfiles/` est un dépôt git séparé, à cloner manuellement à côté du dossier `install/` avant de lancer le script (voir ci-dessous). +Tout est réuni dans un seul dépôt git : les packages de configuration (`spaceship/`, `zellij/`, `zsh/`) et le script d'installation (`install/`) sont au même niveau. ## Prérequis @@ -42,16 +41,13 @@ Le script installe lui-même le reste (rust/cargo, zellij, stow, etc.) s'ils son ## Installation -### 1. Cloner ce dépôt et le dépôt de configuration +### 1. Cloner ce dépôt ```bash -git clone mon-setup -cd mon-setup -git clone dotfiles +git clone dotfiles +cd dotfiles ``` -L'arborescence doit ressembler à celle décrite plus haut, avec `dotfiles/` et `install/` côte à côte. - ### 2. Lancer le script d'installation ```bash @@ -65,7 +61,7 @@ Le script est idempotent et non destructif : si une configuration existe déjà 1. Installe les dépendances système (`stow`, `zsh`, `curl`, etc.) via `apt`. 2. Installe Rust (`rustup`) si `cargo` n'est pas déjà disponible. 3. Installe Zellij via `cargo` et lie sa configuration (`~/.config/zellij`) avec Stow. -4. Crée le lien symbolique `~/.zshrc.perso` vers `dotfiles/zsh/zshrc.perso`. +4. Crée le lien symbolique `~/.zshrc.perso` vers `zsh/zshrc.perso` (dans ce dépôt). 5. Clone (ou met à jour) Spaceship et lie sa configuration (`~/.config/spaceship`) avec Stow. 6. Installe des outils Rust additionnels : `bat`, `bottom`, `diskus`, `procs`, `cargo-update`. @@ -152,13 +148,13 @@ sudo apt install fzf ## Mettre à jour la configuration -Après avoir modifié un fichier dans `dotfiles/`, les changements sont immédiatement visibles (les fichiers cibles sont des liens symboliques). Il suffit de commit/push dans le dépôt `dotfiles` pour les partager avec d'autres machines : +Après avoir modifié un fichier du dépôt (`zellij/config.kdl`, `zsh/zshrc.perso`, etc.), les changements sont immédiatement visibles (les fichiers cibles sont des liens symboliques). Il suffit de commit/push pour les partager avec d'autres machines : ```bash -cd dotfiles git add -A git commit -m "update config" git push ``` -Sur une autre machine, un `git pull` dans `dotfiles/` suffit à récupérer les changements (pas besoin de relancer `install.sh`, sauf si un nouveau fichier a été ajouté). +Sur une autre machine, un `git pull` à la racine du dépôt suffit à récupérer les changements (pas besoin de relancer `install.sh`, sauf si un nouveau fichier de config a été ajouté). + diff --git a/install/install.sh b/install/install.sh index 1d975d3..66d3baf 100755 --- a/install/install.sh +++ b/install/install.sh @@ -3,12 +3,14 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -DOTFILES_DIR="$SCRIPT_DIR/../dotfiles" +# Racine du dépôt : install/ et les packages (zellij, spaceship, zsh) +# sont au même niveau, donc on remonte d'un seul cran depuis install/. +ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" log() { echo "[*] $*"; } err() { echo "Erreur: $*" >&2; } -# usage: stow_config +# usage: stow_config # Si le répertoire cible existe déjà, on ne touche à rien (idempotence # non-destructive) : on suppose que la config est déjà en place. stow_config() { @@ -23,7 +25,7 @@ stow_config() { mkdir -p "$target" log "Stow du package '$package' vers $target ..." - (cd "$DOTFILES_DIR" && stow -vSt "$target" "$package") + (cd "$ROOT_DIR" && stow -vSt "$target" "$package") } # --- 1. Dépendances système --- @@ -56,11 +58,11 @@ cargo install --locked zellij stow_config "zellij" "$HOME/.config/zellij" # --- 4. Zsh perso --- -# Le fichier reste nommé "zshrc.perso" (sans point) dans le dépôt dotfiles, +# Le fichier reste nommé "zshrc.perso" (sans point) dans le dépôt, # mais on veut un symlink caché ~/.zshrc.perso. stow ne permet pas ce # renommage nativement (sauf convention "dot-" qu'on ne veut pas imposer # au dépôt), donc on crée le symlink manuellement. -ZSHRC_PERSO_SRC="$DOTFILES_DIR/zsh/zshrc.perso" +ZSHRC_PERSO_SRC="$ROOT_DIR/zsh/zshrc.perso" ZSHRC_PERSO_DEST="$HOME/.zshrc.perso" if [ -e "$ZSHRC_PERSO_DEST" ] || [ -L "$ZSHRC_PERSO_DEST" ]; then @@ -95,3 +97,4 @@ log "Installation des outils Rust (bat, bottom, diskus, procs, cargo-update) ... cargo install --locked bat bottom diskus procs cargo-update log "Installation terminée avec succès." +