eg25-manager: configure without modemmanager support

This commit is contained in:
Colin 2023-08-17 08:34:32 +00:00
parent 4fc59fa2ac
commit 17b90fc697
3 changed files with 15 additions and 5 deletions

View File

@ -38,6 +38,9 @@
sane.gui.sxmo.enable = true; sane.gui.sxmo.enable = true;
sane.services.eg25-manager.enable = true; sane.services.eg25-manager.enable = true;
# i only need eg25-manager for GPS purposes;
# but modemmanager outright fails -- blocking eg25-manager -- unless i provide it a sim.
sane.services.eg25-manager.package = pkgs.eg25-manager.override { withModemManager = false; };
sane.programs.guiApps.suggestedPrograms = [ "handheldGuiApps" ]; sane.programs.guiApps.suggestedPrograms = [ "handheldGuiApps" ];
# sane.programs.consoleUtils.enableFor.user.colin = false; # sane.programs.consoleUtils.enableFor.user.colin = false;
# sane.programs.guiApps.enableFor.user.colin = false; # sane.programs.guiApps.enableFor.user.colin = false;

View File

@ -12,20 +12,25 @@ let
''; '';
in in
{ {
options.sane.services.eg25-manager = { options.sane.services.eg25-manager = with lib; {
enable = lib.mkEnableOption "Quectel EG25 modem manager service"; enable = mkEnableOption "Quectel EG25 modem manager service";
package = mkOption {
type = types.package;
default = pkgs.eg25-manager;
};
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
# eg25-manager package ships udev rules *and* a systemd service. # eg25-manager package ships udev rules *and* a systemd service.
# for that reason, i think it needs to be on the system path for the systemd service to be enabled. # for that reason, i think it needs to be on the system path for the systemd service to be enabled.
services.udev.packages = [ pkgs.eg25-manager ]; services.udev.packages = [ cfg.package ];
# but actually, let's define our own systemd service so that we can control config # but actually, let's define our own systemd service so that we can control config
systemd.services.eg25-manager = { systemd.services.eg25-manager = {
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
ExecStart = "${pkgs.eg25-manager}/bin/eg25-manager --config ${eg25-config-toml}"; ExecStart = "${cfg.package}/bin/eg25-manager --config ${eg25-config-toml}";
ExecStartPre = pkgs.writeShellScript "unload-modem-power" '' ExecStartPre = pkgs.writeShellScript "unload-modem-power" ''
# see issue: <https://gitlab.com/mobian1/eg25-manager/-/issues/38>
${pkgs.kmod}/bin/modprobe -r modem_power && echo "WARNING: kernel configured with CONFIG_MODEM_POWER=y, may be incompatible with eg25-manager" || true ${pkgs.kmod}/bin/modprobe -r modem_power && echo "WARNING: kernel configured with CONFIG_MODEM_POWER=y, may be incompatible with eg25-manager" || true
''; '';

View File

@ -14,7 +14,8 @@
, glib , glib
, libgudev , libgudev
, libusb1 , libusb1
, modemmanager # if true, build with MMGLIB. if false, eg25-manager won't speak to modemmanager and will be usable standalone
, withModemManager ? true, modemmanager
}: }:
let let
@ -59,6 +60,7 @@ stdenv.mkDerivation rec {
libgpiod1 libgpiod1
libgudev libgudev
libusb1 libusb1
] ++ lib.optionals withModemManager [
modemmanager modemmanager
]; ];