chezmoi
Многие из нас используют в работе несколько компьютеров. И, конечно, используют если не одинаковые, то пересекающиеся наборы приложений и инструментов, которые требуют одинаковой конфигурации на всех машинах:
git
vim/nvim
tmux
editorconfig
karabiner
zsh
- и другие.
Обычно, конфигурационные файлы называются дотфайлами (dotfiles
) — их имена начинаются с точки (.
), что в мире
unix-подобных систем делает файл скрытым.
Эти файлы содержат описание конфигурации используемых утилит. Их требуется поддерживать на всех машинах в актуальном состоянии.
Самым простым решением чаще всего является создание git
-репозитория с названием dotfiles
, куда эти файлы
складываются в чистом виде. Тут возникает несколько проблем:
- Не удобно и не безопасно инициализировать такой репозиторий в корне домашнего каталога:
- Возрастает вероятность случайной публикации секретов, например, вашего приватного ключа.
- Работать с репозиторием, в котором большая часть файлов и каталогов либо игнорируется, либо не добавлена в индекс, будет очень неудобно.
- Если версионировать отдельные файлы, после каждой модификации их требуется обновлять вручную в самом репозитории и на других машинах по их собственным путям.
Менеджеры дотфайлов
Существует множество менеджеров дотфайлов, но я довольно давно остановил свой выбор на утилите chezmoi
.
Чем удобен этот менеджер?
- Он всё так же под капотом использует
git
. Это значит, что не потребуется изучать новый инструмент. - Под его ответственность попадают только те файлы, которые были явно добавлены пользователем.
- Имеет очень простой интерфейс командной строки. Одной команды
chezmoi apply
достаточно, чтобы получить все свежие изменения, если таковые есть. - Поддерживается шаблонизация файлов, а это значит, что можно опираться, скажем, на имя хоста, при формировании
определенных блоков файлов, например, на секцию
user
файла.gitconfig
. - Поддерживаются интерфейсы командной строки для доступа к секретам, например, к
bitwarden-cli
. Это позволяет держать секреты отдельно от самих дотфайлов и шаблонизировать их в процессе получения.
Далее я приведу короткий пример, как начать работу с chezmoi
. Для подробностей рекомендую обратиться к официальной
документации.
# Создаём репозиторий для хранения дотфайлов (по умолчанию ~/.local/share/chezmoi)
chezmoi init
# Добавляем под контроль файл
chezmoi add ~/.vimrc
# Переходим в сам репозиторий для добавления файла под контроль версий, если мы хотим сделать его доступным на других машинах
chezmoi cd
git add .
git ci -m "Add .vimrc"
# Публикуем изменения
git remote add origin https://github.com/$GITHUB_USERNAME/dotfiles.git
git push -u
Ваш персональный репозиторий dotfiles
может быть скрытым или использовать любой другой сервис.
Возможно, первые шаги с chezmoi
будут немного неочевидными или непривычными. Но чем дальше вы будете погружаться в
использование, чем активнее вы будете использовать возможности этого менеджера дотфайлов, тем шире будут раскрываться
его возможности.
Удачи с синхронизацией!