修改自 Isoheptane/dotfiles。
由 chezmoi 管理。
首先安装 chezmoi:
# 大多数系统
curl -sfL https://git.io/chezmoi | sh
# 或使用包管理器
# NixOS: nix-env -iA nixpkgs.chezmoi
# macOS: brew install chezmoi
# Arch: pacman -S chezmoi
# Ubuntu/Debian: apt install chezmoi# 一键克隆并应用
chezmoi init --apply https://github.com/yourusername/dotfiles.git# 克隆仓库
git clone https://github.com/yourusername/dotfiles.git ~/.local/share/chezmoi
# 初始化 chezmoi
chezmoi init
# 应用配置文件
chezmoi apply# 应用所有配置文件到主目录
chezmoi apply
# 检查状态(会显示什么变化)
chezmoi status
# 显示源文件和目标文件的差异
chezmoi diff
# 仅应用特定文件
chezmoi apply ~/.config/hypr/hyprland.conf
# 从主目录更新文件回源
chezmoi re-add ~/.config/hypr/hyprland.conf
# 添加新文件到 chezmoi 管理
chezmoi add ~/.config/new-file.conf# 拉取最新远程更改
chezmoi source pull
# 推送你的更改到远程
chezmoi source push
# 查看源文件中的更改
chezmoi source status
# 一键提交并推送
chezmoi source add -A && chezmoi source commit -m "更新配置" && chezmoi source push# 直接编辑管理的文件
chezmoi edit ~/.config/hypr/hyprland.conf
# 查看会创建哪些管理的文件
chezmoi managed
# 从 chezmoi 管理中移除文件
chezmoi forget ~/.config/hypr/hyprland.conf
# 使用详细输出运行 chezmoi
chezmoi -v apply
# 使用 dry-run 查看会发生什么但不实际更改
chezmoi --dry-run applydotfiles/
├── .chezmoi.toml* # Chezmoi 配置文件
├── hypr/ # Hyprland 配置
├── mako/ # Mako 通知守护进程
├── niri/ # Niri 窗口管理器
├── nushell/ # Nushell 配置
├── waybar/ # Waybar 配置
└── wofi/ # Wofi 启动器
在根目录创建 .chezmoi.toml 文件来自定义 chezmoi 行为:
[data]
[data.nixos]
is_nixos = "{{- eq .chezmoi.os \"linux\" -}}{{- if lookPath \"nixos-version\" }}true{{ else }}false{{ end -}}"使用模板处理不同配置:
# 创建模板文件
chezmoi add --template ~/.config/app/config.toml
# 带条件判断的模板内容示例:
{{ if eq .chezmoi.hostname "work-laptop" }}
# 工作专用设置
profile = "work"
{{ else }}
# 家庭设置
profile = "personal"
{{ end }}# 如果文件没有被应用,检查状态
chezmoi status
# 强制重新应用所有内容
chezmoi apply --force
# 移除所有管理的文件
chezmoi purge --force
# 重置 chezmoi 配置
rm -rf ~/.config/chezmoi ~/.local/share/chezmoi