Skip to content

Haelle/dotfiles

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.

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)

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

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 && 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

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.

NeoVim offline

Le script ./install-neovim-offline installe neovim, fzf et ripgrep via apt avec une config simple. Il reprend une partie des options, keymaps et autocommands de kickstart.nvim sans nécessiter internet. Il n'est pas aussi simple d'avoir un mode offline comme Fish car il y a trop de dépendances système et Mason & cie auto installe pleins de choses en background.

./install-neovim-offline
./install-neovim-offline --dry-run

La config est symlinquée depuis nvim-offline/ vers ~/.config/nvim.

Options

  • Leader : Space
  • Indentation : 2 espaces (expandtab)
  • Numéros de ligne, cursorline, scrolloff 10
  • Recherche smartcase, highlight search (Esc pour clear)
  • Undo persistant, clipboard système
  • Caractères invisibles affichés (tab, trailing spaces, nbsp)

Keymaps

  • quick save�
Raccourci Description
<Space>sn [S]earch [N]eovim config neovim (vsplit)
<Space>sk [S]earch [K]eymaps (fzf)
u [U]ndo
<C-r> [R]edo
<C-s> quick [S]ave file
<Space>sg [S]earch with [G]rep (récursif) w/ ripgrep + quickfix
<Space>sf [S]earch [F]ile by name (rg + fzf)
<C-Space> Autocomplétion (mots du buffer)
<Tab>/<S-Tab> Naviguer dans le menu de complétion
<Left>/<Right> Naviguer dans le menu de complétion
<C-y> [Y]es, accept selection in completion mode
<Esc> Clear search highlight
<C-w>Arrows Navigation entre splits
<C-w><S-Arrows> Déplacer les splits
<Esc><Esc> Quitter le mode terminal
gr [G]o to [R]eferences (rg + fzf)
gd [G]o to [D]efinition (fichier ouvert)
gf [G]o to [F]ile
<C-o> previous opened file
Tab next opened file
<Space>st [S]earch [T]ODO/FIXME/HACK/NOTE (fzf)
gcc Toggle comment ligne
gc Toggle comment sélection (visual)

Autocommands

  • Highlight on yank
  • Restauration de la position du curseur

Filetype detection

  • docker-compose.yml/yaml (et variantes)
  • .gitlab-ci.yml
  • values*.yml/yaml (Helm)
  • *.mdx → markdown

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors