Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

24.07.2024

Підготовка dotfiles з Chezmoi

Я досяг початкового успіху — зробив єдині dotfiles на дві системи macOS та одну Linux (а точніше, Codespace). Дійсно дуже допомогло те, що в Chezmoi є шаблони. Інакше я б все ще шукав власне рішення (та чомусь не маю єдиного вірного варіанту шаблонізатору.)

Приклад розбіжності: на macOS в мене налаштований підпис комітів з GPG. В Codespace підпис теж працює, але іншим способом: агентом, який був наданий оточенням. З шаблонами це дуже легко обійти: {{ if eq .chezmoi.os "darwin" }} та так далі.

Була проблема — в Codespace все відбувається повільніше. Розгортування dotfiles (а саме, встановлення залежностей) триває декілька хвилин. Це не так погано для користування, але жахливо для розробки, коли нічого ще не працює. Тому знайшов образ, який використовують Codespaces та написав скрипт, щоб запускати все локально в Docker, приблизно отак.

Причому з Chezmoi в мене система, де я можу внести правки з будь-якої з систем та розповсюдити їх на інші через git. Якби не було, то файли забруднюються локальними змінами та потім вже доведеться наново все збирати. (Як в мене вже траплялося.)

Для спрощення конфігурації корисно розбивати файли на менші, там, де це можливо. Сьогодні дізнався, що в .gitconfig теж є механізм include. Так само в конфігурації оболонки. Зокрема це дозволить обмежити використання шаблонів, та залишити незмінні частини “чистими”. Бо в шаблонів є значний недолік: вони зазвичай псують підсвітку синтаксису та інші інструменти редактору.