As a Linux user, I have a lot of non-GUI applications for which I configure their desired behaviour through config files. One of the troubles I have is that I have multiple devices from which I would like to use these applications with minimal impact on my workflow. Some examples:
- Make my
neovim
behaviour consistent between devices (remaps, relative line numbers etc.); - Enable the same
zsh
aliases between devices; - Have a consistent
git
configuration between devices (e.g., so I don't need to manually configureuser.name
anduser.email
on every device); - Organise my different
ipython
profiles and settings.
Also considering that:
- Some configuration should be shared between devices (e.g.,
git
config); - Some configuration would remain local (e.g., some specific
zsh
aliases).
What are available approaches to create, store and sync my configuration? On the most basic level, I was thinking about having a Git repository with different and multiple files under a local
and shared
subdirectories, which would then each be sourced on the application's default files on each machine. Is this a viable approach? If not, what would be the closest "manual" solution? Are there any specific software available to achieve this organisation?
Example of how this basic solution would be implemented today:
.
├── aliases.txt
├── git
├── ipython
│ ├── local
│ └── share
├── nvim
│ ├── local
│ │ ├── keymaps.lua
│ │ ├── options.lua
│ │ └── plugins.lua
│ └── share
├── pip
└── zsh
├── local
│ ├── aliases.zsh
│ ├── bindings.zsh
│ ├── config.zsh
│ ├── functions.zsh
│ └── prompt.zsh
└── share