Введение
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)
Пример структуры:
dotfiles
├── Configs
│ ├── tmux
│ └── zsh
├── Hooks
│ ├── tmux
│ └── zsh
└── SecretsВнутри каждой группы структура повторяет то, как файлы должны лежать в
$HOME. Например, если tmux использует
~/.config/tmux/tmux.conf, то в репозитории это будет так:
Configs/tmux/.config/tmux/tmux.confГде хранить 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)
cargo install tuckrУстановка из GitHub:
cargo install --git https://github.com/RaphGL/Tuckr.gitВажно: бинарник окажется в
$HOME/.cargo/bin— добавьте его в
PATHили перенесите в каталог, который уже находится в
PATHArch Linux (AUR)
paru -S tuckr-gitmacOS (Homebrew)
brew install tuckrWindows
Для корректной работы симлинков на Windows нужно включить Developer Mode.
Примеры использования
Развернуть все группы
tuckr add \*Развернуть всё, кроме одной группы (например, neovim)
tuckr add \* -e neovimРазвернуть только выбранные группы
tuckr add neovim zshРазвернуть и прогнать хуки (setup)
tuckr set \*Удалить развернутые симлинки
tuckr rm \*Проверить статус
tuckr statusУ status есть алиас s
Hooks: pre/post скрипты
Hooks запускаются до и после добавления группы. Скрипты до симлинков —
pre*, после —
post*. Имя папки в
Hooks/должно совпадать с именем группы в
Configs/.
Пример:
Hooks
├── tmux
│ ├── pre.sh
│ └── post.sh
└── zsh
├── pre.sh
└── post.shЗапуск хуков:
tuckr set
tuckr set *Secrets (WIP)
Функция секретов находится в состоянии WIP, и проект предупреждает, что безопасность не гарантирована. Практичный вариант — шифровать проверенными инструментами (например, gpg) и подключать это через хуки.
Команды:
tuckr encrypt
tuckr decrypt Условное развёртывание (Conditional deployment)
Если часть конфигов нужна только на конкретной ОС, используйте суффиксы групп:
-
_linux -
_macos -
_windows -
_wsl -
_unix
Пример:
Configs
├── config
├── config_unix
├── config_linux
├── config_macos
├── config_windows
└── config_wslПеременные окружения в путях
Tuckr умеет подставлять переменные окружения: всё, что начинается с
%, трактуется как env var.
Пример:
program
└── %PROGRAM_PATH
└── config.txtРазвёртывание «вне HOME» (Root targeting)
Если файл должен попасть, например, в
/etc, используйте префикс ^ — он говорит Tuckr целиться в root.
Пример:
crontab
└── ^etc
└── crontabFAQ
Что делать, если Tuckr не видит мои dotfiles?
Проверьте, что каталог находится в одном из стандартных путей (например,
~/.dotfilesили
~/.config/dotfilesна Linux) и что внутри есть
Configs/(а при необходимости
Hooks/и
Secrets/).
Можно ли мигрировать со Stow?
Да: удалите старые симлинки через
stow --delete, приведите структуру репозитория к формату Tuckr и выполните
tuckr add \*, затем проверьте результат командой
tuckr statusПочему на Windows не создаются симлинки?
Чаще всего потому, что не включён Developer Mode. Включите его, и повторите развёртывание.
Насколько безопасны Secrets?
Сейчас это WIP: проект предупреждает, что безопасность не гарантирована. Лучше использовать проверенные инструменты (например, gpg) через хуки.
Как развернуть всё, кроме одного пакета?
Используйте исключение
-e, например:
tuckr add \* -e neovimКак управлять конфигами для разных ОС в одном репозитории?
Используйте условные группы с суффиксами
_linux/_macos/_windows/_wsl/_unix— неподходящие для текущей ОС будут игнорироваться.
Вывод
Если вам нравится подход GNU Stow (простая структура + симлинки), но хочется чуть больше удобства — проверки ссылок, хуков, условных групп и кроссплатформенности — Tuckr выглядит как аккуратная «надстройка без лишнего веса».