WiFi Networking without NetworkManager
The NetworkManager.service provides a simple way to configure WiFi networking on Linux systems, but it can cause issues when running in a custom setup (in my case with multiple network adapters).
The following steps will disable the NetworkManager and allow configuring the WiFi through wpa_supplicant. They should work for most Linux distributions that use systemd (e.g. Debian, Raspbian, Kali Linux, etc.).
1 Disable the NetworkManager service
systemctl disable NetworkManager
systemctl stop NetworkManager
2 WiFi configuration
Create /etc/wpa_supplicant/wpa_supplicant.conf based on the following template:
country=..		# ISO_3166 country code
update_config=1
ctrl_interface=/var/run/wpa_supplicant
network={
        scan_ssid=1
        ssid="Network SSID"     # WiFi SSID to connect to
        psk="password"      # Password
}
3 Apply the WiFi configuration on boot
Add the following lines to /etc/rc.local or create the file if it does not exist.
#!/bin/bash
(
        # Enable the network interface. Repeat this line for any other wifi interfaces 
        # that you want to use.
        ip link set wlan0 up
        
        # Connect to the configured access point using the wlan0 interface
        wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
        dhclient -v wlan0
        
) &> /var/log/local_inet.log &
If you’ve just created the rc.local file, you will also need to mark it as executable:
sudo chmod a+x /etc/rc.local
4 Reboot
sudo reboot