fix(dotfile): divers fix
This commit is contained in:
@@ -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
|
## Contenu du dépôt
|
||||||
|
|
||||||
```
|
```
|
||||||
.
|
dotfiles/ (racine du dépôt)
|
||||||
├── dotfiles/
|
├── spaceship/
|
||||||
│ ├── spaceship/
|
│ └── spaceship.zsh # prompt zsh Spaceship
|
||||||
│ │ └── spaceship.zsh # prompt zsh Spaceship
|
├── zellij/
|
||||||
│ ├── zellij/
|
│ ├── config.kdl # config principale zellij
|
||||||
│ │ ├── config.kdl # config principale zellij
|
│ └── layouts/
|
||||||
│ │ └── layouts/
|
│ └── default.kdl # layout par défaut
|
||||||
│ │ └── default.kdl # layout par défaut
|
├── zsh/
|
||||||
│ └── zsh/
|
|
||||||
│ └── zshrc.perso # config zsh perso (linkée en ~/.zshrc.perso)
|
│ └── zshrc.perso # config zsh perso (linkée en ~/.zshrc.perso)
|
||||||
├── install/
|
├── install/
|
||||||
│ └── install.sh # script d'installation / mise à jour
|
│ └── install.sh # script d'installation / mise à jour
|
||||||
└── README.md
|
└── 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
|
## Prérequis
|
||||||
|
|
||||||
@@ -42,16 +41,13 @@ Le script installe lui-même le reste (rust/cargo, zellij, stow, etc.) s'ils son
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### 1. Cloner ce dépôt et le dépôt de configuration
|
### 1. Cloner ce dépôt
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <URL_DE_CE_DEPOT> mon-setup
|
git clone <URL_DE_CE_DEPOT> dotfiles
|
||||||
cd mon-setup
|
cd dotfiles
|
||||||
git clone <URL_DU_DEPOT_DOTFILES> dotfiles
|
|
||||||
```
|
```
|
||||||
|
|
||||||
L'arborescence doit ressembler à celle décrite plus haut, avec `dotfiles/` et `install/` côte à côte.
|
|
||||||
|
|
||||||
### 2. Lancer le script d'installation
|
### 2. Lancer le script d'installation
|
||||||
|
|
||||||
```bash
|
```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`.
|
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.
|
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.
|
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.
|
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`.
|
6. Installe des outils Rust additionnels : `bat`, `bottom`, `diskus`, `procs`, `cargo-update`.
|
||||||
|
|
||||||
@@ -152,13 +148,13 @@ sudo apt install fzf
|
|||||||
|
|
||||||
## Mettre à jour la configuration
|
## 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
|
```bash
|
||||||
cd dotfiles
|
|
||||||
git add -A
|
git add -A
|
||||||
git commit -m "update config"
|
git commit -m "update config"
|
||||||
git push
|
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é).
|
||||||
|
|
||||||
|
|||||||
+8
-5
@@ -3,12 +3,14 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
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 "[*] $*"; }
|
log() { echo "[*] $*"; }
|
||||||
err() { echo "Erreur: $*" >&2; }
|
err() { echo "Erreur: $*" >&2; }
|
||||||
|
|
||||||
# usage: stow_config <nom_package_dotfiles> <répertoire_cible>
|
# usage: stow_config <nom_package> <répertoire_cible>
|
||||||
# Si le répertoire cible existe déjà, on ne touche à rien (idempotence
|
# 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.
|
# non-destructive) : on suppose que la config est déjà en place.
|
||||||
stow_config() {
|
stow_config() {
|
||||||
@@ -23,7 +25,7 @@ stow_config() {
|
|||||||
mkdir -p "$target"
|
mkdir -p "$target"
|
||||||
|
|
||||||
log "Stow du package '$package' vers $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 ---
|
# --- 1. Dépendances système ---
|
||||||
@@ -56,11 +58,11 @@ cargo install --locked zellij
|
|||||||
stow_config "zellij" "$HOME/.config/zellij"
|
stow_config "zellij" "$HOME/.config/zellij"
|
||||||
|
|
||||||
# --- 4. Zsh perso ---
|
# --- 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
|
# mais on veut un symlink caché ~/.zshrc.perso. stow ne permet pas ce
|
||||||
# renommage nativement (sauf convention "dot-" qu'on ne veut pas imposer
|
# renommage nativement (sauf convention "dot-" qu'on ne veut pas imposer
|
||||||
# au dépôt), donc on crée le symlink manuellement.
|
# 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"
|
ZSHRC_PERSO_DEST="$HOME/.zshrc.perso"
|
||||||
|
|
||||||
if [ -e "$ZSHRC_PERSO_DEST" ] || [ -L "$ZSHRC_PERSO_DEST" ]; then
|
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
|
cargo install --locked bat bottom diskus procs cargo-update
|
||||||
|
|
||||||
log "Installation terminée avec succès."
|
log "Installation terminée avec succès."
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user