Переехал с GNU Stow на Chezmoi — обсуждение добралось до Nix

Жалоба, которая запустила миграцию, крошечная и конкретная: симлинки работают в обе стороны, каждое редактирование сразу пишет обратно в репозиторий и незаметно делает дерево грязным. Исправление открыло 116-комментарный путь вверх по инструментальной лестнице.

Вкратце

Заметка объясняет, почему модель симлинков GNU Stow сломалась: правки текут обратно в репо через ссылку, а файлы вроде ~/.zprofile уже существуют к запуску Homebrew — Stow отказывается их брать. Chezmoi хранит копию и применяет шаблон, устраняя обе проблемы.

Потом тред сделал своё дело. Каждый Chezmoi-выбор получал ответ «ты в шести месяцах от Nix», тот — от разработчика, переписавшего Nix с нуля и назвавшего Home Manager «безнадёжно неверно спроектированным», а тот — от армии, которая просто кладёт git-репо в домашнюю папку и не смотрит назад.

Маленькая жалоба на симлинки — и полноценная инструментальная лестница

Обложка поста о миграции
Обложка поста о миграции

Заметка «Migrating from GNU Stow to Chezmoi» точна в описании проблемы. Stow управляет dotfiles, создавая симлинки из репозитория в домашнюю директорию, и претензия автора сугубо механическая:

«Симлинки работают в обе стороны. Каждое редактирование на каждой машине записывается прямо через ссылку в клон репозитория на этой машине.»

Вторая проблема — порядок загрузки: «К тому моменту, когда Homebrew и несколько инструментов отработают на новом Mac, файлы вроде ~/.zprofile и ~/.gitconfig уже существуют», а Stow не возьмёт файл, который уже есть. Chezmoi обходит обе проблемы: хранит исходную копию и применяет её (с шаблонизацией для отличий между машинами), а не создаёт ссылки. Это вся статья. Интересное начинается в 116-комментарном треде — он превращается в лестницу статусов.

Каждая ступень продаёт следующий инструмент

Повторяющийся приём: что бы ты ни использовал, кто-то настаивает, что этажом выше — твоё настоящее место.

«Как только доходишь до стадии Chezmoi, ты в шести месяцах от Nix и Home Manager. Зачем карабкаться почти на вершину горы и просто садиться?» — pkulak, инженер в Vevo

Лестница сгибается и в обратном направлении, и самый авторитетный голос здесь — предупреждение, а не похвала.

«Я переписал nix с нуля… Я не могу рекомендовать его в нынешнем виде… home-manager — пожалуй, самый наглядный пример инструмента, который безнадёжно неверно спроектирован, а «ты держишь его не так» со стороны сообщества — это проблема сообщества, а не чья-то проблема с держанием.» — разработчик, переписавший Nix с нуля

Давний контрибьютор Chezmoi занял среднюю позицию из личного опыта: «Я каждый раз отскакивал от Nix… Учитывая, что у Chezmoi есть первоклассная интеграция с менеджерами секретов, подозреваю, что он умеет то, чего Home Manager не может».

Грязное дерево — это баг или фича?

Главная претензия автора — симлинки незаметно оставляют репо грязным — была перевёрнута в достоинство теми, кто никогда не покидает рабочее дерево.

«Для меня это ключевая фича. Если файл отредактирован, git показывает его грязным, и я сам решаю: откатить или закоммитить. Никаких лишних шагов.» — разработчик, хранящий dotfiles в обычном git-репо

Возражение точно зафиксировало, когда это ломается — и оно совпадает с болью автора:

«Ты редко видишь статус git dirty/clean, потому что почти никогда не находишься внутри рабочего дерева git… Спустя месяцы заходишь в ~/.dotfiles — а дерево грязное, с кучей случайных правок, о которых ты уже не помнишь.» — kelnos, ключевой разработчик Xfce

Эргономика самого Chezmoi тоже получила критику: несколько долгосрочных пользователей признали, что chezmoi edit так и не стало мышечной памятью. Они редактируют живой файл, забывают, и в итоге всё равно мержат диффы — то же трение, только в новой обёртке.

Молчаливое большинство: git-репо и двенадцать строк Shell

Под инструментальной войной сидит большой невозмутимый лагерь, считающий всё это пространство перестроенным. Один ответ сформулировал прямо: «Я никогда не понимал, зачем люди так усложняют, если можно просто положить git-репо в домашнюю директорию». Тред полон таких голосов: make dotfiles, создающий симлинки за пять минут; rsync всей домашней директории между ноутбуками 15 лет подряд; Syncthing, следящий за репо через inotify. Плюс yadm, rcm, mise и дюжина самописных POSIX-скриптов. Контраргумент против «просто используй git» столь же краток: «Git работает, пока не нужна условная логика: файлы для конкретной платформы или шаблонизация». Даже мейнтейнер mise зашёл показать новые функции загрузки и без подсказок признал, что chezmoi — «любимец сообщества».

Что лестница на самом деле измеряет

Если снять с рекомендаций шелуху, они не про dotfiles. Это прокси: сколько сложности ты готов нести, чтобы новая машина ощущалась родной. Настоящий урок заметки дёшев: симлинки Stow ломаются двумя конкретными, называемыми способами (правки текут назад, уже существующие файлы блокируют принятие), и любой инструмент с моделью копирования или шаблонов исправляет оба. Всё выше — шаблонизация Chezmoi, Home Manager, Nix с нуля — даёт мощь для каждой машины ценой усложнения, которое тред сам не может назвать оправданным. Один из комментаторов замкнул круг идеально: прочитав тред, он бросил работающую настройку Stow, посмотрел на Chezmoi, затем убедил себя, что хочет Nix. «Это и есть опыт HN».

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 24 из 31 Читать дальше
🚀Tech

Беспромптовый OAuth убивает экран согласия MCP, и мейнтейнеры пришли в тред

Боль MCP — танец согласия с каждым сервером: авторизуй каждый инструмент, перепутай личные и корпоративные аккаунты, не оставь службе безопасности никакого центрального следа. Enterprise-Managed Authorization переносит решение в провайдер удостоверений — экран больше не появляется.

★ 188 · 💬 65 · blog.modelcontextprotocol.io · 4 мин