-{ pkgs, config, ... }:
+{ pkgs, lib, config, ... }:
with (import ./names-and-numbers.nix);
let
inherit (config.users) users;
+ modemmanager = pkgs.modemmanager-1-18;
+ #modemmanager = pkgs.modemmanager-1-20-4;
in
{
networking.nftables.ruleset = ''
'';
services.mmsd.enable = true;
services.mmsd.extraArgs = [ "--debug" ];
+ systemd.services.ModemManager.serviceConfig.ExecStart =
+ lib.mkForce [
+ ""
+ # See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/780
+ "${modemmanager}/bin/ModemManager --debug"
+ ];
systemd.services.NetworkManager.wants = [ "ModemManager.service" ];
services.dbus.packages = [ pkgs.dconf ];
programs.dconf.enable = true;
uuid=b223f550-dff1-4ba3-9755-cd4557faaa5a
type=gsm
autoconnect=true
+ autoconnect-priority=999
autoconnect-retries=0
[gsm]
[proxy]
'';
};
+ systemd.services.watch-lte = {
+ after = [ "ModemManager.service" "NetworkManager.service" "NetworkManager-wait-online.service" ];
+ requires = [ "ModemManager.service" "NetworkManager.service" "NetworkManager-wait-online.service" ];
+ wantedBy = [ "network-online.target" ];
+ #startAt = "*:0/5"; # every 5 min
+ path = with pkgs; [ inetutils modemmanager networkmanager jq ];
+ unitConfig = { StartLimitIntervalSec = 0; };
+ serviceConfig = {
+ Type = "simple";
+ IPAddressAllow = [ "9.9.9.9" ];
+ RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_UNIX" ];
+ ExecStart = pkgs.writeShellScript "watch-lte" ''
+ set -eux
+ lastPONG=$(date +%s)
+ while sleep 5; do
+ if ping 9.9.9.9 --count 1 --linger 20 --interval 1 --quiet --numeric
+ then lastPONG=$(date +%s)
+ fi
+ if test $(( $(date +%s) - lastPONG )) -gt 300
+ then
+ modem=$(mmcli -L -J | jq -r '.["modem-list"][0]') || true
+ mmcli -m "$modem" --command "AT+CFUN=1,1" || true
+ sleep 10
+ systemctl restart ModemManager
+ sleep 10
+ nmcli connection up Prixtel
+ sleep 300
+ fi
+ done
+ '';
+ Restart = "on-failure";
+ RestartSec = "10s";
+ };
+ };
environment.systemPackages = [
pkgs.modem-manager-gui
pkgs.libmbim
pkgs.chatty
- pkgs.gnome.gnome-contacts
+ pkgs.gnome-contacts
pkgs.picocom
+ pkgs.tio
pkgs.calls
- pkgs.dfeet
+ pkgs.d-spy
# https://gitlab.com/mobian1/callaudiod/-/issues/26
# https://gitlab.com/mobian1/callaudiod/-/issues/27
pkgs.callaudiod