mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-22 08:30:57 +00:00
teamspeak3: modernise (#354161)
This commit is contained in:
@@ -1,168 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
fetchzip,
|
||||
makeWrapper,
|
||||
makeDesktopItem,
|
||||
zlib,
|
||||
glib,
|
||||
libpng,
|
||||
freetype,
|
||||
openssl,
|
||||
xorg,
|
||||
fontconfig,
|
||||
qtbase,
|
||||
qtwebengine,
|
||||
qtwebchannel,
|
||||
qtsvg,
|
||||
qtwebsockets,
|
||||
xkeyboard_config,
|
||||
alsa-lib,
|
||||
libpulseaudio ? null,
|
||||
libredirect,
|
||||
quazip,
|
||||
which,
|
||||
perl,
|
||||
llvmPackages,
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
arch = "amd64";
|
||||
|
||||
libDir = "lib64";
|
||||
|
||||
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.libcxx
|
||||
];
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "teamspeak";
|
||||
exec = "ts3client";
|
||||
icon = "teamspeak";
|
||||
comment = "The TeamSpeak voice communication tool";
|
||||
desktopName = "TeamSpeak";
|
||||
genericName = "TeamSpeak";
|
||||
categories = [ "Network" ];
|
||||
};
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "teamspeak-client";
|
||||
|
||||
version = "3.6.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run";
|
||||
hash = "sha256-WfEQQ4lxoj+QSnAOfdCoEc+Z1Oa5dbo6pFli1DsAZCI=";
|
||||
};
|
||||
|
||||
# grab the plugin sdk for the desktop icon
|
||||
pluginsdk = fetchzip {
|
||||
url = "https://files.teamspeak-services.com/releases/sdk/3.3.1/ts_sdk_3.3.1.zip";
|
||||
hash = "sha256-wx4pBZHpFPoNvEe4xYE80KnXGVda9XcX35ho4R8QxrQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
which
|
||||
perl # Installer script needs `shasum`
|
||||
];
|
||||
|
||||
# This just runs the installer script. If it gets stuck at something like
|
||||
# ++ exec
|
||||
# + PAGER_PATH=
|
||||
# it's looking for a dependency and didn't find it. Check the script and make sure the dep is in nativeBuildInputs.
|
||||
unpackPhase = ''
|
||||
echo -e '\ny' | PAGER=cat 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/
|
||||
cp ${pluginsdk}/doc/_static/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}" \
|
||||
'' # wayland is currently broken, remove when TS3 fixes that
|
||||
+ ''
|
||||
--set QT_QPA_PLATFORM xcb \
|
||||
--set NIX_REDIRECTS /usr/share/X11/xkb=${xkeyboard_config}/share/X11/xkb
|
||||
'';
|
||||
|
||||
dontStrip = true;
|
||||
dontPatchELF = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "TeamSpeak voice communication tool";
|
||||
homepage = "https://teamspeak.com/";
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = {
|
||||
# See distribution-permit.txt for a confirmation that nixpkgs is allowed to distribute TeamSpeak.
|
||||
fullName = "Teamspeak client license";
|
||||
url = "https://www.teamspeak.com/en/privacy-and-terms/";
|
||||
free = false;
|
||||
};
|
||||
maintainers = with maintainers; [
|
||||
lhvwb
|
||||
lukegb
|
||||
atemu
|
||||
];
|
||||
mainProgram = "ts3client";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
143
pkgs/by-name/te/teamspeak3/package.nix
Normal file
143
pkgs/by-name/te/teamspeak3/package.nix
Normal file
@@ -0,0 +1,143 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
fetchzip,
|
||||
makeDesktopItem,
|
||||
glib,
|
||||
qt5,
|
||||
libsForQt5,
|
||||
perl,
|
||||
libcxx,
|
||||
autoPatchelfHook,
|
||||
copyDesktopItems,
|
||||
}:
|
||||
|
||||
let
|
||||
pluginsdk = fetchzip {
|
||||
url = "https://files.teamspeak-services.com/releases/sdk/3.3.1/ts_sdk_3.3.1.zip";
|
||||
hash = "sha256-wx4pBZHpFPoNvEe4xYE80KnXGVda9XcX35ho4R8QxrQ=";
|
||||
};
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "teamspeak3";
|
||||
|
||||
version = "3.6.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_amd64-${version}.run";
|
||||
hash = "sha256-WfEQQ4lxoj+QSnAOfdCoEc+Z1Oa5dbo6pFli1DsAZCI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
perl # Installer script needs `shasum`
|
||||
qt5.wrapQtAppsHook
|
||||
autoPatchelfHook
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
[
|
||||
libsForQt5.quazip
|
||||
glib
|
||||
libcxx
|
||||
]
|
||||
++ (with qt5; [
|
||||
qtbase
|
||||
qtwebengine
|
||||
qtwebchannel
|
||||
qtwebsockets
|
||||
qtsvg
|
||||
]);
|
||||
|
||||
# This runs the installer script. If it gets stuck, run it with -x.
|
||||
# If it then gets stuck at something like:
|
||||
#
|
||||
# ++ exec
|
||||
# + PAGER_PATH=
|
||||
#
|
||||
# it's looking for a dependency and didn't find it. Check the script and make
|
||||
# sure the dep is in nativeBuildInputs.
|
||||
unpackPhase = ''
|
||||
runHook preUnpack
|
||||
|
||||
# Run the installer script non-interactively
|
||||
echo -e '\ny' | PAGER=cat sh -e $src
|
||||
|
||||
cd TeamSpeak3-Client-linux_amd64
|
||||
|
||||
runHook postUnpack
|
||||
'';
|
||||
|
||||
patchPhase = ''
|
||||
runHook prePatch
|
||||
|
||||
# Delete unecessary libraries - these are provided by nixos.
|
||||
find . -\( -name '*.so' -or -name '*.so.*' -\) -print0 | xargs -0 rm # I hate find.
|
||||
|
||||
rm QtWebEngineProcess
|
||||
rm qt.conf
|
||||
|
||||
mv ts3client_linux_amd64 ts3client
|
||||
|
||||
# Our libquazip's so name has this suffix and there is no symlink
|
||||
patchelf --replace-needed libquazip.so libquazip1-qt5.so ts3client error_report
|
||||
|
||||
runHook postPatch
|
||||
'';
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "teamspeak";
|
||||
exec = "ts3client";
|
||||
icon = "teamspeak";
|
||||
comment = "The TeamSpeak voice communication tool";
|
||||
desktopName = "TeamSpeak";
|
||||
genericName = "TeamSpeak";
|
||||
categories = [ "Network" ];
|
||||
})
|
||||
];
|
||||
|
||||
qtWrapperArgs = [
|
||||
# wayland is currently broken, remove when TS3 fixes that
|
||||
"--set QT_QPA_PLATFORM xcb"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/opt/teamspeak
|
||||
mv * $out/opt/teamspeak/
|
||||
|
||||
# Grab the desktop icon from the plugin sdk
|
||||
install ${pluginsdk}/doc/_static/logo.png -D $out/share/icons/hicolor/64x64/apps/teamspeak.png
|
||||
|
||||
mkdir -p $out/bin/
|
||||
ln -s $out/opt/teamspeak/ts3client $out/bin/ts3client
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "TeamSpeak voice communication tool";
|
||||
homepage = "https://teamspeak.com/";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
license = {
|
||||
# See distribution-permit.txt for a confirmation that nixpkgs is allowed to distribute TeamSpeak.
|
||||
fullName = "Teamspeak client license";
|
||||
url = "https://www.teamspeak.com/en/privacy-and-terms/";
|
||||
free = false;
|
||||
};
|
||||
maintainers = with lib.maintainers; [
|
||||
lhvwb
|
||||
lukegb
|
||||
atemu
|
||||
];
|
||||
mainProgram = "ts3client";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
@@ -1184,6 +1184,7 @@ mapAliases {
|
||||
tclx = tclPackages.tclx; # Added 2024-10-02
|
||||
tdesktop = telegram-desktop; # Added 2023-04-07
|
||||
tdom = tclPackages.tdom; # Added 2024-10-02
|
||||
teamspeak_client = teamspeak3; # Added 2024-11-07
|
||||
teck-programmer = throw "teck-programmer was removed because it was broken and unmaintained"; # added 2024-08-23
|
||||
teleport_13 = throw "teleport 13 has been removed as it is EOL. Please upgrade to Teleport 14 or later"; # Added 2024-05-26
|
||||
teleport_14 = throw "teleport 14 has been removed as it is EOL. Please upgrade to Teleport 15 or later"; # Added 2024-10-18
|
||||
|
||||
@@ -16081,7 +16081,6 @@ with pkgs;
|
||||
|
||||
tamgamp.lv2 = callPackage ../applications/audio/tamgamp.lv2 { };
|
||||
|
||||
teamspeak_client = libsForQt5.callPackage ../applications/networking/instant-messengers/teamspeak/client.nix { };
|
||||
teamspeak5_client = callPackage ../applications/networking/instant-messengers/teamspeak/client5.nix { };
|
||||
teamspeak_server = callPackage ../applications/networking/instant-messengers/teamspeak/server.nix { };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user