Skip to content

Repository files navigation

Dotfiles

Configuration personnelle pour environnement de développement (Ubuntu & Arch/CachyOS).

Quick Install

git clone https://github.com/Haelle/dotfiles.git ~/.dotfiles && cd ~/.dotfiles && ./install

Installation

./install

Mode dry-run

Pour visualiser les changements sans les appliquer :

./install --dry-run

Backups

Lors de l'installation, les fichiers existants sont sauvegardés dans :

~/.dotfiles/backup_YYYYMMDD_HHMMSS/

SSH

Configuration sécurisée avec :

  • Algorithmes forts uniquement (Ed25519, ChaCha20-Poly1305)
  • Multiplexing activé (connexions plus rapides via ~/.ssh/sockets/)
  • Keep-alive pour maintenir les connexions

Git

Configuration avec signature SSH des commits. Générer la clef :

ssh-keygen -t ed25519

L'ajouter dans le ~/.gitconfig.local :

[user]
  email = email@example.com
  signingkey = ~/.ssh/id_ed25519.pub

# vim: set ft=gitconfig:

La référencer dans les signataires autorisés :

mkdir -p ~/.config/git
echo "mail@example.com" $(cat ~/.ssh/id_ed25519.pub)" >> ~/.config/git/allowed_signers

Alias utiles

Alias Commande
git st status
git co checkout
git ci commit --verbose
git ca commit --amend
git fix commit --amend --no-edit
git lg Log compact avec couleurs
git lgs Log avec statut des signatures
git pf push --force-with-lease
git ds diff --staged

Fish Shell

Shell moderne avec autosuggestions et completions natives.

Post-installation Fish

fish                 # Entrer dans Fish
tide configure       # Configurer le prompt Tide
chsh -s $(which fish) # Définir Fish comme shell par défaut

Plugins installés

  • Tide - Prompt équivalent à Powerlevel10k
  • fzf.fish - Intégration fzf (Ctrl-R historique, Ctrl-T fichiers)
  • direnv - Variables d'environnement par dossier

Configs locales non versionnées

fish/conf.d/load-local.fish source automatiquement tous les *.fish de ~/.config/fish/local.d/ au démarrage. Idéal pour les secrets et configs spécifiques à une machine.

# ~/.config/fish/local.d/secrets.fish
set -gx GITHUB_PERSONAL_ACCESS_TOKEN ghp_xxxxxxxxxxxx
set -gx TFE_TOKEN xxxxxx

Aliases

Alias Commande
v nvim (fzf) - ouvrir fichier avec fzf
g git status (ou git <cmd> avec args)
jwt Décoder un token JWT
update-dotfiles Pull origin master des dotfiles (depuis n'importe où)
update-nvim Pull origin master de la config NeoVim
update-all Met à jour dotfiles + NeoVim

Raccourcis clavier

Raccourci Description
Alt-Up Remonter au dossier parent
Alt-S Préfixer la commande avec sudo
Ctrl-R Recherche dans l'historique
Ctrl-T Recherche de fichiers
Alt-C cd dans un dossier

Cheatsheet tmux

Sessions

Commande Description
tmux new -s nom Nouvelle session nom
tmux a -t nom Rattacher la session nom
tmux ls Lister les sessions
Ctrl-B d Détacher de la session

Fenêtres (onglets)

Raccourci Description
Ctrl-B c Nouvelle fenêtre
Ctrl-B , Renommer la fenêtre
Ctrl-B n Fenêtre suivante
Ctrl-B p Fenêtre précédente
Ctrl-B 1-9 Aller à la fenêtre N (clavier FR : Shift+1-9)
Ctrl-B w Explorer les fenêtres (vue arborescente)

Panes (splits)

Raccourci Description
Ctrl-B % Split vertical
Ctrl-B " Split horizontal
Ctrl-B ←↑↓→ Naviguer entre les panes

Note navigation : Après Ctrl-B ←↑↓→, il y a un court délai avant de récupérer le focus. Si vous appuyez sur ↑ trop vite pour l'historique des commandes, ça change de pane.

Resize

Méthode Description
Souris Glisser les bordures entre les panes
Ctrl-B Ctrl-←↑↓→ Redimensionner avec le clavier (maintenir Ctrl)

Scroll / Copie

Méthode Description
Molette souris Scroller dans l'historique
Ctrl-B PgUp-PgDn Scroller dans l'historique
Clic gauche + drag Sélectionner et copier dans le clipboard au relâchement
Ctrl-B ] Coller depuis le buffer tmux
Ctrl-Shift-V Coller depuis le clipboard système (raccourci terminal)

GNOME Terminal

Profil par défaut personnalisé (thème TokyoNight Night, police MesloLGS NF). GNOME Terminal ne stocke rien dans un fichier : tout vit dans dconf, donc le profil est exporté dans gnome-terminal/profile.dconf.

Restaurer le profil

dconf load /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ < gnome-terminal/profile.dconf

b1dcc9dd-… est l'UUID du profil par défaut, identique sur toute installation GNOME : la commande écrase donc le profil existant sans en créer un nouveau. La police MesloLGS NF doit être présente (fournie par le module Fish / l'export offline plus bas).

Ré-exporter après modification

Après avoir ajusté couleurs ou police dans les préférences GNOME Terminal :

dconf dump /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ > gnome-terminal/profile.dconf

ngrok

Tunnel sécurisé pour exposer un port local sur internet.

./install ngrok

Post-installation ngrok

ngrok config add-authtoken <TOKEN>  # Token depuis https://dashboard.ngrok.com

Utilisation

Commande Description
ngrok tcp 22 Tunnel TCP (ex: SSH)

Claude Code

Assistant IA en ligne de commande.

./install claude

Configuration seule (Docker sandbox)

git clone https://github.com/Haelle/dotfiles.git ~/.dotfiles && cd ~/.dotfiles && ./install-claude-conf

Ce qui est installé

  • Claude Code via le script officiel (si pas déjà présent)
  • asdf + Node.js (cf. section asdf ci-dessous) — requis pour les LSPs npm et le MCP svelte
  • CLAUDE.md global — instructions personnalisées (langue, style de code, git, sécurité)
  • Skills — collection de skills spécialisés (React, Python, DevOps, SQL, etc.)
  • Commands — commandes custom (/bugfix, /plan, /pr-review, /fix-latest-build, etc.)
  • Settings — configuration gérée (plugins LSP, statusline, permissions)
  • Statusline — script custom affichant modèle, usage quotidien, répertoire et branche git

Docker sandbox Claude

Une image custom est disponible pour charger ma configuration Claude quand il tourne dans un Docker sandbox :

docker build -t claude-alxs:latest -f container/Containerfile.claude .
docker sandbox create --template claude-alxs:latest claude .
docker sandbox run <sandbox>

Sécurité

Les fichiers sensibles sont bloqués en lecture par les settings :

  • .env, .env.*
  • *token*, *TOKEN*
  • master.key, sandbox.key, staging.key, production.key

asdf

Gestionnaire de runtimes (Node, NeoVim, etc.) — dépendance commune des modules claude et neovim.

Le binaire asdf est installé dans ~/.local/bin/asdf (téléchargé depuis GitHub releases) et la config fish (fish/conf.d/asdf.fish) ajoute ~/.asdf/shims au PATH.

Versions épinglées

Définies en haut de lib/asdf.sh pour rester synchrones entre les PC :

Variable Version actuelle Usage
NODE_VERSION 24.14.0 LSPs npm (Claude), MCP svelte

Pour mettre à jour : éditer la variable puis relancer ./install claude (ou ./install neovim).

Offline install

Pour git, tmux, ssh pas de dépendances offline, on peut donc cloner et faire :

./install git tmux ssh

Déploiement offline de Fish

Par contre Fish a besoin d'internet mais une installation locale peut être exportée car ça ne nécessite aucune dépendances qui ne soit dans un dépôt Debian/Ubuntu. Sur la machine source :

cp -rL ~/.config/fish /tmp/fish
# Retirer le source de Rust/Cargo : non dispo dans les dépôts Debian, donc absent
# en offline → sinon Fish lève une erreur "while sourcing ~/.cargo/env.fish" au démarrage.
rm -f /tmp/fish/conf.d/rustup.fish
tar czf fish.tar.gz -C /tmp fish && rm -rf /tmp/fish
tar czf meslo-nerd.tar.gz -C ~/.local/share/fonts Meslo

Sur la machine cible :

tar xzf fish.tar.gz -C ~/.config/
mkdir -p ~/.local/share/fonts && tar xzf meslo-nerd.tar.gz -C ~/.local/share/fonts/ && fc-cache -f ~/.local/share/fonts/Meslo
chsh -s $(which fish)

P.S: les dépendances sont fish, fzf, git, jq, tree et direnv. Elles sont installées si ./install git (et/ou) tmux (et/ou) ssh ont été installés. La police MesloLGS Nerd Font est nécessaire pour le prompt Tide (icônes) : sur Arch elle vient du paquet ttf-meslo-nerd, sur Ubuntu l'export ci-dessus la transfère depuis ~/.local/share/fonts/Meslo.

Conteneur de dev (offline)

Afin de travailler en offline ce conteneur contient tout ce qu'il faut pour que mon environnement de travail soit opérationnel.

podman build -f container/Containerfile -t dotfiles-dev .
cd /chemin/vers/projet
~/path/to/dotfiles/container/dev

container/dev monte le dossier courant sur /work et ouvre fish dedans, nvim/tmux/LSP prêts. Il monte aussi automatiquement, en lecture seule et seulement s'ils existent :

Hôte Conteneur Usage
dossier courant /work workspace
~/.gitconfig, ~/.gitconfig.local, ~/.gitconfig.*.local /home/ubuntu/… identité, alias, clé de signature
~/.config/git/allowed_signers idem vérification des signatures SSH
~/.ssh /home/ubuntu/.ssh clés pour committer et signer

Transport vers une machine hors-ligne

podman save dotfiles-dev -o dotfiles-dev.tar   # machine source
podman load -i dotfiles-dev.tar                # machine cible

Simian Programmer Plugin (SPP)

Plugin Claude Code qui force à garder la main sur le code pour ne pas perdre ses compétences. Idée : définir un % de commits humains à atteindre, sinon Claude passe en mode coaching au lieu d'écrire le code lui-même.

Repo : https://github.com/mlolson/claude-spp

Installation SPP

# installe le CLI npm et le plugin Claude
./install claude

Activer sur un projet

cd /chemin/projet
spp init

Crée la config locale (.spp/ ou similaire) et démarre le suivi.

Commandes principales

Commande Description
spp init Initialiser SPP dans le projet courant
spp stats Afficher le ratio humain/Claude et les statistiques
spp modes Lister les modes disponibles
spp mode [n] Voir ou changer le mode (1-2)
spp drive Toggle "drive mode" — tu codes, Claude se limite au coaching
spp settings Voir/modifier la config (target %, window, tracking…)
spp transcript Voir les transcripts live ou archivés
spp pause Suspendre l'enforcement pendant 24h
spp resume Reprendre l'enforcement
spp reset Reset du tracking au commit courant
/coach (dans Claude Code) Coaching sur la session drive courante

Config typique

spp settings expose notamment :

  • targetPercentage : part de commits humains visée (10, 25, 50, 100)
  • trackingMode : commits ou lines
  • statsWindow : oneDay, oneWeek, allTime
  • modeType : ex. weeklyGoal

SPP distingue les commits humains des commits Claude via le trailer Co-Authored-By: Claude. Sous la cible, Claude refuse d'écrire du code tant que le ratio n'est pas rattrapé.

Usage type (drive mode)

  1. spp drive — active le mode où Claude ne peut plus écrire de code.
  2. Code toi-même, pose des questions, demande des explications.
  3. À la fin de la session, /coach dans Claude pour obtenir un retour basé sur le transcript de la session.
  4. spp drive à nouveau pour désactiver.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages