diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index ad0679d6165..cf593ad6aa9 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -856,7 +856,9 @@ ./services/networking/mjpg-streamer.nix ./services/networking/minidlna.nix ./services/networking/miniupnpd.nix - ./services/networking/mosquitto.nix + ./services/networking/miredo.nix + ./services/networking/mjpg-streamer.nix + ./services/networking/mmsd.nix ./services/networking/monero.nix ./services/networking/morty.nix ./services/networking/mozillavpn.nix diff --git a/nixos/modules/services/networking/mmsd.nix b/nixos/modules/services/networking/mmsd.nix new file mode 100644 index 00000000000..7e262a9326c --- /dev/null +++ b/nixos/modules/services/networking/mmsd.nix @@ -0,0 +1,38 @@ +{ pkgs, lib, config, ... }: +with lib; +let + cfg = config.services.mmsd; + dbusServiceFile = pkgs.writeTextDir "share/dbus-1/services/org.ofono.mms.service" '' + [D-BUS Service] + Name=org.ofono.mms + SystemdService=dbus-org.ofono.mms.service + + # Exec= is still required despite SystemdService= being used: + # https://github.com/freedesktop/dbus/blob/ef55a3db0d8f17848f8a579092fb05900cc076f5/test/data/systemd-activation/com.example.SystemdActivatable1.service + Exec=${pkgs.coreutils}/bin/false mmsd + ''; +in +{ + options.services.mmsd = { + enable = mkEnableOption (mdDoc "Multimedia Messaging Service Daemon"); + extraArgs = mkOption { + type = with types; listOf str; + description = mdDoc "Extra arguments passed to `mmsd-tng`"; + default = []; + example = ["--debug"]; + }; + }; + config = mkIf cfg.enable { + services.dbus.packages = [ dbusServiceFile ]; + systemd.user.services.mmsd = { + after = [ "ModemManager.service" ]; + aliases = [ "dbus-org.ofono.mms.service" ]; + serviceConfig = { + Type = "dbus"; + ExecStart = "${pkgs.mmsd-tng}/bin/mmsdtng " + escapeShellArgs cfg.extraArgs; + BusName = "org.ofono.mms"; + Restart = "on-failure"; + }; + }; + }; +} diff --git a/pkgs/tools/networking/mmsd-tng/default.nix b/pkgs/tools/networking/mmsd-tng/default.nix new file mode 100644 index 00000000000..eaf12263751 --- /dev/null +++ b/pkgs/tools/networking/mmsd-tng/default.nix @@ -0,0 +1,53 @@ +{ lib, stdenv +, fetchFromGitLab +, c-ares +, dbus +, glib +, libphonenumber +, libsoup +, meson +, mobile-broadband-provider-info +, modemmanager +, ninja +, pkg-config +, protobuf +}: + +stdenv.mkDerivation rec { + pname = "mmsd-tng"; + version = "1.12.1"; + + src = fetchFromGitLab { + owner = "kop316"; + repo = "mmsd"; + rev = version; + sha256 = "sha256-fhbiTJWmQwJpuMaVX2qWyWwJ/2Y/Vczo//+0T0b6jhA="; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + ]; + + buildInputs = [ + c-ares + dbus + glib + libphonenumber + libsoup + mobile-broadband-provider-info + modemmanager + protobuf + ]; + + doCheck = true; + + meta = with lib; { + description = "Multimedia Messaging Service Daemon - The Next Generation"; + homepage = "https://gitlab.com/kop316/mmsd"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ julm ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index dc456b3848e..9cf798e033d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -30199,6 +30199,8 @@ with pkgs; mmsd = callPackage ../tools/networking/mmsd { }; + mmsd-tng = callPackage ../tools/networking/mmsd-tng { }; + mmtc = callPackage ../applications/audio/mmtc { }; mnamer = callPackage ../applications/misc/mnamer { };