`vagrant up` times out at "Waiting for domain to get an IP address..."

In my case, I had overly restrictive iptables rules preventing the NAT which is set up for the virtual network bridge(s) virbr* by Vagrant via libvirt.

As an experiment, I disabled all firewall rules before starting the Vagrant machine and it was able to get an IP address.

Since you are using the libvirt provider, you should be able to check out the state of the virtual machine with virt-manager.

The rest of the answer is written under the two assumptions that my system is not so different from yours and that I have run into the same problem using vagrant-libvirt and generic/arch (v1.3.40)

Opening the VM in virt-manager, I've found out that the system cannot detect the root filesystem and also boots into an emergency shell. That's because the initramfs-linux.img provided by the generic/arch box does not include the necessary kernel modules for the default settings that the libvirt-provider with QEMU/kvm uses.

If it's somehow important to boot this box, you should be able to start the box by using the fallback image because it ships more modules. To make it rebootable without intervention, you can run sudo mkinitcpio -p linux to add the missing modules in the guest. Alternatively, you could also change the SCSI controller from Hypervisor Defaults to VirtIO SCSI (eg. with virt-manager) on the host.

For a more permanent solution (nothing of the aforementioned would survive a vagrant destroy), there ist not much to be done - besides maybe waiting for a "fixed" release of the box or patching the plugin.

ps. The easiest solution would probably be to pick another box (e.g. archlinux/archlinux).