假设:
您已在运行 NixOS 或某些 Linux 发行版的操作系统上安装yq
并安装。nix
问题:
nix 可以保持 set 的原始顺序吗?即如果我创建一个 sample.nix 文件:
{pkgs}:
let
dockerComposeConfig = {
version = "1.0";
services = {
srv1 = { name = "srv1"; };
srv2 = { name = "srv2"; };
};
};
in writeTextFile {
name = "docker-compose.json";
text = builtins.toJSON dockerComposeConfig;
}
当我在下面构建并将输出转换为 yaml 时,我注意到该集合已按 Nix 字母顺序排列。是否有一种解决方法可以使我的 JSON 保持与 Docker 用户预期的顺序相同,以便 `dockerComposeConfig 属性保持创建顺序?
# Cmd1
nix-build -E "with import <nixpkgs> {}; callPackage ./sample.nix {}"
# Cmd2
cat /nix/store/SOMEHASH-docker-compose.json | yq r - --prettyPrint