Раньше, чтобы запустить одну и ту же конфигурацию Linux на трёх машинах, нужно было клонировать диск и надеяться, что оборудование совпадёт. Теперь стандартный подход: синхронизируйте dotfiles одним инструментом, храните список пакетов в Git и позвольте файлам синхронизироваться через отдельный канал. Эти семь приложений покрывают все три уровня — от синхронизации двух файлов ~/.zshrc до полной декларативной пересборки Nix.
На что обратить внимание при выборе инструмента синхронизации dotfiles
Несколько вопросов определяют структуру:
- Шаблонизация: нужны ли разные машинам разные конфиги из одного источника?
- Секреты: как обрабатываются SSH-ключи и токены API?
- Bootstrap: может ли он установить себя одной командой на новую машину?
- Управление пакетами: работает ли со apt, dnf, brew или nix?
- История: нужен ли обычный Git или собственный журнал?
Быстрое сравнение
| Приложение | Лучше всего для | Бесплатный тариф | Платный | Платформы | Выделяется |
|---|---|---|---|---|---|
| chezmoi | Шаблонные dotfiles с секретами | Да | Бесплатно | Linux, macOS, Windows | Шаблоны, шифрование, конфиги с учётом машины |
| GNU Stow | Ферма символических ссылок из Git-репо | Да | Бесплатно | Linux, macOS | Самый старый, простой рабочий процесс |
| yadm | Нативный Git для ваших dotfiles | Да | Бесплатно | Linux, macOS | Bootstrap-скрипт, альтернативные ветки на машину |
| dotbot | Декларативная установка символических ссылок через YAML | Да | Бесплатно | Linux, macOS | Кроссплатформенность, минимальный объём |
| Ansible | Полная конфигурация машины, не только dotfiles | Да | AAP платный | Linux, macOS, Windows | Один инструмент для флота или одного ноутбука |
| Syncthing | Непрерывная P2P-синхронизация файлов | Да | Бесплатно | Linux, macOS, Windows | Нет облака, прямая синхронизация между машинами |
| Nix Home Manager | Воспроизводимое окружение пользователя | Да | Бесплатно | Linux, macOS | Одна конфигурация даёт одинаковую установку всегда |
Приложения
1. chezmoi — лучший выбор для шаблонных dotfiles с секретами
chezmoi рассматривает ваши dotfiles как исходный код с шаблонами для каждой машины (Go text/template) и встроенным шифрованием через age или GPG. Один репозиторий покрывает ваш рабочий Mac, домашний Linux и headless-сервер, а различия (email, плагины редактора, рабочие записи) хранятся в условных операторах шаблонов.
Недостатки: Кривая обучения синтаксиса шаблонов. Слияние результата шаблона с управляемым системой файлом требует специального паттерна, который люди обычно постигают на собственном опыте.
Цена: Бесплатно, открытый исходный код.
Платформы: Linux, macOS, Windows.
Скачать: chezmoi
Вывод: Текущий стандарт для тех, кто вырос из простых symlink-скриптов.
2. GNU Stow — лучший выбор для самого простого рабочего процесса
GNU Stow был написан в 1994 году и по-прежнему делает одно: создаёт символические ссылки из каталога пакета в домашний каталог. Репозиторий dotfiles становится “пакетом” Stow, а stow zsh создаёт символические ссылки на его содержимое. Никаких шаблонов, секретов и магии.
Недостатки: Конфиги для конкретной машины требуют нескольких веток или пакетов на хост. Секреты должны храниться где-то ещё (зашифрованный раздел, менеджер паролей).
Цена: Бесплатно, открытый исходный код.
Платформы: Linux, macOS, Windows (через WSL).
Скачать: GNU Stow
Вывод: Правильный выбор, когда ваша конфигурация небольшая и вы никогда больше не хотите думать об инструменте синхронизации.
3. yadm — лучший выбор для обработки dotfiles как одного Git-репозитория
yadm (Yet Another Dotfiles Manager) — это Git плюс удобства, специфичные для dotfiles: bootstrap-скрипты, альтернативные файлы для каждого хоста или ОС, шифрование через GPG. Поскольку это на самом деле просто обёртка вокруг Git, всё, что вы уже знаете, работает.
Недостатки: Конвенция альтернативных файлов мощна, но менее очевидна, чем шаблонизация chezmoi. История шифрования проще, чем в tools на основе age.
Цена: Бесплатно, открытый исходный код.
Платформы: Linux, macOS.
Скачать: yadm
Вывод: Самый мягкий переход от обычного Git-репо с dotfiles.
4. dotbot — лучший выбор для декларативной небольшой конфигурации
dotbot читает YAML-файл установки и создаёт символические ссылки, клонирует репо и запускает shell-команды. Он достаточно мал, чтобы его можно было встроить в ваш репозиторий dotfiles, поэтому клонирование репо и запуск ./install — это вся установка на новой машине.
Недостатки: Нет шаблонизации. Нет встроенного шифрования. Сложные машины заканчиваются длинными файлами install.yaml, которые становятся трудно читать.
Цена: Бесплатно, открытый исходный код.
Платформы: Linux, macOS.
Скачать: dotbot на GitHub
Вывод: Правильный выбор, когда вы хотите декларативный файл установки и ничего больше.
5. Ansible — лучший выбор, когда конфигурация выходит за пределы домашнего каталога
Ansible управляет целыми машинами из набора playbooks. Для личной конфигурации один playbook устанавливает пакеты, устанавливает параметры ядра, размещает dotfiles и настраивает сервисы в одном проходе. Один и тот же playbook запускается на ноутбуке или узле homelabs.
Недостатки: Избыточно для чистой dotfile-задачи. Прогоны playbook медленнее, чем ферма symlink. YAML-усталость реальна, когда вы переходите за несколько сотен строк.
Цена: Бесплатно, открытый исходный код. Ansible Automation Platform платный корпоративный уровень.
Платформы: Linux, macOS, Windows.
Скачать: Ansible
Вывод: Инструмент для тех, кто хочет один рабочий процесс для своего ноутбука и серверов.
6. Syncthing — лучший выбор для файлов, не для конфигов
Syncthing — это P2P-синхронизация файлов, которая должна работать рядом с вашим менеджером dotfiles. Храните декларативные конфиги в Git, но позвольте Syncthing перемещать несколько сотен гигабайт Documents, Music и файлов проектов между машинами без участия облачного провайдера.
Недостатки: Это совсем не инструмент dotfiles. Принесите свои навыки разрешения конфликтов. Начальная синхронизация большой папки занимает столько времени, сколько позволяет самое медленное соединение.
Цена: Бесплатно, открытый исходный код.
Платформы: Linux, macOS, Windows.
Скачать: Syncthing
Вывод: Вторая половина реальной мультимашинной конфигурации, которую один инструмент dotfiles не заменит.
7. Nix Home Manager — лучший выбор для полной воспроизводимости
Nix Home Manager описывает всё ваше окружение пользователя в Nix-выражениях: пакеты, dotfiles, сервисы, всё. Новая машина получает nix run home-manager -- switch и поднимается идентично каждой другой машине в flake.
Недостатки: Кривая обучения Nix реальна. Некоторые проприетарные приложения не имеют Nix-пакетов. Откаты магичны, когда работают, и мучительны, когда канал ломается.
Цена: Бесплатно, открытый исходный код.
Платформы: Linux, macOS.
Скачать: Nix Home Manager
Вывод: Правильный выбор для тех, кто готов инвестировать в Nix с самого начала для истинной воспроизводимости.
Как выбрать правильный
- Если у вас один ноутбук и вы никогда больше не хотите об этом думать: GNU Stow или yadm.
- Если у вас три машины и одна из них рабочая: chezmoi.
- Если вы хотите декларативный bootstrap и ничего больше: dotbot.
- Если вы уже запускаете Ansible на серверах: расширьте один playbook на ноутбук.
- Если вам также нужно синхронизировать файлы данных: Syncthing вместе с любым из вышеперечисленных.
- Если вы хотите рабочий процесс перестройки из конфига: Nix Home Manager.
Часто задаваемые вопросы
Где я храню секреты в репозитории dotfiles? Никогда в открытом виде. chezmoi и yadm оба шифруют при хранении. Для обычных Git-репо используйте age или GPG на определённые файлы или храните секреты полностью вне репо.
Работают ли эти инструменты на macOS? Все инструменты в этом списке поддерживают macOS. Nix Home Manager и chezmoi наиболее дружественны к macOS.
Как я обрабатываю конфиги для конкретной машины? Шаблоны (chezmoi), альтернативные файлы (yadm), ветки (yadm и Stow) или блоки, охраняемые по хосту, в Ansible. Паттерн шаблонов масштабируется лучше всего, когда машин больше двух.
Должен ли я коммитить мой репо dotfiles публично? Только после аудита. Даже небольшой конфиг часто содержит email или рабочий alias. Приватный вариант безопаснее.
Как я синхронизирую файлы, которые постоянно меняются, например закладки браузера или историю shell? Syncthing, не инструмент dotfiles. Версионируемые dotfiles не любят почасовую пересборку.
Стоит ли учить Nix только ради dotfiles? Только для dotfiles — нет. Для любого, кто строит homelabs, dev containers и воспроизводимые сборки — да.