How to install custom Asahi Image?

How do I install a custom Asahi image instead of the published ones? It is generated using fedora-asahi/kiwi-descriptions on my current Asahi install. The following are the generated artifacts:

package.zip  package.zip.json  package.zip.logs.zip  package.zip.raw.zst

Also, why is the package named package.zip.zip in the generated JSON, whereas the artifact name is package.zip?

{
  "name": "Fedora Linux 41",
  "default_os_name": "Fedora Linux 41",
  "boot_object": "m1n1.bin",
  "next_object": "m1n1/boot.bin",
  "package": "package.zip.zip",
  "icon": "fedora.icns",
  "supported_fw": [
    "12.3",
    "12.3.1",
    "13.5"
  ],
  "extras": [
    "Updating and loading repositories:",
    " Fedora 41 openh264 (From Cisco) - aarc 100% |   3.5 KiB/s | 990.0   B |  00m00s",
    " Fedora 41 - aarch64                    100% |  81.9 KiB/s |   9.7 KiB |  00m00s",
    " Fedora 41 - aarch64 - Updates          100% |  43.5 KiB/s |  14.1 KiB |  00m00s",
    "Repositories loaded."
  ],
  "partitions": [
    {
      "name": "EFI",
      "type": "EFI",
      "size": "524288000B",
      "format": "fat",
      "volume_id": "0x755b8ecd",
      "copy_firmware": true,
      "copy_installer_data": true,
      "source": "esp"
    },
    {
      "name": "Boot",
      "type": "Linux",
      "size": "1073741824B",
      "image": "boot.img"
    },
    {
      "name": "Root",
      "type": "Linux",
      "size": "11958988800B",
      "expand": true,
      "image": "root.img"
    }
  ]
}

This isn’t currently documented, though we should fix that. The short version is that you need a webserver to host the package and the JSON, then override INSTALLER_DATA when bootstrapping the installer to point at your JSON (see the scripts under asahi-installer/scripts at main · AsahiLinux/asahi-installer · GitHub for examples).

That said – if your goal is to just test f41, you should use the dailies, as we just started building f41 there (do note that these are all completely untested though). If you’re building a custom image, I recommend using the builder.py wrapper that’s in the repo to make things a bit easier (so e.g. run ./builder.py build gnome && ./builder.py package gnome) and that should take care of things (this is also not documented at the moment, but the code is pretty straightforward to follow). I don’t know what happened in the build you did but that JSON is definitely not right – as you noticed the package name is wrong, and also the extras section is invalid.