<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Dotfiles on Home</title><link>https://yecnay.net/tags/dotfiles/</link><description>Recent content in Dotfiles on Home</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 15 Sep 2026 17:08:12 +0800</lastBuildDate><atom:link href="https://yecnay.net/tags/dotfiles/index.xml" rel="self" type="application/rss+xml"/><item><title>哪些dotfiles建议被chezmoi软件管理</title><link>https://yecnay.net/posts/tech/%E5%93%AA%E4%BA%9Bdotfiles%E5%BB%BA%E8%AE%AE%E8%A2%ABchezmoi%E8%BD%AF%E4%BB%B6%E7%AE%A1%E7%90%86/</link><pubDate>Tue, 15 Sep 2026 17:08:12 +0800</pubDate><guid>https://yecnay.net/posts/tech/%E5%93%AA%E4%BA%9Bdotfiles%E5%BB%BA%E8%AE%AE%E8%A2%ABchezmoi%E8%BD%AF%E4%BB%B6%E7%AE%A1%E7%90%86/</guid><description>&lt;p&gt;使用 &lt;code&gt;chezmoi&lt;/code&gt; 管理 dotfiles 时，核心原则是：&lt;strong&gt;只管理那些需要跨设备同步、版本控制且配置逻辑相对稳定的文件&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;以下是按优先级分类的 &lt;code&gt;chezmoi&lt;/code&gt; 最佳实践建议：&lt;/p&gt;
&lt;h3 id="-强烈推荐管理-核心配置"&gt;✅ 强烈推荐管理 (核心配置)&lt;/h3&gt;
&lt;p&gt;这些文件通常包含你的编辑器习惯、版本控制设置、系统偏好等，是 dotfiles 的“骨架”。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;编辑器配置&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.config/nvim/&lt;/code&gt; (Neovim)：你的 &lt;code&gt;init.vim&lt;/code&gt; 或 &lt;code&gt;init.lua&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.config/vim/&lt;/code&gt; (Vim)：&lt;code&gt;vimrc&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.config/karabiner/&lt;/code&gt; (Karabiner-Elements)：Mac 键盘映射。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.config/hypr/&lt;/code&gt; (Hyprland)：Hyprland 配置。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.config/fish/&lt;/code&gt; (Fish Shell)：&lt;code&gt;config.fish&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;版本控制与开发工具&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.gitconfig&lt;/code&gt;：Git 全局设置。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.ssh/&lt;/code&gt;：SSH 密钥和配置（注意：&lt;code&gt;chezmoi&lt;/code&gt; 会加密文件，但&lt;strong&gt;绝对不要&lt;/strong&gt;上传私钥 &lt;code&gt;id_rsa&lt;/code&gt; 等，建议仅管理 &lt;code&gt;config&lt;/code&gt; 和 &lt;code&gt;id_ed25519.pub&lt;/code&gt; 等公钥）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.config/starship.toml&lt;/code&gt;：Shell 提示符样式。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.config/tmux/&lt;/code&gt;：Tmux 配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统偏好&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.bashrc&lt;/code&gt; / &lt;code&gt;~/.zshrc&lt;/code&gt;：Shell 初始化（建议只管理 &lt;code&gt;source&lt;/code&gt; 的部分，或者确保逻辑清晰）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.config/gtk-3.0/settings.ini&lt;/code&gt;：GTK 外观配置。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.config/waybar/&lt;/code&gt;：Wayland 状态栏。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-谨慎管理-需特殊处理"&gt;⚠️ 谨慎管理 (需特殊处理)&lt;/h3&gt;
&lt;p&gt;这些文件容易因环境不同而失效，或者包含敏感信息。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;环境变量 (&lt;code&gt;~/.bashrc&lt;/code&gt;, &lt;code&gt;~/.zshrc&lt;/code&gt; 等)&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;建议&lt;/strong&gt;：不要直接在 &lt;code&gt;chezmoi&lt;/code&gt; 中写死 &lt;code&gt;export PATH=...&lt;/code&gt;。使用 &lt;code&gt;chezmoi&lt;/code&gt; 的 &lt;code&gt;{{ .chezmoi.os }}&lt;/code&gt; 或 &lt;code&gt;{{ .chezmoi.homeDir }}&lt;/code&gt; 模板功能来适配不同系统。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;技巧&lt;/strong&gt;：将环境变量提取到 &lt;code&gt;~/.config/chezmoi/chezmoi.toml&lt;/code&gt; 或单独的 &lt;code&gt;env.toml&lt;/code&gt; 模板文件中，通过 &lt;code&gt;chezmoi&lt;/code&gt; 生成 &lt;code&gt;~/.bashrc&lt;/code&gt; 时注入。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSH 密钥&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;绝对禁止&lt;/strong&gt;：将 &lt;code&gt;~/.ssh/id_rsa&lt;/code&gt; 等私钥放入 Git 仓库。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方案&lt;/strong&gt;：使用 &lt;code&gt;chezmoi&lt;/code&gt; 的加密功能（&lt;code&gt;chezmoi add --encrypted&lt;/code&gt;），或者更推荐的方式是：让 &lt;code&gt;chezmoi&lt;/code&gt; 生成 &lt;code&gt;~/.ssh/config&lt;/code&gt; 文件，而私钥通过其他安全渠道（如 &lt;code&gt;ssh-agent&lt;/code&gt; 或物理传输）在首次设置时生成。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地路径相关的配置&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;例如 &lt;code&gt;~/.config/spotify/scripts/...&lt;/code&gt; 或特定的 IDE 项目目录。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方案&lt;/strong&gt;：使用 &lt;code&gt;{{ .chezmoi.homeDir }}&lt;/code&gt; 变量来替代硬编码路径。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-不建议管理-动态或高度敏感"&gt;❌ 不建议管理 (动态或高度敏感)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自动生成的缓存文件&lt;/strong&gt;：&lt;code&gt;~/.cache/&lt;/code&gt;, &lt;code&gt;~/.local/share/&lt;/code&gt; 中的临时文件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密码管理器的核心数据库&lt;/strong&gt;：如 &lt;code&gt;~/.gnupg/&lt;/code&gt; (除非你非常清楚如何安全备份)，或者 &lt;code&gt;~/.password-store/&lt;/code&gt;（虽然可以管理，但需极度小心加密）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特定机器的硬件配置&lt;/strong&gt;：如 &lt;code&gt;~/.config/nvidia/&lt;/code&gt; 或 &lt;code&gt;~/.config/dconf/&lt;/code&gt; 中的某些硬件相关设置，如果不想每次切换设备都出问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;临时文件或日志&lt;/strong&gt;：&lt;code&gt;~/.config/termite/logs&lt;/code&gt; 等。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-进阶实践建议"&gt;🚀 进阶实践建议&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;使用 &lt;code&gt;~/.config/chezmoi/chezmoi.toml&lt;/code&gt;&lt;/strong&gt;
这是 &lt;code&gt;chezmoi&lt;/code&gt; 的主配置文件。你可以在这里定义：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的 Git 仓库 URL。&lt;/li&gt;
&lt;li&gt;加密密钥（如 &lt;code&gt;pgp&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;忽略规则（&lt;code&gt;ignore&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;目标路径的默认权限。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;利用模板功能 (Templates)&lt;/strong&gt;
&lt;code&gt;chezmoi&lt;/code&gt; 基于 Go 模板引擎。你可以创建 &lt;code&gt;~/.config/chezmoi/chezmoi.toml.tmpl&lt;/code&gt; 或 &lt;code&gt;.bashrc.tmpl&lt;/code&gt;，在其中使用变量：&lt;/p&gt;
&lt;div class="highlight"&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;# .bashrc.tmpl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;export PATH={{ .chezmoi.homeDir }}/bin:{{ .chezmoi.homeDir }}/go/bin:$PATH
&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;{{- if eq .chezmoi.os &amp;#34;darwin&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# macOS specific settings
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;export BROWSER=&amp;#34;open&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{- else if eq .chezmoi.os &amp;#34;linux&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Linux specific settings
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;export BROWSER=&amp;#34;xdg-open&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{- end }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;处理敏感数据&lt;/strong&gt;
使用 &lt;code&gt;chezmoi add --encrypted&lt;/code&gt; 将敏感配置文件（如包含 API Key 的 &lt;code&gt;credentials.toml&lt;/code&gt;）加密存储。在恢复时，&lt;code&gt;chezmoi&lt;/code&gt; 会自动解密并放到正确位置。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;目录结构建议&lt;/strong&gt;
保持仓库整洁，按功能分类：&lt;/p&gt;
&lt;div class="highlight"&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;├── .chezmoiexternals.toml # 外部依赖
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .chezmoiremote.toml # 远程配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .chezmoi.toml # 主配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .bashrc.tmpl # 模板
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .gitconfig.tmpl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── bin/ # 可执行脚本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── myscript.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── config/ # 应用配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── neovim/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ └── init.vim
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── fish/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── config.fish
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── secrets/ # 敏感数据 (加密)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── credentials.toml.enc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>如何使用chezmoi管理dotfiles数据</title><link>https://yecnay.net/posts/tech/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8chezmoi%E7%AE%A1%E7%90%86dotfiles%E6%95%B0%E6%8D%AE/</link><pubDate>Tue, 15 Sep 2026 17:08:12 +0800</pubDate><guid>https://yecnay.net/posts/tech/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8chezmoi%E7%AE%A1%E7%90%86dotfiles%E6%95%B0%E6%8D%AE/</guid><description>&lt;p&gt;使用 &lt;code&gt;chezmoi&lt;/code&gt; 管理 dotfiles 的核心流程可以分为 &lt;strong&gt;安装初始化&lt;/strong&gt;、&lt;strong&gt;添加文件&lt;/strong&gt;、&lt;strong&gt;编写模板/处理敏感数据&lt;/strong&gt;、&lt;strong&gt;同步应用&lt;/strong&gt; 四个阶段。&lt;/p&gt;
&lt;p&gt;以下是详细的操作指南，直接对应你之前提到的建议数据：&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="1-安装与初始化-setup"&gt;1. 安装与初始化 (Setup)&lt;/h3&gt;
&lt;p&gt;首先，你需要安装 &lt;code&gt;chezmoi&lt;/code&gt; 并将其指向你的 Git 仓库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;安装 (以 Homebrew 为例，Linux/Mac/Windows 均适用):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&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;&lt;span class="c1"&gt;# macOS / Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install chezmoi
&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="c1"&gt;# 或者使用官方脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&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 -fsSL https://raw.githubusercontent.com/twpayne/chezmoi/main/.github/install.sh&lt;span class="k"&gt;)&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;/div&gt;&lt;p&gt;&lt;strong&gt;初始化仓库:&lt;/strong&gt;
假设你的 dotfiles 仓库名为 &lt;code&gt;my-dotfiles&lt;/code&gt;，位于 &lt;code&gt;https://github.com/yourusername/my-dotfiles&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&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;&lt;span class="c1"&gt;# 生成一个新的本地目录并初始化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chezmoi init https://github.com/yourusername/my-dotfiles
&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="c1"&gt;# 或者手动克隆后初始化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/yourusername/my-dotfiles
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; my-dotfiles
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chezmoi init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此时，&lt;code&gt;chezmoi&lt;/code&gt; 会在你的家目录创建 &lt;code&gt;~/.local/share/chezmoi&lt;/code&gt; 作为&lt;strong&gt;源目录&lt;/strong&gt;（Source Directory），这是 &lt;code&gt;chezmoi&lt;/code&gt; 管理所有配置的核心仓库。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="2-添加现有文件-adding-files"&gt;2. 添加现有文件 (Adding Files)&lt;/h3&gt;
&lt;p&gt;当你在新电脑上安装完软件（如 Neovim, Git）后，它们的配置文件通常散落在 &lt;code&gt;~/.config/&lt;/code&gt; 或 &lt;code&gt;~/.&lt;/code&gt; 下。你可以使用 &lt;code&gt;chezmoi add&lt;/code&gt; 将它们纳入管理。&lt;/p&gt;</description></item></channel></rss>