{ lib, stdenv, fetchurl, makeWrapper, makeDesktopItem, zlib, glib, libpng, freetype, openssl , xorg, fontconfig, qtbase, qtwebengine, qtwebchannel, qtsvg, qtwebsockets, xkeyboard_config , alsa-lib, libpulseaudio ? null, libredirect, quazip, which, unzip, llvmPackages_10, writeShellScriptBin }: let arch = if stdenv.is64bit then "amd64" else "x86"; libDir = if stdenv.is64bit then "lib64" else "lib"; deps = [ zlib glib libpng freetype xorg.libSM xorg.libICE xorg.libXrender openssl xorg.libXrandr xorg.libXfixes xorg.libXcursor xorg.libXinerama xorg.libxcb fontconfig xorg.libXext xorg.libX11 alsa-lib qtbase qtwebengine qtwebchannel qtsvg qtwebsockets libpulseaudio quazip llvmPackages_10.libcxx llvmPackages_10.libcxxabi # llvmPackages_11 and higher crash https://github.com/NixOS/nixpkgs/issues/161395 ]; desktopItem = makeDesktopItem { name = "teamspeak"; exec = "ts3client"; icon = "teamspeak"; comment = "The TeamSpeak voice communication tool"; desktopName = "TeamSpeak"; genericName = "TeamSpeak"; categories = [ "Network" ]; }; fakeLess = writeShellScriptBin "less" "cat"; in stdenv.mkDerivation rec { pname = "teamspeak-client"; version = "3.5.6"; src = fetchurl { url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"; sha256 = if stdenv.is64bit then "sha256:0hjai1bd4mq3g2dlyi0zkn8s4zlgxd38skw77mb78nc4di5gvgpg" else "sha256:1y1c65nap91nv9xkvd96fagqbfl56p9n0rl6iac0i29bkysdmija"; }; # grab the plugin sdk for the desktop icon pluginsdk = fetchurl { url = "http://dl.4players.de/ts/client/pluginsdk/pluginsdk_3.1.1.1.zip"; sha256 = "1bywmdj54glzd0kffvr27r84n4dsd0pskkbmh59mllbxvj0qwy7f"; }; nativeBuildInputs = [ makeWrapper fakeLess which unzip ]; unpackPhase = '' echo -e '\ny' | sh -xe $src cd TeamSpeak* ''; buildPhase = '' mv ts3client_linux_${arch} ts3client echo "patching ts3client..." patchelf --replace-needed libquazip.so ${quazip}/lib/libquazip1-qt5.so ts3client patchelf \ --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ --set-rpath ${lib.makeLibraryPath deps}:$(cat $NIX_CC/nix-support/orig-cc)/${libDir} \ --force-rpath \ ts3client ''; installPhase = '' # Delete unecessary libraries - these are provided by nixos. rm *.so.* *.so rm QtWebEngineProcess rm qt.conf rm -r platforms # contains libqxcb.so # Install files. mkdir -p $out/lib/teamspeak mv * $out/lib/teamspeak/ # Make a desktop item mkdir -p $out/share/applications/ $out/share/icons/hicolor/64x64/apps/ unzip ${pluginsdk} cp pluginsdk/docs/client_html/images/logo.png $out/share/icons/hicolor/64x64/apps/teamspeak.png cp ${desktopItem}/share/applications/* $out/share/applications/ # Make a symlink to the binary from bin. mkdir -p $out/bin/ ln -s $out/lib/teamspeak/ts3client $out/bin/ts3client wrapProgram $out/bin/ts3client \ --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ --set QT_PLUGIN_PATH "${qtbase}/${qtbase.qtPluginPrefix}" \ --set NIX_REDIRECTS /usr/share/X11/xkb=${xkeyboard_config}/share/X11/xkb ''; dontStrip = true; dontPatchELF = true; meta = with lib; { description = "The TeamSpeak voice communication tool"; homepage = "https://teamspeak.com/"; license = { fullName = "Teamspeak client license"; url = "https://www.teamspeak.com/en/privacy-and-terms/"; free = false; }; maintainers = with maintainers; [ lhvwb lukegb ]; platforms = [ "i686-linux" "x86_64-linux" ]; }; } /* License issues: Date: Mon, 10 Dec 2007 19:55:16 -0500 From: TeamSpeak Sales To: 'Marc Weber' Subject: RE: teamspeak on nix? Yes, that would be fine. As long as you are not renting servers or selling TeamSpeak then you are more than welcome to distribute it. Thank you, TeamSpeak Sales Team ________________________________ e-Mail: sales@tritoncia.com TeamSpeak: http://www.TeamSpeak.com Account Login: https://sales.TritonCIA.com/users -----Original Message----- From: Marc Weber [mailto:marco-oweber@gmx.de] Sent: Monday, December 10, 2007 5:03 PM To: sales@tritoncia.com Subject: teamspeak on nix? Hello, nix is very young software distribution system (http://nix.cs.uu.nl/) I'd like to ask wether you permit us to add teamspeak (server/ client?) Sincerly Marc Weber (small nix contributor) */