是否有一种方法可以在 Nixos configuration.nix 中检索当前的 NixOS 版本?我正在从 NixOS 20.03 升级到 23.05,并且我想维护与两个版本兼容的单一配置。
由于某些软件包版本是任一版本独有的,因此我需要基于 NixOS 版本的条件逻辑(例如 if 或 switch 构造),以允许我指定在给定 Nixos 版本/系统中使用哪个版本的软件包。
我想解决方法是运行
nixos-version > /etc/nixos/nixos-version
并将其作为普通文件读取。但如果有一种方法可以在配置中本地执行此操作,那就太理想了。
非常基本,但对我来说很有效:
nixosVersion = builtins.substring 0 5 ((import <nixos> {}).lib.version);
phpVersionToUse =
if nixosVersion == "23.05" then
pkgs.php82
else
pkgs.php74;
通过 cli 的示例:
$ nix-instantiate --eval --expr "builtins.substring 0 5 ((import <nixos> {}).lib.version)"
"22.05"