2024-06-14 21:48:43 +01:00
|
|
|
{ pkgs, ... }:
|
|
|
|
{
|
|
|
|
home.packages = with pkgs; [
|
|
|
|
(writeShellScriptBin "sb-network-status" ''
|
|
|
|
# Nerd Font Symbols
|
|
|
|
wifi_symbol=" "
|
|
|
|
lan_symbol=" "
|
|
|
|
disconnected_symbol=" "
|
|
|
|
vpn_symbol=" "
|
|
|
|
internet=" "
|
|
|
|
internet_disconnected=" "
|
|
|
|
|
|
|
|
# Get the network status
|
|
|
|
DEFAULT_INTERFACE=$(ip route | grep '^default' | awk '{print $5}' | uniq)
|
|
|
|
IP_ADDRESS=$(ip -o route get to 8.8.8.8 | sed -n 's/.*src \([0-9.]\+\).*/\1/p')
|
|
|
|
|
|
|
|
if [ -z "$DEFAULT_INTERFACE" ]; then
|
|
|
|
network_symbol="$disconnected_symbol"
|
|
|
|
else
|
|
|
|
# Check if it is a wireless interface (wlan*)
|
|
|
|
if [[ $DEFAULT_INTERFACE == wl* ]]; then
|
|
|
|
network_symbol="$wifi_symbol"
|
|
|
|
else
|
|
|
|
network_symbol="$lan_symbol"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Check internet connectivity
|
|
|
|
if ! ping -c 1 8.8.8.8 &> /dev/null;
|
|
|
|
then
|
|
|
|
network_symbol="$network_symbol $internet_disconnected"
|
|
|
|
else
|
|
|
|
network_symbol="$network_symbol $internet"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if ip addr show tun0 > /dev/null 2>&1; then
|
|
|
|
network_symbol="$network_symbol $vpn_symbol"
|
|
|
|
else
|
|
|
|
network_symbol="$network_symbol"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$IP_ADDRESS" ];
|
|
|
|
then
|
2024-10-03 14:55:42 +01:00
|
|
|
printf "[$network_symbol] "
|
2024-06-14 21:48:43 +01:00
|
|
|
else
|
2024-06-16 22:16:59 +01:00
|
|
|
printf "[$network_symbol|$IP_ADDRESS] "
|
2024-06-14 21:48:43 +01:00
|
|
|
fi
|
|
|
|
'')
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
|