Введение
Tuckr — это кроссплатформенный менеджер dotfiles, вдохновлённый GNU Stow и Git: он раскладывает конфиги по системе через симлинки, стараясь сделать управление «точками» максимально простым и без лишней магии. Он работает на Linux/BSD, macOS и Windows. В основе лежит подход Stow: вы храните файлы конфигураций в одном каталоге, а Tuckr создаёт ссылки в нужных местах (обычно в $HOME).
Ссылка на GitHub
https://github.com/RaphGL/Tuckr
Зачем нужен Tuckr и чем он отличается
- Минимальная кривая обучения: простая модель «пакетов» (групп конфигов), как в Stow.
- Никакой лишней “обвязки”: проект не пытается заменить git/rm/cp и другие стандартные утилиты.
- Кроссплатформенность: Linux, Windows, BSD и macOS.
- Проверка/валидация симлинков: можно быстро увидеть, что установлено и что сломано.
- Hooks: скрипты до/после развёртывания.
- Secrets (WIP): заготовка для работы с зашифрованными файлами.
Как устроен каталог dotfiles
Tuckr ожидает структуру без отдельного конфиг-файла для самого менеджера. Обычно используются такие каталоги:
-
Configs/
— сами dotfiles (по группам/программам)
-
Hooks/
— скрипты, которые запускаются до/после установки группы
-
Secrets/
— зашифрованные файлы (функция в состоянии WIP)
Пример структуры:
├── Configs
│ ├── tmux
│ └── zsh
├── Hooks
│ ├── tmux
│ └── zsh
└── Secrets
Внутри каждой группы структура повторяет то, как файлы должны лежать в
. Например, если tmux использует
, то в репозитории это будет так:
Где хранить dotfiles (пути по ОС)
Tuckr ищет каталог dotfiles в стандартных местах (можно выбрать «config path» или «home path»):
- Linux/BSD:
~/.config/dotfiles
или
~/.dotfiles - macOS:
~/Library/Application Support/dotfiles
или
~/.dotfiles - Windows:
%HomePath%\AppData\Roaming\dotfiles
или
%HomePath%\.dotfiles
Установка
Через Cargo (Rust)
Установка из GitHub:
Важно: бинарник окажется в
— добавьте его в
или перенесите в каталог, который уже находится в
Arch Linux (AUR)
macOS (Homebrew)
Windows
Для корректной работы симлинков на Windows нужно включить Developer Mode.
Примеры использования
Развернуть все группы
Развернуть всё, кроме одной группы (например, neovim)
Развернуть только выбранные группы
Развернуть и прогнать хуки (setup)
Удалить развернутые симлинки
Проверить статус
У status есть алиас s
Hooks: pre/post скрипты
Hooks запускаются до и после добавления группы. Скрипты до симлинков —
, после —
. Имя папки в
должно совпадать с именем группы в
.
Пример:
├── tmux
│ ├── pre.sh
│ └── post.sh
└── zsh
├── pre.sh
└── post.sh
Запуск хуков:
tuckr set *
Secrets (WIP)
Функция секретов находится в состоянии WIP, и проект предупреждает, что безопасность не гарантирована. Практичный вариант — шифровать проверенными инструментами (например, gpg) и подключать это через хуки.
Команды:
tuckr decrypt
Условное развёртывание (Conditional deployment)
Если часть конфигов нужна только на конкретной ОС, используйте суффиксы групп:
-
_linux
-
_macos
-
_windows
-
_wsl
-
_unix
Пример:
├── config
├── config_unix
├── config_linux
├── config_macos
├── config_windows
└── config_wsl
Переменные окружения в путях
Tuckr умеет подставлять переменные окружения: всё, что начинается с
, трактуется как env var.
Пример:
└── %PROGRAM_PATH
└── config.txt
Развёртывание «вне HOME» (Root targeting)
Если файл должен попасть, например, в
, используйте префикс ^ — он говорит Tuckr целиться в root.
Пример:
└── ^etc
└── crontab
FAQ
Что делать, если Tuckr не видит мои dotfiles?
Проверьте, что каталог находится в одном из стандартных путей (например,
или
на Linux) и что внутри есть
(а при необходимости
и
).
Можно ли мигрировать со Stow?
Да: удалите старые симлинки через
, приведите структуру репозитория к формату Tuckr и выполните
, затем проверьте результат командой
Почему на Windows не создаются симлинки?
Чаще всего потому, что не включён Developer Mode. Включите его, и повторите развёртывание.
Насколько безопасны Secrets?
Сейчас это WIP: проект предупреждает, что безопасность не гарантирована. Лучше использовать проверенные инструменты (например, gpg) через хуки.
Как развернуть всё, кроме одного пакета?
Используйте исключение
, например:
Как управлять конфигами для разных ОС в одном репозитории?
Используйте условные группы с суффиксами
— неподходящие для текущей ОС будут игнорироваться.
Вывод
Если вам нравится подход GNU Stow (простая структура + симлинки), но хочется чуть больше удобства — проверки ссылок, хуков, условных групп и кроссплатформенности — Tuckr выглядит как аккуратная «надстройка без лишнего веса».