diff --git a/pkgs/by-name/qq/qqmusic/package.nix b/pkgs/by-name/qq/qqmusic/package.nix new file mode 100644 index 000000000000..4faa34fd83a4 --- /dev/null +++ b/pkgs/by-name/qq/qqmusic/package.nix @@ -0,0 +1,139 @@ +{ + 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, + mesa, + 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 + mesa + 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 ]; + }; +})