From 8dd9fc9a2ff70c9bbb9352b12aefca3f2c34b061 Mon Sep 17 00:00:00 2001 From: Felix Buehler Date: Tue, 16 May 2023 21:02:30 +0200 Subject: [PATCH] machine/serverle: add wifi reconnect --- machines/serverle/hardware-configuration.nix | 3 -- machines/serverle/wifi.nix | 34 +++++++++++++++++++- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/machines/serverle/hardware-configuration.nix b/machines/serverle/hardware-configuration.nix index a8be875..ff1ae08 100644 --- a/machines/serverle/hardware-configuration.nix +++ b/machines/serverle/hardware-configuration.nix @@ -31,7 +31,4 @@ # remove with 23.05 kernelPackages = pkgs.unstable.linuxKernel.packages.linux_rpi4; }; - - # Fix wifi disconnect - networking.networkmanager.wifi.powersave = false; } diff --git a/machines/serverle/wifi.nix b/machines/serverle/wifi.nix index f75b752..71011a0 100644 --- a/machines/serverle/wifi.nix +++ b/machines/serverle/wifi.nix @@ -1,6 +1,38 @@ -{ config, ... }: +{ config, pkgs, ... }: { sops.secrets."wifi/bismarck" = { path = "/etc/NetworkManager/system-connections/Bismarck WLAN.nmconnection"; }; + + # Try fix wifi disconnect + networking.networkmanager.wifi.powersave = false; + networking.networkmanager.wifi.scanRandMacAddress = false; + + # pragmatic fix for wifi loss + systemd.timers."reconnect-wifi" = { + wantedBy = [ "timers.target" ]; + timerConfig = { + OnBootSec = "5m"; + OnUnitActiveSec = "5m"; + Unit = "reconnect-wifi.service"; + }; + }; + + systemd.services."reconnect-wifi" = { + script = '' + set -eu + + ${pkgs.iputils.out}/bin/ping -q -w 5 -c 2 192.168.178.1 2> /dev/null + + if [ $? != 0 ] + then + ${pkgs.coreutils}/bin/echo "reconnect wifi" + ${pkgs.networkmanager}/bin/nmcli connection up 'Bismarck WLAN' + fi + ''; + serviceConfig = { + Type = "oneshot"; + User = "root"; + }; + }; }