Build uImage instead of zImage

I am not at all a kernel expert, and I’m not even sure to know what you are trying to do, but a rg 'target = "uimage"' -i in the nixpkgs folder points to https://github.com/NixOS/nixpkgs/blob/3302bc3ddda5b1f72f7382b259d25856ed763a5e/lib/systems/platforms.nix#L66 that contains stuff like:

  pogoplug4 = {
    linux-kernel = {
      name = "pogoplug4";

      baseConfig = "multi_v5_defconfig";
      autoModules = false;
      extraConfig = ''
        # Ubi for the mtd
        MTD_UBI y
        UBIFS_FS y
        UBIFS_FS_XATTR y
        UBIFS_FS_ADVANCED_COMPR y
        UBIFS_FS_LZO y
        UBIFS_FS_ZLIB y
        UBIFS_FS_DEBUG n
      '';
      makeFlags = [ "LOADADDR=0x8000" ];
      target = "uImage";
      # TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working
      #DTB = true;
    };
    gcc = {
      arch = "armv5te";
    };
  };

which makes sense since when reading the code, you realize that kernelConf is set to stdenv.hostPlatform.linux-kernel (host being understood as the architecture running the kernel).
so doing an extrapolation with your code also containing extraConfig, my first try would be to do:

  customKernel = pkgs.linux.override {
    extraConfig = ''
      OVERLAY_FS y
    '';
    # add this:
    target = "uImage";
  };

But I might be very wrong. Have you tried that before?

If not, you might want to give a try to this reading discussing how to override kernel options using kernelPatches The *correct* way to override the latest kernel config - #7 by aszlig and this discussion also seems related Override kernel build dependencies - #3 by Skallwar