Skip to content

Latest commit

 

History

History
153 lines (113 loc) · 5.21 KB

dotfiles.md

File metadata and controls

153 lines (113 loc) · 5.21 KB

Dotfiles

Prerequis

Pour preparer l'atlelier de demain nous aurons besoin d'une machine virtuelle. Afin de gagner du temps il faut copier le dossier AtelierDP :

cd /
cd sgroinfre/cassie
cp -R sgoinfre/cassie/AtelierDP ~/sgoinfre/

Creer votre dotfiles

Les dotfiles sont simplement des fichiers de configuration utilisés par divers programmes sur un système Unix-like, tels que Linux ou macOS. Leur nom commence généralement par un point (.) pour les rendre cachés par défaut dans les listings de fichiers.

La gestion des dotfiles peut être simplifiée en utilisant des outils spécifiques, comme Git, pour les versionner et les synchroniser entre différentes machines. Cela permet aux utilisateurs de conserver une configuration cohérente de leur environnement de travail, même lorsqu'ils passent d'un système à un autre.

L'objectif de l'atelier d'aujourd'hui est de créer le votre, pour les étapes suivantes il existe des outils pour la maintenance de dofiles, mais pour comprendre au mieux leur fonctionnement nous le feront à la main :

  1. On crée un dossier dotfiles.
## Exemple on crée un dossier dotfiles dans notre $HOME
mkdir ~/dotfiles
cd ~/dotfiles
  1. Lister les conf que vous souhaitez ajouter dans votre dotfile. Pour cela je vous invite à check en fonction des outils que vous utilisez, pour récuperer leur conf. Exemple pour vscode : il vous faut le "settings.json", le "keybindings" et tous les ".json" dans le dossier snippets.

  2. Dans votre dossier dotfiles, organiser l'architecture comme vous le souhaitez.

# Par exemple pour moi :
    ~/dotfiles/
        /vscode/
        /nvim/
        /alacritty/
        /zsh/
        /scripts/
  1. Copier vos différentes conf dans les dossiers respectifs, puis supprimer l'ancien.
# Exemple pour VScode : 
    cp ~/.config/Code/User/settings.json ~/dotfiles/vscode/
    cp ~/.config/Code/User/keybindings.json ~/dotfiles/vscode/
    cp ~/.config/Code/User/snippets/c.json ~/dotfiles/vscode/
    rm ~/.config/Code/User/settings.json
    rm ~/.config/Code/User/keybindings.json
    rm ~/.config/Code/User/snippets/c.json
  1. On créer ensuite un lien symbolique vers le fichier dans notre dossier dotfiles
##          "ORIGIN"                            "lien symbolique"
ln -s ~/dotfiles/vscode/settings.json ~/.config/Code/User/settings.json
ln -s ~/dotfiles/vscode/keybindings.json ~/.config/Code/User/keybindings.json
ln -s ~/dotfiles/vscode/c.jsoni ~/.config/Code/User/snippets/c.json
  1. Pour les extensions
# pour save votre liste d'extension
code --list-extensions > ~/dotfiles/vscode/code_extensions
# pour installer votre liste d'extension
cat ~/dotfiles/vscode/code_extensions | xargs -L 1 code --install-extension
  1. On peut ensuite init notre repo git et finaliser sa création.
cd ~/dotfiles/
git init
git add .
git commit -m "first commit / add dotfiles"
git branch -M main
git remote add origin "your repo address"
git push
  1. (Optionnel) Vous pouvez faire un script pour automatiser les commits/push git quand vous faites des mises à jour.

Vous avez maintenant un dotfiles, avec vos configurations dessus. Si vous faites un changement dans votre conf, il vous suffit de git add / commit / push et les changements se feront sur vos differentes machines.

Il est possible d'automatiser cette tâche avec divers outils :

  • rcm qui s'occupe même de la création de lien symbolique.
  • Avec un Makefile(exemple)
  • Demain nous verrons avec ansible.

Si vous utilisez Clion, il vaut mieux utiliser Share IDE.

Tout ici est un exemple, à vous d'adapter en fonction de vos besoins et de votre environnement.

Petit plus

Pour vscode une maniere pour automotiser la creation de dotfiles : article

Je vous conseil grandement de faire un tour sur awesome-dotfiles. Dans ce repo vous trouver pleins d'outils et de tutoriels pour faire votre dotfiles, ainsi que pleins d'exemple de dotfiles.

Exemple de script
#!/bin/bash
############################
# .make.sh
# This script creates symlinks from the home directory to any desired dotfiles in ~/dotfiles
############################

########## Variables

dir=~/dotfiles                    # dotfiles directory
olddir=~/dotfiles_old             # old dotfiles backup directory
files="bashrc vimrc vim zshrc oh-my-zsh"    # list of files/folders to symlink in homedir

##########

# create dotfiles_old in homedir
echo "Creating $olddir for backup of any existing dotfiles in ~"
mkdir -p $olddir
echo "...done"

# change to the dotfiles directory
echo "Changing to the $dir directory"
cd $dir
echo "...done"

# move any existing dotfiles in homedir to dotfiles_old directory, then create symlinks 
for file in $files; do
    echo "Moving any existing dotfiles from ~ to $olddir"
    mv ~/.$file ~/dotfiles_old/
    echo "Creating symlink to $file in home directory."
    ln -s $dir/$file ~/.$file
done