Easily moving Linux installs

Are you tired of having to reset all your app settings on a new install? Using a simple tool you will never have to reconfig your app settings again. Also adding new apps and programs are extremely simple and intuitive. Stop wasting your time and start using Chezmoi to restore your app settings. This isn’t meant to be a system backup but a settings backup.

Why Chezmoi

Chezmoi offers the most simplistic approach and versioning that is simply is my preferred solution over the other dot file tools below. Here is a brief diagram of how it works. Note: I do not use git from command line in my tutorial for commits and pushes

diagram.png

Notes about other dot file tools

  • GNU/Stow is a very popular one, but I don’t like using it because of its reliance on Symlinks
  • Bare GIT repos are also another way of doing this, but managing the files can be cumbersome
  • Git / Ansible playbooks a great way to deploy new systems, but can be complex to maintain and keep up to date.
  • Home Directory Backups many times end up backing up too much and overly bloat a new system or add in unwanted settings

Installation

First we install Chezmoi to the /bin folder. I recommend system wide below but you can also do the install to ~/.local/bin if you only want to install for current user

System-wide install /bin Recommended

su
cd /
sh -c "$(curl -fsLS chezmoi.io/get)"
exit

User install ~/.local/bin

cd ~/.local
sh -c "$(curl -fsLS chezmoi.io/get)"

Note: Most systems have ~/.local/bin, however a few do not

Setting up config repository

First Setup a new repository for your config files on GitHub

new-repo.png

I called mine “dotfiles” https://github.com/ChrisTitusTech/dotfiles

We now simply initialize chezmoi with that new GitHub repository

chezmoi init https://github.com/ChrisTitusTech/dotfiles

Adding files and Applying changes

chezmoi uses a git based aliases to add files and merge them. To add something to your dotconfigs you’d simply do this command as an example: chezmoi add .bashrc

This copies the file to the working directory ~/.local/share/chezmoi and allows it to be a part of your repository. Just like the name suggests, the working directory is where you should be doing all your edits once they are added.

Once you edit your file you need to “apply” it back to its home so they are used with chezmoi apply

What happens if you edit the “original” file in the home directory? simply merge that change with the working directory with chezmoi merge filename

Now you are done for the day and you want to submit the changes to the remote repo so you can apply these changes to your other computers. You simply change directory to chezmoi with chezmoi cd or cd ~/.local/share/chezmoi and git add files -> git commit -m "initial commit" -> git push in the command line. However, I really like the desktop application GitHub desktop and prefer to add the ~/.local/share/chezmoi directory to it and do the add, commit, and push in that GUI GitHub Directory shown below.

git-desktop.png