Files
nixy/home/system/waybar/default.nix
T
2026-06-29 17:48:21 +02:00

40 lines
1.3 KiB
Nix

{pkgs, ...}: let
networkScript = pkgs.writeShellScript "waybar-network" ''
for iface in $(${pkgs.iproute2}/bin/ip -br link show | awk '$2 == "UP" {print $1}' | grep -vE '^(lo|tun|proton|wg[0-9]|ppp|vpn|docker|br-|veth|virbr)'); do
ip=$(${pkgs.iproute2}/bin/ip addr show "$iface" 2>/dev/null | grep 'inet ' | awk '{print $2}' | cut -d/ -f1 | head -1)
if [ -n "$ip" ]; then
if [[ "$iface" == wl* ]]; then
ssid=$(${pkgs.iw}/bin/iw dev "$iface" link 2>/dev/null | grep SSID | sed 's/.*SSID: //')
signal=$(${pkgs.iw}/bin/iw dev "$iface" link 2>/dev/null | grep signal | awk '{print $2}')
printf '{"text": "󰤨", "class": "wifi", "tooltip": " %s\\n %s dBm"}\n' "$ssid" "$signal"
else
printf '{"text": "󰛳", "class": "ethernet", "tooltip": " %s\\n %s"}\n' "$iface" "$ip"
fi
exit 0
fi
done
printf '{"text": "󰤭", "class": "disconnected", "tooltip": "Disconnected"}\n'
'';
in {
imports = [
./settings.nix
./style.nix
];
_module.args.networkScript = networkScript;
programs.waybar.enable = true;
stylix.targets.waybar.enable = false;
home.packages = with pkgs; [
playerctl
pavucontrol
blueman
iw
];
wayland.windowManager.hyprland.settings.exec-once = [
"waybar"
];
}