pkgs-lib: fix JSON, YAML and TOML cross-compilation

Splicing of nativeBuildInputs doesn't work unless callPackage is used, so
the generators were attempting to use host platform tools at build time.
This commit is contained in:
Ben Wolsieffer 2022-06-19 22:46:04 -04:00
parent d64abb978c
commit 14b01120c1

View File

@ -50,25 +50,25 @@ rec {
};
in valueType;
generate = name: value: pkgs.runCommand name {
nativeBuildInputs = [ pkgs.jq ];
generate = name: value: pkgs.callPackage ({ runCommand, jq }: runCommand name {
nativeBuildInputs = [ jq ];
value = builtins.toJSON value;
passAsFile = [ "value" ];
} ''
jq . "$valuePath"> $out
'';
'') {};
};
yaml = {}: {
generate = name: value: pkgs.runCommand name {
nativeBuildInputs = [ pkgs.remarshal ];
value = builtins.toJSON value;
passAsFile = [ "value" ];
} ''
json2yaml "$valuePath" "$out"
'';
generate = name: value: pkgs.callPackage ({ runCommand, remarshal }: runCommand name {
nativeBuildInputs = [ remarshal ];
value = builtins.toJSON value;
passAsFile = [ "value" ];
} ''
json2yaml "$valuePath" "$out"
'') {};
type = with lib.types; let
valueType = nullOr (oneOf [
@ -161,13 +161,13 @@ rec {
};
in valueType;
generate = name: value: pkgs.runCommand name {
nativeBuildInputs = [ pkgs.remarshal ];
generate = name: value: pkgs.callPackage ({ runCommand, remarshal }: runCommand name {
nativeBuildInputs = [ remarshal ];
value = builtins.toJSON value;
passAsFile = [ "value" ];
} ''
json2toml "$valuePath" "$out"
'';
'') {};
};