从 nixos-unified 迁移
nixos-unified 与 Snowveil 都可以组织 NixOS、Home Manager 和 Flake outputs,但目录约定与激活入口不同。迁移时可先保留现有 NixOS 与 Home Manager modules,再替换 output 装配。
对应关系
| nixos-unified | Snowveil |
|---|---|
| 主机配置与 autowiring 目录 | hosts/<name>/ |
| Home Manager 配置 | homes/<user>/<host>.nix |
| 用户声明 | users/<user>/meta.nix |
| Flake module / autowiring | modules/ 与各 output 目录 |
.#activate | nixos-rebuild switch --flake .#<host> 或 home-manager switch --flake .#<user>@<host> |
迁移步骤
- 添加 Snowveil input,并将
outputs改为inputs.snowveil.lib.mkFlake { inherit inputs; }。 - 将每台 NixOS 主机放到
hosts/<name>/default.nix,并添加包含system的meta.nix。 - 将主机关联的 Home Manager 配置移到
homes/<user>/<host>.nix。 - 添加
users/<user>/meta.nix,用hosts声明该用户安装到哪些系统。 - 将自动挂接的公共模块整理为
modules/下的 magic 文件。 - 用
nix flake show和nix flake check检查输出,再按主机执行nixos-rebuild switch。
nix
# hosts/desktop/meta.nix
{
system = "x86_64-linux";
}bash
nix flake show
sudo nixos-rebuild switch --flake .#desktopSnowveil 不提供 nixos-unified 的统一激活 app、远程部署或 Darwin 处理。保留这些需求时,可通过 outputs.extra 或现有部署工具继续定义相应 output。
目录映射见Outputs,普通 Flake 的完整迁移示例见普通 Flake → Snowveil。