<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Chezmoi on Цифровой сад и мастерская</title><link>https://lab.artkov-info.ru/tags/chezmoi/</link><description>Recent content in Chezmoi on Цифровой сад и мастерская</description><generator>Hugo -- gohugo.io</generator><language>ru-ru</language><lastBuildDate>Wed, 25 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://lab.artkov-info.ru/tags/chezmoi/index.xml" rel="self" type="application/rss+xml"/><item><title>Chezmoi: элегантное управление dot-файлами в Linux и Windows</title><link>https://lab.artkov-info.ru/2026/02/chezmoi-dotfiles-management/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://lab.artkov-info.ru/2026/02/chezmoi-dotfiles-management/</guid><description>&lt;img src="https://lab.artkov-info.ru/2026/02/chezmoi-dotfiles-management/chezmoi-dotfiles-management-cover.webp" alt="Featured image of post Chezmoi: элегантное управление dot-файлами в Linux и Windows" /&gt;&lt;p&gt;Управление конфигурационными файлами (&lt;code&gt;dotfiles&lt;/code&gt;) на нескольких машинах рано или поздно превращается в хаос. Обычный Git-репозиторий в домашней директории быстро замусоривается, симлинки ломаются на Windows, а хранить в открытом доступе токены или имена пользователей крайне небезопасно.&lt;/p&gt;
&lt;p&gt;Решением этой проблемы стал &lt;strong&gt;chezmoi&lt;/strong&gt; — современный менеджер dotfiles, написанный на Go. Он позволяет безопасно и системно управлять настройками в Linux, WSL и Windows.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="-в-чём-преимущество-chezmoi"&gt;🚀 В чём преимущество Chezmoi?
&lt;/h3&gt;&lt;p&gt;В отличие от традиционного подхода с симлинками, &lt;strong&gt;chezmoi&lt;/strong&gt; хранит целевые конфиги в отдельной директории (по умолчанию &lt;code&gt;~/.local/share/chezmoi&lt;/code&gt;) и применит изменения в реальную систему только по вашей команде.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Кроссплатформенность&lt;/strong&gt;: Одинаково эффективно работает в Unix-подобных системах, WSL и Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Шаблонизация на базе Go Templates&lt;/strong&gt;: Позволяет динамически подставлять переменные (имя пользователя, hostname, email) в зависимости от текущего хоста.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Безопасность&lt;/strong&gt;: Нативная поддержка шифрования секретных данных через &lt;code&gt;age&lt;/code&gt; или &lt;code&gt;GnuPG&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Автоматизация&lt;/strong&gt;: Возможность выполнения &lt;code&gt;run_once_&lt;/code&gt; скриптов установки пакетов при первом развертывании системы.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="-структура-и-организация-dotfiles"&gt;📦 Структура и организация dotfiles
&lt;/h3&gt;&lt;p&gt;Пример структуры репозитория dotfiles, управляемого chezmoi:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotfiles/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .chezmoi.toml.tmpl # Шаблон конфигурации chezmoi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .chezmoiignore # Игнорируемые файлы и директории
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── dot_bashrc # Превратится в ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── dot_gitconfig.tmpl # Шаблон ~/.gitconfig с переменными
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── private_dot_config/ # Превратится в ~/.config/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── helix/ # Конфигурация редактора Helix
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── starship/ # Настройки промпта Starship
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── wezterm/ # Кроссплатформенный терминал WezTerm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── run_once_after_10-base-packages.sh.tmpl # Установка CLI-пакетов (Linux/WSL)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── run_once_after_20-windows-packages.ps1.tmpl # Установка пакетов (Windows)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;div class="admonition note"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"&gt;&lt;path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Именование файлов&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Префиксы в именах файлов chezmoi указывают на их атрибуты в целевой системе: &lt;code&gt;dot_&lt;/code&gt; превращается в точку (&lt;code&gt;.bashrc&lt;/code&gt;), &lt;code&gt;private_&lt;/code&gt; создает приватную папку (&lt;code&gt;chmod 700&lt;/code&gt;), а &lt;code&gt;.tmpl&lt;/code&gt; включает генератор шаблонов.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;hr&gt;
&lt;h3 id="-быстрый-старт-и-инициализация"&gt;⚡ Быстрый старт и инициализация
&lt;/h3&gt;&lt;h4 id="linux--wsl"&gt;Linux / WSL
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Установка утилиты:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sh -c &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;curl -fsLS get.chezmoi.io&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -- -b ~/.local/bin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.local/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Инициализация из репозитория GitHub:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chezmoi init --apply &amp;lt;ваш-username&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="windows"&gt;Windows
&lt;/h4&gt;&lt;p&gt;В Windows удобнее всего использовать менеджер пакетов &lt;strong&gt;Scoop&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Set-ExecutionPolicy&lt;/span&gt; &lt;span class="n"&gt;-Scope&lt;/span&gt; &lt;span class="n"&gt;CurrentUser&lt;/span&gt; &lt;span class="n"&gt;-ExecutionPolicy&lt;/span&gt; &lt;span class="n"&gt;RemoteSigned&lt;/span&gt; &lt;span class="n"&gt;-Force&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;iwr &lt;/span&gt;&lt;span class="n"&gt;-useb&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;scoop&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;sh&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;scoop&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;chezmoi&lt;/span&gt; &lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;gh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Инициализация конфигурации в Git Bash:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;chezmoi&lt;/span&gt; &lt;span class="n"&gt;init&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-apply&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ваш-username&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="-шпаргалка-по-ежедневным-командам"&gt;🔄 Шпаргалка по ежедневным командам
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;Команда&lt;/th&gt;
					&lt;th style="text-align: left"&gt;Описание&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;code&gt;chezmoi edit ~/.bashrc&lt;/code&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Открыть файл в редакторе по умолчанию.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;code&gt;chezmoi diff&lt;/code&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Показать различия между репозиторием и текущей &lt;code&gt;$HOME&lt;/code&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;code&gt;chezmoi apply -v&lt;/code&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Применить изменения из исходников к рабочей системе.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;code&gt;chezmoi update&lt;/code&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Подтянуть изменения из Git и сразу применить их.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;code&gt;chezmoi add ~/.config/helix/&lt;/code&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Добавить новую директорию под управление chezmoi.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;code&gt;chezmoi cd&lt;/code&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Перейти в локальную рабочую директорию chezmoi.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id="-использование-шаблонов-templates"&gt;📊 Использование шаблонов (Templates)
&lt;/h3&gt;&lt;p&gt;Благодаря шаблонам Go вы можете использовать единый &lt;code&gt;dot_gitconfig.tmpl&lt;/code&gt; для всех своих устройств:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[user]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; name = {{ .name }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; email = {{ .email }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Переменные считываются из вашего персонального файла &lt;code&gt;.chezmoi.toml&lt;/code&gt; или вводятся через интерактивный промпт при инициализации.&lt;/p&gt;

 &lt;div class="admonition warning"&gt;
 &lt;div class="admonition-header"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path d="M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"/&gt;&lt;/svg&gt;
 &lt;span&gt;Внимание при работе со скриптами&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="admonition-content"&gt;
 &lt;p&gt;Скрипты с префиксом &lt;code&gt;run_once_&lt;/code&gt; запускаются автоматически только один раз. Перед их применением всегда проверяйте сгенерированный код командой &lt;code&gt;chezmoi execute-template &amp;lt; &amp;lt;file&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;На Windows для исключения случайно запущенных Bash-скриптов рекомендую выполнять компиляцию с параметром:
&lt;code&gt;chezmoi apply --exclude=scripts&lt;/code&gt;.&lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;&lt;hr&gt;
&lt;h3 id="-источники-и-ссылки"&gt;📚 Источники и ссылки
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;🌐 &lt;a class="link" href="https://www.chezmoi.io/" target="_blank" rel="noopener"
 &gt;Официальная документация Chezmoi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🛠 &lt;a class="link" href="https://github.com/The-Old-Cat/dotfiles" target="_blank" rel="noopener"
 &gt;Пример конфигурации dotfiles на GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>