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 будут немного неочевидными или непривычными. Но чем дальше вы будете погружаться в использование, чем активнее вы будете использовать возможности этого менеджера дотфайлов, тем шире будут раскрываться его возможности.

Удачи с синхронизацией!

Ссылки