From 14b01120c1bafb63a03f51e182dd7821a3714c69 Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Sun, 19 Jun 2022 22:46:04 -0400 Subject: [PATCH] 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. --- pkgs/pkgs-lib/formats.nix | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pkgs/pkgs-lib/formats.nix b/pkgs/pkgs-lib/formats.nix index fc52128a7e99..cdcbd3663422 100644 --- a/pkgs/pkgs-lib/formats.nix +++ b/pkgs/pkgs-lib/formats.nix @@ -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" - ''; + '') {}; };