Допущения:
У вас yq
и nix
установлены в вашей ОС под управлением NixOS или некоторых Linux дистрибутивов.
Вопрос:
Может ли nix поддерживать исходный порядок набора ? т.е. если я создаю файл 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