# signalridge-dotfiles
**Repository Path**: flatbrick/signalridge-dotfiles
## Basic Information
- **Project Name**: signalridge-dotfiles
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: https://zenn.dev/invoker/articles/0625ae5c1b1815
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-08-09
- **Last Updated**: 2026-08-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
---
## 这个仓库是什么
这是一个可复现的个人开发环境仓库,核心由以下组件组成:
- `chezmoi`:管理 dotfiles、模板和 bootstrap 编排
- `Nix`:声明式包管理(macOS 用 `nix-darwin`,macOS/Linux 都用 `flakey-profile`)
- `aqua` + `mise`:补充 Nix 之外的 CLI 与 runtime 管理
- `Claude Code` + `Codex CLI`:共享 AI 工具链
这不是展示型模板,而是日常真实使用的配置。本文档只描述仓库当前已经实现的能力。
---
## 亮点
- 统一 bootstrap 流程(`.chezmoiscripts/00..23`),并带有幂等维护步骤
- 跨平台包管理策略:
- macOS/Linux 共用 Nix user packages
- macOS 使用 `nix-darwin` 管理系统配置
- macOS 集成 Homebrew / MAS
- 共享 AI skills 库自动同步到 `~/.harnesses/skills`(供 Claude、Codex 激活使用)
- Claude/Codex wrapper 的 provider 切换:
- `claude-manage` / `claude-with`
- `codex-manage` / `codex-with`
- 每次 `chezmoi apply` 自动对齐工具集成和 Herdr agent 集成
- GitHub Actions 自动维护依赖版本(versions、flake lock、aqua packages)
---
## 为什么选择这个仓库
- **Profile 全覆盖**:`.chezmoidata/` 统一驱动 `shared` / `work` / `private`,覆盖 Nix、Homebrew、MAS
- **端到端引导**:`00..23` 阶段脚本把安装、配置、工具同步串成稳定流水线
- **macOS 打磨**:nix-darwin 系统项、Homebrew / MAS 联动、应用后维护脚本
- **工作流护栏**:pre-commit + Claude hooks 组合,降低危险操作概率
- **DX 自动化**:Justfile、fzf 导航、AI 辅助提交流程
- **CI 一致性**:模板渲染与 `nix flake check` 在 macOS/Linux 双平台验证
- **双 AI 栈**:Claude Code 与 Codex CLI 在一套配置里协同维护
---
## 设计理念
新机器初始化成本高,且容易“装得出来但用不顺”。本仓库目标不是最小示例,而是让真实开发环境可重复落地。
核心原则:
- **可复现**:同一套配置数据,多机器结果一致
- **声明式优先**:包、工具、配置都落在可追踪文件中
- **模块化 Profile**:work/private/headless 用数据切换,不靠分叉脚本
- **AI 增强工作流**:prompts、skills、hooks、provider 管理统一纳管
- **分层安全**:dotfiles secrets、password store、key backup 各自独立机制
---
## 目录
- [快速开始](#快速开始)
- [首次运行会询问什么](#首次运行会询问什么)
- [架构](#架构)
- [仓库结构](#仓库结构)
- [Bootstrap 流程(实际执行顺序)](#bootstrap-流程实际执行顺序)
- [日常操作](#日常操作)
- [Claude Code 集成](#claude-code-集成)
- [AI 工具链(Claude + Codex)](#ai-工具链claude--codex)
- [工具链](#工具链)
- [Shell 函数](#shell-函数)
- [包管理](#包管理)
- [多 Profile 配置](#多-profile-配置)
- [安全与加密](#安全与加密)
- [CI 与自动化](#ci-与自动化)
- [更多文档](#更多文档)
- [致谢](#致谢)
- [统计](#统计)
- [许可证](#许可证)
---
## 架构
仓库整体架构由 `chezmoi` + Nix 主干 + AI 工具层构成:
- `chezmoi`:模板与脚本编排中枢
- `nix-darwin`(macOS):系统层声明式配置
- `flakey-profile`(macOS/Linux):用户包 Profile
- `aqua` + `mise`:Nix 外 CLI/runtime 管理层
- `dot_claude` + `dot_codex`:AI 工具全局策略与配置
| 组件 | macOS | Linux |
| -------- | -------------- | -------------- |
| Dotfiles | chezmoi | chezmoi |
| 系统配置 | nix-darwin | N/A |
| 用户包 | flakey-profile | flakey-profile |
| GUI 应用 | Homebrew/MAS | N/A |
---
## 仓库结构
```text
.
├── .chezmoidata/
│ ├── nix.yaml # Nix 包集合(shared/work/private)
│ ├── homebrew.yaml # Homebrew taps/brews/casks/MAS apps
│ ├── claude.yaml # Claude provider 与 account 模型配置
│ ├── versions.yaml # 工具与插件版本固定
│ ├── aerospace.yaml # Aerospace WM 数据
│ └── hammerspoon.yaml # Hammerspoon 数据
├── .chezmoiscripts/ # Bootstrap 与维护脚本链(00..23)
├── nix-config/
│ ├── flake.nix.tmpl
│ └── modules/
│ ├── system.nix.tmpl # nix-darwin 系统配置
│ ├── apps.nix.tmpl # Homebrew + MAS 连接层
│ ├── profile.nix.tmpl # flakey-profile 包配置
│ └── host-users.nix
├── dot_local/bin/ # CLI 封装脚本(Claude/Codex/keys/MCP)
├── dot_claude/ # Claude 全局指令、hooks、模板
├── dot_codex/ # Codex 全局指令、配置、prompts
├── private_dot_config/ # 工具配置(tmux、mise、aqua、gopass 等)
├── docs/ # 专项文档
└── tests/ # bootstrap/脚本回归测试
```
---
## Bootstrap 流程(实际执行顺序)
`chezmoi` 脚本按编号阶段执行:
1. `00` 安装 Nix(Determinate installer + 架构/镜像检测)
2. `01` 可选恢复 keys-manage 加密文件(`useEncryption=true`)
3. `02` macOS:应用 nix-darwin 系统配置
4. `03` 切换 flakey-profile 包配置
5. `04` 安装固定版本的 aqua installer/aqua
6. `05` 根据 `private_dot_config/aquaproj-aqua/aqua.yaml` 安装工具(含 `mise`)
7. `06` 初始化 gopass store(交互式 clone)
8. `07` 通过 aqua 提供的 `mise` 安装 runtime 与工具
9. `08` 下载固定版本 nix-index 数据库
10. `09` macOS:安装/更新 Paperlib
11. `10` 周期性 Homebrew 更新(7 天间隔)
12. `11` 同步 Claude integration plugins
13. `12` 同步 Claude MCP servers
14. `13` 同步 Codex connector plugins
15. `14` 为 Claude、Codex 和 Pi 同步 Herdr integrations
16. `15` 安装/更新 Cursor Agent CLI
17. `16` work profile:安装 Azure Functions Core Tools
18. `17` macOS GUI:重新加载托管的 LaunchAgents
19. `18` 同步 Herdr plugins
20. `19` Linux:重新加载 systemd user units
21. `20` 每个 ISO 日历周/package 集合成功对齐一次 Pi extensions(失败则在下次 apply 重试)
22. `21` macOS terminal profile 设置
23. `22` macOS WezTerm 图标维护
24. `23` 周期性 mise 更新(7 天间隔)
---
## 快速开始
> [!WARNING]
> 本仓库会修改 shell、包管理器和系统配置。
> 建议先 Fork 并审阅,再用于生产机器。
### 方式 1:先下载 `init.sh` 再交互运行
```bash
curl -fsSL https://raw.githubusercontent.com/signalridge/dotfiles/main/init.sh -o /tmp/init.sh
sh /tmp/init.sh
```
> 为什么不用 `curl … | sh`?
> `chezmoi init` 会交互式询问 hostname、GitHub 用户名、邮箱等。
> 管道把 stdin 接到了 curl,prompt 没有 TTY 可读,安装会直接报错(或者更糟,悄悄写入占位值)。先下载再 `sh /tmp/init.sh`,终端就还在。
### 方式 2:固定 tag/branch 并先审阅
```bash
REF="