iwd on Garuda Linux


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

Licensed under CC BY Creative Commons License ~ ✉ torstein.k.johansen @ gmail ~ 🐘 @skybert@emacs.ch ~ 🐦 @torsteinkrause