ITADN
pmarreck/ixnay
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、gawkrg 和启用了 flakes 的 Nix
  • 用于标记管理脚本的 luajit(首选)或 lua 可用

常用命令

命令用途
`ixnay add <usersystem> <stable
`ixnay remove <usersystem> <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_PLATFORMIXNAY_DARWIN_FLAKEIXNAY_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

每个独立的测试套件以失败的断言数量作为退出码,因此聚合运行器返回总失败数。

贡献

  1. 启用 flakes 并确保 luajitgawkrgshellcheck 可用。
  2. 进行更改并在 tests/ 下添加有针对性的回归测试。
  3. 运行 ./test(或 ixnay test)并确认退出码为零。
  4. FILES.md 中提及任何新文件,以保持跟踪表的最新状态。

欢迎提交简化用户体验、改进诊断或扩大平台覆盖范围的 Issue 和 PR。