diff --git a/base/gui-programs.nix b/base/gui-programs.nix index b485354..76e90f6 100644 --- a/base/gui-programs.nix +++ b/base/gui-programs.nix @@ -69,7 +69,51 @@ in { inherit (pkgs.libsForQt5) okular; }; - networking.networkmanager.enable = true; + networking.networkmanager = { + enable = true; + + dispatcherScripts = [ + { + source = let + grep = "${pkgs.gnugrep}/bin/grep"; + nmcli = "${pkgs.networkmanager}/bin/nmcli"; + in + pkgs.writeShellScript "disable_wifi_on_ethernet" '' + export LC_ALL=C + date >> /tmp/disable_wifi_on_ethernet.log + echo START "$@" >> /tmp/disable_wifi_on_ethernet.log + + beginswith() { case $2 in "$1"*) true;; *) false;; esac; } + + is_ethernet_interface () + { + local type="$(${nmcli} dev show "$1" | grep 'GENERAL\.TYPE:' | awk '{ print $2 }')" + test "$type" = "ethernet" || beginswith enp "$1" + } + + hotspot_enabled () + { + ${nmcli} dev | ${grep} -q "hotspot" + } + + if is_ethernet_interface "$1" && ! hotspot_enabled; then + echo "change in ethernet and not in hotspot mode" >> /tmp/disable_wifi_on_ethernet.log + if [ "$2" = "up" ]; then + echo "turning wifi off" >> /tmp/disable_wifi_on_ethernet.log + nmcli radio wifi off + fi + + if [ "$2" = "down" ]; then + echo "turning wifi on" >> /tmp/disable_wifi_on_ethernet.log + nmcli radio wifi on + fi + fi + echo END "$@" >> /tmp/disable_wifi_on_ethernet.log + ''; + type = "basic"; + } + ]; + }; programs.nm-applet.enable = true; programs.steam.enable = true; diff --git a/hosts/talos/default.nix b/hosts/talos/default.nix index 0376135..418c652 100644 --- a/hosts/talos/default.nix +++ b/hosts/talos/default.nix @@ -51,6 +51,7 @@ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; programs = { + dconf.enable = true; light.enable = true; }; services = {