GitHub ↗

配置结构与职责边界

配置结构与职责边界

三层模型

系统层       ~/nixos-config
Darwin 用户层 ~/nixos-config/modules/home-manager/darwin-files
跨平台私有层 ~/chezmoi
公共配置层   ~/dotfiles

nixos-config

适合放 Nix、nix-darwin、NixOS、系统包、Homebrew 声明、launchd、系统用户、 NixOS 内核/硬件/桌面接线,以及不含秘密的系统环境变量。

chezmoi

继续放跨平台私人 shell 编排、Agent、Rime、Voxtype、tmux、用户级服务、 age 加密文件和秘密入口。

dotfiles

继续放可以公开复用的 Zsh、Neovim、Starship、Ranger/Vifm、通用别名和公开脚本。

公共仓库不能出现个人绝对路径、LAN 地址、API key、Token 或 Agent 私有配置。

软件包所有权

类型 首选所有者 示例
通用 CLI Nix ripgrep、fd、jq、neovim
Apple GUI 应用 Homebrew cask Kitty、Ghostty、Hammerspoon
跨平台私人配置文件 chezmoi Agent、Voxtype、Rime、通用 shell
macOS 专属用户文件 Darwin Home Manager AeroSpace、Karabiner、Hammerspoon、skhd
公共配置文件 dotfiles Zsh、Neovim、Starship
密钥和 session 加密存储/手工恢复 .env、Bitwarden session
缓存和构建产物 应用或项目自己管理 node_modules、.cache

避免同一个 CLI 同时由 Nix 和 Homebrew 安装。检查所有候选路径:

type -a nvim
type -a chezmoi
type -a zellij

当前 shell 仍显示 /opt/homebrew/bin 不一定表示 nix-darwin 失败,可能只是旧 shell 尚未重新加载 PATH。打开新的 Terminal 后再次检查。

nix-darwin 与 macOS 的边界

nix-darwin 管理:Nix profile、系统包、Homebrew 声明、部分 defaults、launchd
Apple 管理:XNU 内核、APFS、Recovery、固件、硬件驱动、系统更新、TCC 数据库

因此 build 成功不等于 Hammerspoon 已获得 Accessibility,也不等于浏览器已经 登录、麦克风已授权或 Voxtype 模型已经存在。这些必须单独验证真实行为。

Home Manager 的位置

Home Manager 可以管理 home.packages、shell 环境、dotfiles、用户服务和 XDG 配置。本仓库的 Darwin 入口只生成明确属于 macOS 的用户文件;跨平台文件和秘密 仍不迁入这里。

迁移某个配置时必须:

确定唯一所有者
→ 从原仓库/模板移除旧生成方式
→ build
→ switch
→ 打开真实应用验证

不要让 Home Manager 和 chezmoi 同时生成同一个路径。