From 5f57ca4b79e0a659224a6e4232f063195d316e3e Mon Sep 17 00:00:00 2001 From: Asmir A Date: Sun, 29 Oct 2023 12:15:51 +0100 Subject: [PATCH] packages/viber: add derivation --- home/sway.nix | 6 +- packages/viber/default.nix | 155 +++++++++++++++++++++++++++++++++++++ 2 files changed, 158 insertions(+), 3 deletions(-) create mode 100644 packages/viber/default.nix diff --git a/home/sway.nix b/home/sway.nix index f9001f0..8c3d810 100644 --- a/home/sway.nix +++ b/home/sway.nix @@ -18,11 +18,11 @@ window.commands = [ { command = "move scratchpad, resize set 1152 648"; - criteria = {app_id = "pulsemixer|python3|com.rtosta.zapzap|whatsapp-for-linux|com.viber.Viber";}; + criteria = {app_id = "pulsemixer|python3|com.rtosta.zapzap|whatsapp-for-linux|com.viber";}; } { command = "move scratchpad, resize set 1502 845"; - criteria = {class = "ViberPC";}; + criteria = {app_id = "com.viber";}; } { command = "floating enable"; @@ -107,7 +107,7 @@ "Mod4+l" = '' exec swaymsg [app_id="python3"] scratchpad show || exec foot -a python3 python3''; "Mod4+h" = "exec swaymsg [app_id=com.rtosta.zapzap] scratchpad show || exec zapzap"; - "Mod4+j" = "exec swaymsg [app_id=com.viber.Viber] scratchpad show"; + "Mod4+j" = "exec swaymsg [app_id=com.viber] scratchpad show || exec viber"; "Mod4+y" = '' exec swaymsg [app_id="pulsemixer"] scratchpad show || exec foot -a pulsemixer pulsemixer''; diff --git a/packages/viber/default.nix b/packages/viber/default.nix new file mode 100644 index 0000000..6907f17 --- /dev/null +++ b/packages/viber/default.nix @@ -0,0 +1,155 @@ +{ + alsa-lib, + brotli, + cups, + curl, + dbus, + dpkg, + expat, + fetchurl, + fontconfig, + freetype, + glib, + gst_all_1, + harfbuzz, + krb5, + lcms, + lib, + libcap, + libevent, + libGL, + libGLU, + libopus, + libpulseaudio, + libwebp, + libxkbcommon, + libxml2, + libxslt, + makeWrapper, + mesa, + nspr, + nss, + openssl, + snappy, + stdenv, + systemd, + wayland, + xorg, + zlib, + zstd, + ... +}: +stdenv.mkDerivation { + pname = "viber"; + version = "21.0.0.1"; + + src = fetchurl { + # Official link: https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb + url = "https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb"; + sha256 = "0q34mwbk0i2vj2f16hk7pyshl8fqwym3lyr7iss22qw8cxx3mcg3"; + }; + + nativeBuildInputs = [makeWrapper]; + buildInputs = [dpkg]; + + dontUnpack = true; + + libPath = lib.makeLibraryPath [ + alsa-lib + brotli + cups + curl + dbus + expat + fontconfig + freetype + glib + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-base + gst_all_1.gstreamer + harfbuzz + krb5 + lcms + libcap + libevent + libGLU + libGL + libopus + libpulseaudio + libwebp + libxkbcommon + libxml2 + libxslt + mesa + nspr + nss + openssl + snappy + stdenv.cc.cc + systemd + wayland + zlib + zstd + + xorg.libICE + xorg.libSM + xorg.libX11 + xorg.libxcb + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrandr + xorg.libXrender + xorg.libXScrnSaver + xorg.libXtst + xorg.xcbutilimage + xorg.xcbutilkeysyms + xorg.xcbutilrenderutil + xorg.xcbutilwm + xorg.libxkbfile + ]; + + installPhase = '' + dpkg-deb -x $src $out + mkdir -p $out/bin + + # Soothe nix-build "suspicions" + chmod -R g-w $out + + for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true + patchelf --set-rpath $libPath:$out/opt/viber/lib $file || true + done + + # qt.conf is not working, so override everything using environment variables + wrapProgram $out/opt/viber/Viber \ + --set QT_PLUGIN_PATH "$out/opt/viber/plugins" \ + --set QT_XKB_CONFIG_ROOT "${xorg.xkeyboardconfig}/share/X11/xkb" \ + --set QTCOMPOSE "${xorg.libX11.out}/share/X11/locale" \ + --set QML2_IMPORT_PATH "$out/opt/viber/qml" + ln -s $out/opt/viber/Viber $out/bin/viber + + mv $out/usr/share $out/share + rm -rf $out/usr + + # Fix the desktop link + substituteInPlace $out/share/applications/viber.desktop \ + --replace /opt/viber/Viber $out/opt/viber/Viber \ + --replace /usr/share/ $out/share/ + ''; + + dontStrip = true; + dontPatchELF = true; + + meta = { + homepage = "https://www.viber.com"; + description = "An instant messaging and Voice over IP (VoIP) app"; + sourceProvenance = with lib.sourceTypes; [binaryNativeCode]; + license = lib.licenses.unfree; + platforms = ["x86_64-linux"]; + maintainers = with lib.maintainers; [jagajaga]; + }; +}