diff --git a/pkgs/development/beam-modules/fetch-hex.nix b/pkgs/development/beam-modules/fetch-hex.nix index 9d7e18ce24ed..2d1fa623745a 100644 --- a/pkgs/development/beam-modules/fetch-hex.nix +++ b/pkgs/development/beam-modules/fetch-hex.nix @@ -19,9 +19,18 @@ stdenv.mkDerivation ({ }; unpackCmd = '' - tar -xf $curSrc contents.tar.gz + tar -xf $curSrc contents.tar.gz CHECKSUM metadata.config mkdir contents tar -C contents -xzf contents.tar.gz + mv metadata.config contents/hex_metadata.config + + # To make the extracted hex tarballs appear legitimate to mix, we need to + # make sure they contain not just the contents of contents.tar.gz but also + # a .hex file with some lock metadata. + # We use an old version of .hex file per hex's mix_task_test.exs since it + # is just plain-text instead of an encoded format. + # See: https://github.com/hexpm/hex/blob/main/test/hex/mix_task_test.exs#L410 + echo -n "${pkg},${version},$(cat CHECKSUM | tr '[:upper:]' '[:lower:]'),hexpm" > contents/.hex ''; installPhase = ''