It usually suffices to override the `binary` package in the deepest build input, because it will propagate upwards from there, i.e. this whole override can be written as:

    Elm = callPackage ../development/compilers/elm/elm.nix {
     pandoc = self.pandoc.override { zipArchive = self.zipArchive.override { binary = self.binary_0_7_2_1; }; };
    };