Getting iwd up and running was a bit tricky. It basically broke both
sudo and systemctl (!). The reason was that it has some dependency
on systemd's resolved, but since it wasn't enabled, it kept
hanging. Massively frustratingly. On the positive side, it let me
explore Garuda's smooth BTRFS snapshot integration from the GRUB
menu. Using that, I selected a snapshot from before I installed iwd.
Anyways, to solve this, I did:
# pacman -Syu iwd
# systemctl enable --now iwd.service
# systemctl enable --now systemd-netword.service
# systemctl enable --now systemd-resolved.service
And then, I had to enable on-the-fly configuration of iwd. Odd
default if you ask me, on Debian, it "just worked" without any of
this:
# vim /etc/iwd/main.conf
[General]
EnableNetworkConfiguration=true
After a restart, iwd worked flawlessly:
# systectl restart iwd.service
On my work machines, I chose to disable Network Manager since I don't like it:
# systemctl stop NetworkManager
# systemctl disable NetworkManager
With my private machine, I travel more, so keeping Network Manager in
the mix makes more sense. I thus set it to use iwd instead of
wpa_supplicant:
# vim /etc/NetworkManager/NetworkManager.conf
And add:
[device]
wifi.backend=iwd
Then:
# systemctl stop NetworkManager
# systemctl disable --now wpa_supplicant
# systemctl restart NetworkManager