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
neovimbehaviour consistent between devices (remaps, relative line numbers etc.); - Enable the same
zshaliases between devices; - Have a consistent
gitconfiguration between devices (e.g., so I don't need to manually configureuser.nameanduser.emailon every device); - Organise my different
ipythonprofiles and settings.
Also considering that:
- Some configuration should be shared between devices (e.g.,
gitconfig); - Some configuration would remain local (e.g., some specific
zshaliases).
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