pmarreck/ixnay · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
IXNAY
IXNAY 是一个围绕 Nix 工具链构建的实用型 TUI 风格封装器。它专注于在 Nix 从传统 nix-* 工具向较新的 nix CLI 过渡期间,那些仍然操作不便的日常工作流程。IXNAY 标准化了您执行的命令,保持声明式软件包块的同步,并准确解释其正在执行的操作,以便您始终了解底层的 Nix 调用。
亮点
- 一致的 UX – 为传统和现代 Nix 子命令提供单一入口点,除非静音,否则以黄色回显已执行的命令。
- 声明式软件包管理 –
ixnay add/remove保持按系统或按用户划分的标记块按字母顺序排列、感知频道,并标注上游描述。 - 安全的自动化 – 重复添加是幂等的,频道更改需要显式移除,且标记插入兼容
environment.systemPackages = [ … ]和嵌套的environment = { systemPackages = …; };布局。 - 易于测试 –
ixnay test运行完整的基于 shell 的测试套件,而ixnay --test则静默运行。IXNAY_TEST_RUNNER可以指向任何兼容的 runner 二进制文件。 - 快速元数据 –
ixnay describe <pkg>获取nixpkgs描述,无需在搜索结果中挖掘。 - 透明的诊断 – 辅助例程解析常见的
nix评估/构建失败,并打印可操作的提示。
要求
- 带有 Bash 5+ 的 POSIX shell 环境
- 已安装 GNU coreutils、
gawk、rg和启用了 flakes 的 Nix - 用于标记管理脚本的
luajit(首选)或lua可用
常用命令
| 命令 | 用途 |
|---|---|
| `ixnay add <user | system> <stable |
| `ixnay remove <user | system> <stable |
ixnay describe <pkg> | 通过 nix eval --raw 打印 nixpkgs 描述。 |
ixnay reify --no-update | 构建声明的 NixOS flake 而不刷新其锁,然后将其设为下一个启动代。 |
ixnay test [args…] | 运行完整的测试套件(默认 ./test)并显示实时输出。 |
ixnay --test [args…] | 静默运行相同的套件并以失败计数作为退出码。 |
ixnay -a / ixnay --about | 打印单行项目描述。 |
所有命令都支持 IXNAY_MUTE_CMD_ECHO(抑制底层命令输出)和 DRY_RUN(显示将执行的操作而不实际执行)。声明式操作还使用 IXNAY_ADD_PLATFORM、IXNAY_DARWIN_FLAKE 和 IXNAY_NIXOS_CONFIG 在测试期间覆盖目标文件。
对于基于 flake 的 NixOS 主机,reify 从选定的 configuration.nix 中选择声明的 hostName。这使得待处理的 hostname 重命名变得安全:新的 flake 输出在下一次重启更改内核 hostname 之前被选中。
IXNAY_NIXOS_FLAKE_HOST 仍然是显式覆盖。默认情况下 reify 使用
nixos-rebuild boot,因此 ixnay reify --no-update 不会注销当前的
桌面;当您准备好激活暂存的代时再重启。仅当明确需要立即实时切换时,才设置
SWITCH_NOW=1。
测试
# Verbose run
./test
# Silence output but preserve exit status (e.g. for CI)
IXNAY_TEST_RUNNER=./test ixnay --test
每个独立的测试套件以失败的断言数量作为退出码,因此聚合运行器返回总失败数。
贡献
- 启用 flakes 并确保
luajit、gawk、rg和shellcheck可用。 - 进行更改并在
tests/下添加有针对性的回归测试。 - 运行
./test(或ixnay test)并确认退出码为零。 - 在
FILES.md中提及任何新文件,以保持跟踪表的最新状态。
欢迎提交简化用户体验、改进诊断或扩大平台覆盖范围的 Issue 和 PR。