diff options
Diffstat (limited to 'pkgs/tools/networking/modemmanager/default.nix')
-rw-r--r-- | pkgs/tools/networking/modemmanager/default.nix | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/pkgs/tools/networking/modemmanager/default.nix b/pkgs/tools/networking/modemmanager/default.nix index 64d61f0e323ca..a91854865b1b2 100644 --- a/pkgs/tools/networking/modemmanager/default.nix +++ b/pkgs/tools/networking/modemmanager/default.nix @@ -1,10 +1,9 @@ { lib , stdenv , fetchFromGitLab +, fetchpatch , glib -, udev , libgudev -, polkit , ppp , gettext , pkg-config @@ -12,14 +11,19 @@ , python3 , libmbim , libqmi -, systemd , bash-completion , meson , ninja , vala -, gobject-introspection , dbus , bash +, gobject-introspection +, buildPackages +, withIntrospection ? lib.meta.availableOn stdenv.hostPlatform gobject-introspection && stdenv.hostPlatform.emulatorAvailable buildPackages +, polkit +, withPolkit ? lib.meta.availableOn stdenv.hostPlatform polkit +, systemd +, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd }: stdenv.mkDerivation rec { @@ -38,6 +42,12 @@ stdenv.mkDerivation rec { # Since /etc is the domain of NixOS, not Nix, we cannot install files there. # But these are just placeholders so we do not need to install them at all. ./no-dummy-dirs-in-sysconfdir.patch + + (fetchpatch { + name = "GI_TYPELIB_PATH.patch"; + url = "https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/commit/daa829287894273879799a383ed4dc373c6111b0.patch"; + hash = "sha256-tPQokiZO2SpTlX8xMlkWjP1AIXgoLHW3rJwnmG33z/k="; + }) ]; strictDeps = true; @@ -45,26 +55,29 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ meson ninja - vala - gobject-introspection gettext + glib pkg-config libxslt python3 + ] ++ lib.optionals withIntrospection [ + gobject-introspection + vala ]; buildInputs = [ glib - udev libgudev - polkit ppp libmbim libqmi - systemd bash-completion dbus bash # shebangs in share/ModemManager/fcc-unlock.available.d/ + ] ++ lib.optionals withPolkit [ + polkit + ] ++ lib.optionals withSystemd [ + systemd ]; nativeInstallCheckInputs = [ @@ -76,9 +89,15 @@ stdenv.mkDerivation rec { mesonFlags = [ "-Dudevdir=${placeholder "out"}/lib/udev" "-Ddbus_policy_dir=${placeholder "out"}/share/dbus-1/system.d" + "-Dsystemdsystemunitdir=${placeholder "out"}/lib/systemd/system" "--sysconfdir=/etc" "--localstatedir=/var" - "-Dvapi=true" + (lib.mesonBool "introspection" withIntrospection) + (lib.mesonBool "qrtr" withIntrospection) + (lib.mesonBool "vapi" withIntrospection) + (lib.mesonBool "systemd_suspend_resume" withSystemd) + (lib.mesonBool "systemd_journal" withSystemd) + (lib.mesonOption "polkit" (if withPolkit then "strict" else "no")) ]; postPatch = '' @@ -89,14 +108,16 @@ stdenv.mkDerivation rec { # In Nixpkgs g-ir-scanner is patched to produce absolute paths, and # that interferes with ModemManager's tests, causing them to try to # load libraries from the install path, which doesn't usually exist - # when `make check' is run. So to work around that, we run it as an + # when `meson test' is run. So to work around that, we run it as an # install check instead, when those paths will have been created. - doInstallCheck = true; - preInstallCheck = '' + doInstallCheck = withIntrospection; + installCheckPhase = '' + runHook preInstallCheck export G_TEST_DBUS_DAEMON="${dbus}/bin/dbus-daemon" patchShebangs tools/tests/test-wrapper.sh + mesonCheckPhase + runHook postInstallCheck ''; - installCheckTarget = "check"; meta = with lib; { description = "WWAN modem manager, part of NetworkManager"; |