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
This commit is contained in:
Daniel Barlow 2025-04-27 23:49:38 +01:00
parent 9dce5a04e6
commit 89cc461c3c

View File

@ -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
];