From 89cc461c3c43f5c670c9d2bb7058ea274c9e3e45 Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Sun, 27 Apr 2025 23:49:38 +0100 Subject: [PATCH] drop local {modem,network}-manager now we have native aarch64 builder we can use the regular nixos packages for this and don't need to build cross-compilable ones --- configuration.nix | 116 +++++++--------------------------------------- 1 file changed, 17 insertions(+), 99 deletions(-) diff --git a/configuration.nix b/configuration.nix index 77772de..9b5bbb5 100644 --- a/configuration.nix +++ b/configuration.nix @@ -30,17 +30,13 @@ in { config = { nixpkgs.overlays = [ - (final: prev: - let mm = pkgs.callPackage ./pkgs/modem-manager {}; - in { - wlr-randr = prev.wlr-randr.overrideAttrs(o: { - depsBuildBuild = [ final.pkgsBuildBuild.pkg-config ]; - }); - modemmanager-small = mm; - satellite = prev.satellite.override { modemmanager = mm; }; - maps = final.callPackage ./pkgs/maps {}; - qmi-nmea = final.callPackage ./pkgs/qmi-nmea {}; - }) + (final: prev: { + wlr-randr = prev.wlr-randr.overrideAttrs(o: { + depsBuildBuild = [ final.pkgsBuildBuild.pkg-config ]; + }); + maps = final.callPackage ./pkgs/maps {}; + qmi-nmea = final.callPackage ./pkgs/qmi-nmea {}; + }) ]; mobile = { @@ -75,98 +71,21 @@ in { boot.growPartition = lib.mkForce false; services.udev.extraRules = '' -ACTION!="add|change|move|bind", GOTO="mm_qcom_soc_end" - -# Process only known wwan, net and rpmsg ports -SUBSYSTEM=="net", DRIVERS=="bam-dmux", GOTO="mm_qcom_soc_process" -# SUBSYSTEM=="platform", DRIVERS=="bam-dmux", GOTO="mm_qcom_soc_process" -SUBSYSTEM=="net", DRIVERS=="ipa", GOTO="mm_qcom_soc_process" -SUBSYSTEM=="wwan", DRIVERS=="qcom-q6v5-mss", GOTO="mm_qcom_soc_process" -SUBSYSTEM=="rpmsg", DRIVERS=="qcom-q6v5-mss", GOTO="mm_qcom_soc_process" -GOTO="mm_qcom_soc_end" - -LABEL="mm_qcom_soc_process" - -# Flag the port as being part of the SoC -ENV{ID_MM_QCOM_SOC}="1" - -# # -# # Add a common physdev UID to all ports in the Qualcomm SoC, so that they -# # are all bound together to the same modem object. -# # -# # The MSM8916, MSM8974, .... Qualcomm SoCs use the combination of RPMSG/WWAN -# # based control ports plus BAM-DMUX based network ports. -# # -ENV{ID_MM_PHYSDEV_UID}="qcom-soc" - -# port type hints for the rpmsgexport-ed ports -SUBSYSTEM=="rpmsg", ATTR{name}=="DATA*", ATTR{name}=="*_CNTL", ENV{ID_MM_PORT_TYPE_QMI}="1" -SUBSYSTEM=="rpmsg", ATTR{name}=="DATA*", ATTR{name}!="*_CNTL", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1" - -# ignore every other port without explicit hints -SUBSYSTEM=="rpmsg", ENV{ID_MM_PORT_TYPE_QMI}!="1", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}!="1", ENV{ID_MM_PORT_IGNORE}="1" - -# explicitly ignore ports intended for USB tethering (DATA40, DATA40_CNTL) -SUBSYSTEM=="rpmsg", ATTR{name}=="DATA40*", ENV{ID_MM_PORT_IGNORE}="1" -KERNEL=="rmnet_usb*", ENV{ID_MM_PORT_IGNORE}="1" - -# flag all rpmsg ports under this plugin as candidate -# KERNEL=="rpmsg*", SUBSYSTEM=="rpmsg", ENV{ID_MM_CANDIDATE}="1" -KERNEL=="rpmsg*", SUBSYSTEM=="rpmsg", ENV{ID_MM_CANDIDATE}="1" - -LABEL="mm_qcom_soc_end" - - - -ACTION!="add|change|move|bind", GOTO="mm_candidate_end" - -# # Opening bound but disconnected Bluetooth RFCOMM ttys would initiate the -# # connection. Don't do that. - -KERNEL=="rfcomm*", DEVPATH=="*/virtual/*", GOTO="mm_candidate_end" # */ - -SUBSYSTEM=="net", ENV{ID_MM_CANDIDATE}="1" - -# WWAN subsystem port handling -# - All USB devices ignored for now, only PCI devices expected -# - Only "wwan_port" device types processed (single ports); we fully ignore -# the "wwan_dev" device type (full device, not just one port) - -SUBSYSTEMS=="usb", GOTO="mm_candidate_end" -SUBSYSTEM=="wwan", ENV{DEVTYPE}=="wwan_dev", GOTO="mm_candidate_end" -SUBSYSTEM=="wwan", ENV{ID_MM_CANDIDATE}="1" - -LABEL="mm_candidate_end" - -# unlock the gps engine -SUBSYSTEM=="wwan", ENV{DEVNAME}=="/dev/wwan0qmi0", ENV{DEVTYPE}=="wwan_port", \ - RUN+="${pkgs.libqmi}/bin/qmicli -pd $env{DEVNAME} --loc-set-engine-lock=none" - + # unlock the gps engine + SUBSYSTEM=="wwan", ENV{DEVNAME}=="/dev/wwan0qmi0", ENV{DEVTYPE}=="wwan_port", \ + RUN+="${pkgs.libqmi}/bin/qmicli -pd $env{DEVNAME} --loc-set-engine-lock=none" ''; - systemd.services.ModemManager = { - wantedBy = [ "multi-user.target" ]; - serviceConfig = - let script = pkgs.writeScript "start-modem-manager" '' - #!${pkgs.bash}/bin/bash - source ${config.system.build.setEnvironment} - ${pkgs.modemmanager-small}/bin/ModemManager - ''; - in { - StandardInput = "journal"; - StandardError = "journal"; - StandardOutput = "journal"; - SyslogIdentifier = "ModemManager"; - ExecStart = script; - Restart = "always"; - BindsTo = ["dbus.service"]; - }; - }; networking = { - useDHCP = true; + interfaces.wlan0.useDHCP = true; hostName = "biscuit"; - networkmanager = { enable = false; }; + networkmanager = { + enable = true; + unmanaged = ["wlan0"]; + }; useNetworkd = true; + # requires nixpkgs 0deadd5baf (Dec 2024) + modemmanager.enable = true; inherit (secrets) wireless; }; @@ -188,7 +107,6 @@ SUBSYSTEM=="wwan", ENV{DEVNAME}=="/dev/wwan0qmi0", ENV{DEVTYPE}=="wwan_port", \ saturn satellite wlr-randr - modemmanager-small maps qmi-nmea ];