2025-03-06 09:09:51 +03:00

138 lines
2.7 KiB
Nix

{
fetchurl,
stdenv,
autoPatchelfHook,
makeWrapper,
lib,
makeDesktopItem,
copyDesktopItems,
dpkg,
# QQ Music dependencies
alsa-lib,
at-spi2-atk,
at-spi2-core,
cairo,
cups,
dbus,
expat,
gdk-pixbuf,
glib,
gtk3,
libdbusmenu,
libglvnd,
libpulseaudio,
nspr,
nss,
pango,
pciutils,
udev,
xorg,
}:
################################################################################
# Mostly based on qqmusic-bin package from AUR:
# https://aur.archlinux.org/packages/qqmusic-bin
################################################################################
stdenv.mkDerivation (finalAttrs: {
pname = "qqmusic";
version = "1.1.7";
src = fetchurl {
url = "https://dldir1.qq.com/music/clntupate/linux/qqmusic_${finalAttrs.version}_amd64.deb";
hash = "sha256-NPJHH7VwTzdNY87jFh28GaPjT7kRMweGI/XTOBAzM5E=";
};
nativeBuildInputs = [
autoPatchelfHook
makeWrapper
copyDesktopItems
dpkg
];
buildInputs = [
alsa-lib
at-spi2-atk
at-spi2-core
cairo
cups
dbus
expat
gdk-pixbuf
glib
gtk3
libdbusmenu
libglvnd
libpulseaudio
nspr
nss
pango
pciutils
udev
xorg.libX11
xorg.libxcb
xorg.libXcomposite
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXi
xorg.libXrandr
xorg.libXrender
xorg.libXScrnSaver
xorg.libXtst
];
unpackPhase = ''
runHook preUnpack
dpkg -x $src .
runHook postUnpack
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r opt/qqmusic $out/opt
cp -r usr/* $out/
rm -rf $out/opt/swiftshader
ln -sf ${libglvnd}/lib $out/opt/swiftshader
mkdir -p $out/bin
makeWrapper $out/opt/qqmusic $out/bin/qqmusic \
--argv0 "qqmusic" \
--add-flags "--no-sandbox" \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath finalAttrs.buildInputs}"
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = "qqmusic";
desktopName = "QQMusic";
exec = "qqmusic %U";
terminal = false;
icon = "qqmusic";
startupWMClass = "qqmusic";
comment = "Tencent QQMusic";
categories = [ "AudioVideo" ];
extraConfig = {
"Name[zh_CN]" = "QQ";
"Name[zh_TW]" = "QQ";
"Comment[zh_CN]" = "QQ";
"Comment[zh_TW]" = "QQ";
};
})
];
meta = {
maintainers = with lib.maintainers; [ xddxdd ];
description = "Tencent QQ Music";
homepage = "https://y.qq.com/";
platforms = [ "x86_64-linux" ];
license = lib.licenses.unfree;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})