{ pkgs, ... }: { home.packages = with pkgs; [ (writeShellScriptBin "dmenu-wifi" '' nmcli dev wifi rescan ssid_list=$(nmcli -f in-use,bssid,ssid,mode,chan,freq,rate,signal,bars,security dev wifi) available_connections=$(echo "$ssid_list" | sed '/--.*Infra/d') connection=$( echo "$available_connections" | dmenu -l 20) bssid=$(echo "$connection" | sed 's/^.\s*//;s/\s\s.*$//') ssid=$(echo "$connection" | sed 's/^.\s*[0-9;A-Z;:]*\s\s//;s/\s*Infra\s*[0-9].*$//') [[ "$connection" = "" ]] && notify-send -t 5000 "Wifi Connect" "Cancelled" && exit 0 [[ $( echo "$connection" | grep "IN-USE" -o) = "IN-USE" ]] && notify-send -t 5000 "Wifi Connect" "Please select valid network" && exit 0 [[ -n "$(echo "$connection" | grep '\*')" ]] && notify-send -t 5000 "Wifi Connect" "Already Connected to: $(echo "$ssid")" && exit 0 notify-send -t 5000 "Network Manager" "Attempting to connect to $ssid..." nmcli connection modify "$ssid" 802-11-wireless.bssid "$bssid" nmcli device wifi connect "$bssid" return_code=$? if [ $return_code == 4 ]; then notify-send -t 5000 "Wifi Connect" "Please enter password for '$ssid'..." prompt="Enter Password for '$ssid'" pwd=$(echo "" | dmenu -p "$prompt") nmcli device wifi connect "$bssid" password "$pwd" return_code=$? fi case "$return_code" in 0) notify-send -t 5000 "Wifi Connect" "Successfully connected to: $ssid!" pkill -RTMIN+12 dwmblocks exit 0 ;; 3) notify-send -t 5000 "Wifi Connect" "Connection to $ssid failed. Timeout expired?" pkill -RTMIN+12 dwmblocks exit 1 ;; 4) notify-send -t 5000 "Wifi Connect" "Connection to $ssid failed. Possibly wrong password?" nmcli connection delete id "$ssid" pkill -RTMIN+12 dwmblocks exit 1 ;; *) notify-send -t 5000 "Wifi Connect" "Connection to $ssid failed. Error code $?" echo "Failed. Exiting" pkill -RTMIN+12 dwmblocks exit 1 esac '') ]; }