diff --git a/system/networking.nix b/system/networking.nix index 8925b76..edd1a18 100644 --- a/system/networking.nix +++ b/system/networking.nix @@ -121,6 +121,27 @@ in ]; networking.networkmanager.dispatcherScripts = [ + { + source = pkgs.writeShellScript "wifi-auto-toggle" '' + LOG_PREFIX="WiFi Auto-Toggle" + + if [[ "$1" =~ ^(enp|eth) ]]; then + case "$2" in + up) + echo "$LOG_PREFIX ethernet up" + ${pkgs.networkmanager}/bin/nmcli radio wifi off + ;; + down) + echo "$LOG_PREFIX ethernet down" + ${pkgs.networkmanager}/bin/nmcli radio wifi on + ;; + esac + elif [[ "$(${pkgs.networkmanager}/bin/nmcli -g GENERAL.STATE device show $ETHERNET_INTERFACE)" = "20 (unavailable)" ]]; then + echo "$LOG_PREFIX failsafe" + ${pkgs.networkmanager}/bin/nmcli radio wifi on + fi + ''; + } { source = pkgs.writeShellScript "connect-ice" '' ACTION="$2"