1 { pkgs, lib, config, ... }:
 
   2 with (import ./names-and-numbers.nix);
 
   4   inherit (config.users) users;
 
   7   networking.nftables.ruleset = ''
 
  10         iifname ${lteIface} jump input-net
 
  11         iifname ${lteIface} log level warn prefix "input-net: " counter drop
 
  14         ip daddr 10.151.0.1 tcp dport 8080 counter accept \
 
  15           comment "mmsd: Prixtel/SFR"
 
  18         oifname ${lteIface} jump output-net
 
  19         oifname ${lteIface} log level warn prefix "output-net: " counter drop
 
  21       chain forward-to-net {
 
  23       chain forward-from-net {
 
  25       chain forward-to-net { }
 
  26       chain forward-from-net { }
 
  28         iifname { ${wifiIface}, ${eth1Iface}, ${eth2Iface}, ${eth3Iface} } oifname ${lteIface} goto forward-to-net
 
  29         iifname ${lteIface} oifname { ${wifiIface}, ${eth1Iface}, ${eth2Iface}, ${eth3Iface} } goto forward-from-net
 
  34         iifname { ${wifiIface}, ${eth1Iface}, ${eth2Iface}, ${eth3Iface} } oifname ${lteIface} masquerade
 
  38   services.mmsd.enable = true;
 
  39   services.mmsd.extraArgs = [ "--debug" ];
 
  40   systemd.services.ModemManager.serviceConfig.ExecStart =
 
  43       "${pkgs.modemmanager-1-18}/bin/ModemManager --debug"
 
  44       #"${pkgs.modemmanager-1-20-4}/bin/ModemManager --debug"
 
  46   systemd.services.NetworkManager.wants = [ "ModemManager.service" ];
 
  47   services.dbus.packages = [ pkgs.dconf ];
 
  48   programs.dconf.enable = true;
 
  49   environment.etc."NetworkManager/system-connections/Prixtel.nmconnection" = {
 
  54       uuid=b223f550-dff1-4ba3-9755-cd4557faaa5a
 
  68       dhcp-send-hostname=false
 
  72       addr-gen-mode=stable-privacy
 
  74       dhcp-send-hostname=false
 
  79   systemd.services.watch-lte = {
 
  80     after = [ "NetworkManager-wait-online.service" ];
 
  81     requires = [ "NetworkManager-wait-online.service" ];
 
  82     wantedBy = [ "network-online.target" ];
 
  83     #startAt = "*:0/5"; # every 5 min
 
  84     path = with pkgs; [ inetutils networkmanager ];
 
  85     unitConfig = { StartLimitIntervalSec = 0; };
 
  88       IPAddressAllow = [ "9.9.9.9" ];
 
  89       RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_UNIX" ];
 
  90       ExecStart = pkgs.writeShellScript "watch-lte" ''
 
  94           nmcli connection up Prixtel
 
  97       Restart = "on-failure";
 
 101   environment.systemPackages = [
 
 102     pkgs.modem-manager-gui
 
 105     pkgs.gnome.gnome-contacts
 
 110     # https://gitlab.com/mobian1/callaudiod/-/issues/26
 
 111     # https://gitlab.com/mobian1/callaudiod/-/issues/27