It's possible to create a custom bootable ISO by following the procedure below.

We need the loop module to be loaded

modprobe loop

Install the artools group (3 packages) and iso-profiles:

pacman -S artools iso-profiles

Use the following to generate ~/artools-workspace:

buildiso -p <profile> -q

Currently, <profile> can be either base (default) or lxqt.
Copy /etc/artools/artools.conf to ~/.config/artools

Copy the the /usr/share/artools/iso-profiles folder to ~/artools-workspace/

Modify the copied folder and file to customise the ISO. Inside base and lxqt there are live-overlay and desktop-overlay subfolders; The contents of the former are overlaid on the live session and of the latter on the installed system. Test the output:

buildiso -p <profile> -q

If all goes well, create the ISO:

buildiso -p <profile>

This will create the ISO in ~/artools-workspace/iso, which you can either burn to CD/DVD using your favourite program or dd it to USB (etcher found in AUR works well for USB sticks).

To install the ISO without fetching updates during installation, set netinstall = no from the initial grub menu (this is the default from artools 0.9.5 onwards

Boot to your selected desktop and start calamares.

Advanced switch usage

If you wish to alter the filesytem prior to ISO completion. Use the -x switch

Troubleshooting

Note to ZFS users

During the bootfs step it will fail, due to the incompatibility of buildiso and ZFS
In order to get around this, we need to create a ZFS block device, in the
following example I use zroot as my ZFS pool name.

zfs create -V 10G zroot/buildiso

Next we need to create a filesystem compatible for buildiso.

mkfs.ext2 /dev/zvol/zroot/buildiso

Now we need to mount it to the location that buildiso places it's files.