如何在nixos配置中获取当前的nixos版本(例如23.05)?

问题描述 投票:0回答:1

是否有一种方法可以在 Nixos configuration.nix 中检索当前的 NixOS 版本?我正在从 NixOS 20.03 升级到 23.05,并且我想维护与两个版本兼容的单一配置。

由于某些软件包版本是任一版本独有的,因此我需要基于 NixOS 版本的条件逻辑(例如 if 或 switch 构造),以允许我指定在给定 Nixos 版本/系统中使用哪个版本的软件包。

我想解决方法是运行

nixos-version > /etc/nixos/nixos-version
并将其作为普通文件读取。但如果有一种方法可以在配置中本地执行此操作,那就太理想了。

nix nixos
1个回答
0
投票

非常基本,但对我来说很有效:

  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"
© www.soinside.com 2019 - 2024. All rights reserved.