about summary refs log tree commit diff
path: root/pkgs/applications/networking/mumble/default.nix
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2015-10-03 22:21:11 -0700
committerWilliam A. Kennington III <william@wkennington.com>2015-10-03 22:22:21 -0700
commit2f88045360a3de9c80df16530383aeb6a05d2399 (patch)
treee6902004e85e879a602dbb7a49e87d8635ad2b88 /pkgs/applications/networking/mumble/default.nix
parent2702f01ee91b264e623ed762c34f3f2d390b3987 (diff)
mumble: Combine into a generic derivation
Also add a git version since 1.3.0 supports qt5 as well as a host of new
features.
Diffstat (limited to 'pkgs/applications/networking/mumble/default.nix')
-rw-r--r--pkgs/applications/networking/mumble/default.nix197
1 files changed, 140 insertions, 57 deletions
diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix
index afe27eb381498..1e9fc99c29ddc 100644
--- a/pkgs/applications/networking/mumble/default.nix
+++ b/pkgs/applications/networking/mumble/default.nix
@@ -1,71 +1,154 @@
-{ stdenv, fetchurl, pkgconfig
-, avahi, boost, libopus, celt, libsndfile, protobuf, qt4, speex
+{ stdenv, fetchurl, fetchgit, pkgconfig
+, qt4, qt5, avahi, boost, libopus, celt, libsndfile, protobuf, speex, libcap
+, alsaLib
 , jackSupport ? false, libjack2 ? null
 , speechdSupport ? false, speechd ? null
 , pulseSupport ? false, libpulseaudio ? null
+, iceSupport ? false, zeroc_ice ? null
 }:
 
 assert jackSupport -> libjack2 != null;
 assert speechdSupport -> speechd != null;
 assert pulseSupport -> libpulseaudio != null;
+assert iceSupport -> zeroc_ice != null;
 
+with stdenv.lib;
 let
-  optional = stdenv.lib.optional;
-  optionalString = stdenv.lib.optionalString;
-in
-stdenv.mkDerivation rec {
-  name = "mumble-${version}";
-  version = "1.2.10";
-
-  src = fetchurl {
-    url = "https://github.com/mumble-voip/mumble/releases/download/${version}/${name}.tar.gz";
-    sha256 = "012vm0xf84x13414jlsx964c5a1nwnbn41jnspkciajlxxipldn6";
+  generic = overrides: source: stdenv.mkDerivation (source // overrides // {
+    name = "${overrides.type}-${source.version}";
+
+    patches = optional jackSupport ./mumble-jack-support.patch;
+
+    nativeBuildInputs = [ pkgconfig ]
+      ++ { qt4 = [ qt4 ]; qt5 = [ qt5.base ]; }."qt${toString source.qtVersion}"
+      ++ (overrides.nativeBuildInputs or [ ]);
+    buildInputs = [ boost protobuf avahi ]
+      ++ { qt4 = [ qt4 ]; qt5 = [ qt5.base ]; }."qt${toString source.qtVersion}"
+      ++ (overrides.buildInputs or [ ]);
+
+    configureFlags = [
+      "CONFIG+=shared"
+      "CONFIG+=no-g15"
+      "CONFIG+=packaged"
+      "CONFIG+=no-update"
+      "CONFIG+=no-embed-qt-translations"
+      "CONFIG+=no-bundled-celt"
+      "CONFIG+=no-bundled-opus"
+      "CONFIG+=no-bundled-speex"
+    ] ++ optional (!speechdSupport) "CONFIG+=no-speechd"
+      ++ optional jackSupport "CONFIG+=no-oss CONFIG+=no-alsa CONFIG+=jackaudio"
+      ++ (overrides.configureFlags or [ ]);
+
+    configurePhase = ''
+      qmake $configureFlags DEFINES+="PLUGIN_PATH=$out/lib"
+    '';
+
+    makeFlags = [ "release" ];
+
+    installPhase = ''
+      mkdir -p $out/{lib,bin}
+      find release -type f -not -name \*.\* -exec cp {} $out/bin \;
+      find release -type f -name \*.\* -exec cp {} $out/lib \;
+
+      mkdir -p $out/share/man/man1
+      cp man/mum* $out/share/man/man1
+    '' + (overrides.installPhase or "");
+
+    meta = {
+      description = "Low-latency, high quality voice chat software";
+      homepage = "http://mumble.sourceforge.net/";
+      license = licenses.bsd3;
+      maintainers = with maintainers; [ viric jgeerds wkennington ];
+      platforms = platforms.linux;
+    };
+  });
+
+  client = source: generic {
+    type = "mumble";
+    NIX_CFLAGS_COMPILE = [ "-I${celt}/include/celt" ];
+
+    nativeBuildInputs = optional (source.qtVersion == 5) qt5.tools;
+    buildInputs = [ libopus celt libsndfile speex ]
+      ++ optional (source.qtVersion == 5) qt5.svg
+      ++ optional stdenv.isLinux alsaLib
+      ++ optional jackSupport libjack2
+      ++ optional speechdSupport speechd
+      ++ optional pulseSupport libpulseaudio;
+
+    configureFlags = [
+      "CONFIG+=no-server"
+    ];
+
+    installPhase = ''
+      cp scripts/mumble-overlay $out/bin
+      sed -i "s,/usr/lib,$out/lib,g" $out/bin/mumble-overlay
+
+      mkdir -p $out/share/applications
+      cp scripts/mumble.desktop $out/share/applications
+
+      mkdir -p $out/share/icons{,/hicolor/scalable/apps}
+      cp icons/mumble.svg $out/share/icons
+      ln -s $out/share/icon/mumble.svg $out/share/icons/hicolor/scalable/apps
+    '';
+  } source;
+
+  server = generic {
+    type = "murmur";
+
+    postPatch = optional iceSupport ''
+      sed -i 's,/usr/share/Ice/,${zeroc_ice}/,g' src/murmur/murmur.pro
+    '';
+
+    configureFlags = [
+      "CONFIG+=no-client"
+    ];
+
+    buildInputs = [ libcap ] ++ optional iceSupport [ zeroc_ice ];
+  };
+
+  stableSource = rec {
+    version = "1.2.10";
+    qtVersion = 4;
+
+    src = fetchurl {
+      url = "https://github.com/mumble-voip/mumble/releases/download/${version}/mumble-${version}.tar.gz";
+      sha256 = "012vm0xf84x13414jlsx964c5a1nwnbn41jnspkciajlxxipldn6";
+    };
   };
 
-  patches = optional jackSupport ./mumble-jack-support.patch;
-
-  configureFlags = [
-    "CONFIG+=shared"
-    "CONFIG+=no-g15"
-    "CONFIG+=packaged"
-    "CONFIG+=no-update"
-    "CONFIG+=no-server"
-    "CONFIG+=no-embed-qt-translations"
-    "CONFIG+=no-bundled-celt"
-    "CONFIG+=no-bundled-opus"
-    "CONFIG+=no-bundled-speex"
-  ] ++ optional (!speechdSupport) "CONFIG+=no-speechd"
-    ++ optional jackSupport "CONFIG+=no-oss CONFIG+=no-alsa CONFIG+=jackaudio";
-
-  configurePhase = ''
-    qmake $configureFlags
-  '';
-
-  nativeBuildInputs = [ pkgconfig ];
-
-  NIX_CFLAGS_COMPILE = [ "-I${celt}/include/celt" ];
-
-  buildInputs = [ avahi boost libopus celt libsndfile protobuf qt4 speex ]
-    ++ optional jackSupport libjack2
-    ++ optional speechdSupport speechd
-    ++ optional pulseSupport libpulseaudio;
-
-  installPhase = ''
-    mkdir -p $out
-    cp -r ./release $out/bin
-
-    mkdir -p $out/share/applications
-    cp scripts/mumble.desktop $out/share/applications
-
-    mkdir -p $out/share/icons
-    cp icons/mumble.svg $out/share/icons
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Low-latency, high quality voice chat software";
-    homepage = "http://mumble.sourceforge.net/";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ viric jgeerds ];
-    platforms = platforms.linux;
+  gitSource = rec {
+    version = "1.3.0-git-2015-09-27";
+    qtVersion = 5;
+
+    src = fetchgit {
+      url = "https://github.com/mumble-voip/mumble";
+      rev = "13e494c60beb20748eeb8be126b27e1226d168c8";
+      sha256 = "1vihassis5i7hyljbb8qjihjj4y80n5l380x5dl0nwb55j2mylhg";
+    };
+
+    # TODO: Remove fetchgit as it requires git
+    /*src = fetchFromGitHub {
+      owner = "mumble-voip";
+      repo = "mumble";
+      rev = "13e494c60beb20748eeb8be126b27e1226d168c8";
+      sha256 = "024my6wzahq16w7fjwrbksgnq98z4jjbdyy615kfyd9yk2qnpl80";
+    };
+
+    theme = fetchFromGitHub {
+      owner = "mumble-voip";
+      repo = "mumble-theme";
+      rev = "16b61d958f131ca85ab0f601d7331601b63d8f30";
+      sha256 = "0rbh825mwlh38j6nv2sran2clkiwvzj430mhvkdvzli9ysjxgsl3";
+    };
+
+    prePatch = ''
+      rmdir themes/Mumble
+      ln -s ${theme} themes/Mumble
+    '';*/
   };
+in {
+  mumble     = client stableSource;
+  mumble_git = client gitSource;
+  murmur     = server stableSource;
+  murmur_git = server gitSource;
 }