Commit 95766551 authored by Martin Häcker's avatar Martin Häcker
Browse files

mumble: format in standard nix format.

parent b542ec2c
Loading
Loading
Loading
Loading
+168 −107
Original line number Diff line number Diff line
{ lib, stdenv, fetchFromGitHub, fetchpatch, pkg-config, qt5, cmake
, avahi, boost, libopus, libsndfile, protobuf, speex, libcap
, alsa-lib, python3
, rnnoise
, nixosTests
, poco
, flac
, libogg
, libvorbis
, stdenv_32bit
, iceSupport ? true, zeroc-ice
, jackSupport ? false, libjack2
, pipewireSupport ? true, pipewire
, pulseSupport ? true, libpulseaudio
, speechdSupport ? false, speechd-minimal
{
  lib,
  stdenv,
  fetchFromGitHub,
  fetchpatch,
  pkg-config,
  qt5,
  cmake,
  avahi,
  boost,
  libopus,
  libsndfile,
  protobuf,
  speex,
  libcap,
  alsa-lib,
  python3,
  rnnoise,
  nixosTests,
  poco,
  flac,
  libogg,
  libvorbis,
  stdenv_32bit,
  iceSupport ? true,
  zeroc-ice,
  jackSupport ? false,
  libjack2,
  pipewireSupport ? true,
  pipewire,
  pulseSupport ? true,
  libpulseaudio,
  speechdSupport ? false,
  speechd-minimal,
}:

let
  generic = overrides: source: (overrides.stdenv or stdenv).mkDerivation (source // overrides // {
  generic =
    overrides: source:
    (overrides.stdenv or stdenv).mkDerivation (
      source
      // overrides
      // {
        pname = overrides.type;
        version = source.version;

    nativeBuildInputs = [ cmake pkg-config python3 qt5.wrapQtAppsHook qt5.qttools ]
      ++ (overrides.nativeBuildInputs or [ ]);

    buildInputs = [ avahi boost poco protobuf ]
      ++ (overrides.buildInputs or [ ]);
        nativeBuildInputs = [
          cmake
          pkg-config
          python3
          qt5.wrapQtAppsHook
          qt5.qttools
        ] ++ (overrides.nativeBuildInputs or [ ]);

        buildInputs = [
          avahi
          boost
          poco
          protobuf
        ] ++ (overrides.buildInputs or [ ]);

        cmakeFlags = [
          "-D g15=OFF"
@@ -41,23 +74,40 @@ let
          description = "Low-latency, high quality voice chat software";
          homepage = "https://mumble.info";
          license = licenses.bsd3;
      maintainers = with maintainers; [ felixsinger lilacious ];
          maintainers = with maintainers; [
            felixsinger
            lilacious
          ];
          platforms = platforms.linux;
        };
  });
      }
    );

  client = source: generic {
  client =
    source:
    generic {
      type = "mumble";

      nativeBuildInputs = [ qt5.qttools ];
    buildInputs = [ flac libogg libopus libsndfile libvorbis qt5.qtsvg rnnoise speex ]
      buildInputs =
        [
          flac
          libogg
          libopus
          libsndfile
          libvorbis
          qt5.qtsvg
          rnnoise
          speex
        ]
        ++ lib.optional (!jackSupport) alsa-lib
        ++ lib.optional jackSupport libjack2
        ++ lib.optional speechdSupport speechd-minimal
        ++ lib.optional pulseSupport libpulseaudio
        ++ lib.optional pipewireSupport pipewire;

    configureFlags = [
      configureFlags =
        [
          "-D server=OFF"
          "-D bundled-celt=ON"
          "-D bundled-opus=OFF"
@@ -67,7 +117,8 @@ let
          "-D overlay-xcompile=OFF"
          "-D oss=OFF"
          "-D warnings-as-errors=OFF" # conversion error workaround
    ] ++ lib.optional (!speechdSupport) "-D speechd=OFF"
        ]
        ++ lib.optional (!speechdSupport) "-D speechd=OFF"
        ++ lib.optional (!pulseSupport) "-D pulseaudio=OFF"
        ++ lib.optional (!pipewireSupport) "-D pipewire=OFF"
        ++ lib.optional jackSupport "-D alsa=OFF -D jackaudio=ON";
@@ -76,27 +127,36 @@ let

      postFixup = ''
        wrapProgram $out/bin/mumble \
        --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath (lib.optional pulseSupport libpulseaudio ++ lib.optional pipewireSupport pipewire)}"
          --prefix LD_LIBRARY_PATH : "${
            lib.makeLibraryPath (
              lib.optional pulseSupport libpulseaudio ++ lib.optional pipewireSupport pipewire
            )
          }"
      '';
    } source;

  server = source: generic {
  server =
    source:
    generic {
      type = "murmur";

    configureFlags = [
      configureFlags =
        [
          "-D client=OFF"
    ] ++ lib.optional (!iceSupport) "-D ice=OFF"
        ]
        ++ lib.optional (!iceSupport) "-D ice=OFF"
        ++ lib.optionals iceSupport [
          "-D Ice_HOME=${lib.getDev zeroc-ice};${lib.getLib zeroc-ice}"
          "-D CMAKE_PREFIX_PATH=${lib.getDev zeroc-ice};${lib.getLib zeroc-ice}"
          "-D Ice_SLICE_DIR=${lib.getDev zeroc-ice}/share/ice/slice"
        ];

    buildInputs = [ libcap ]
      ++ lib.optional iceSupport zeroc-ice;
      buildInputs = [ libcap ] ++ lib.optional iceSupport zeroc-ice;
    } source;

  overlay = source: generic {
  overlay =
    source:
    generic {
      stdenv = stdenv_32bit;
      type = "mumble-overlay";

@@ -119,7 +179,8 @@ let
      fetchSubmodules = true;
    };
  };
in {
in
{
  mumble = lib.recursiveUpdate (client source) { meta.mainProgram = "mumble"; };
  murmur = lib.recursiveUpdate (server source) { meta.mainProgram = "mumble-server"; };
  overlay = overlay source;