about summary refs log tree commit diff
path: root/pkgs/by-name/sk/skypeforlinux/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/sk/skypeforlinux/package.nix')
-rw-r--r--pkgs/by-name/sk/skypeforlinux/package.nix197
1 files changed, 197 insertions, 0 deletions
diff --git a/pkgs/by-name/sk/skypeforlinux/package.nix b/pkgs/by-name/sk/skypeforlinux/package.nix
new file mode 100644
index 0000000000000..e898a4b63df75
--- /dev/null
+++ b/pkgs/by-name/sk/skypeforlinux/package.nix
@@ -0,0 +1,197 @@
+{
+  lib,
+  stdenv,
+  fetchurl,
+  squashfsTools,
+  writeScript,
+  alsa-lib,
+  atk,
+  cairo,
+  cups,
+  curl,
+  dbus,
+  expat,
+  fontconfig,
+  freetype,
+  gdk-pixbuf,
+  glib,
+  glibc,
+  gnome-keyring,
+  gtk3,
+  libappindicator-gtk3,
+  libnotify,
+  libpulseaudio,
+  libsecret,
+  libv4l,
+  nspr,
+  nss,
+  pango,
+  systemd,
+  wrapGAppsHook3,
+  xorg,
+  at-spi2-atk,
+  libuuid,
+  at-spi2-core,
+  libdrm,
+  mesa,
+  libxkbcommon,
+  libxshmfence,
+}:
+
+let
+
+  # Please keep the version x.y.0.z and do not update to x.y.76.z because the
+  # source of the latter disappears much faster.
+  version = "8.119.0.201";
+  revision = "348";
+
+  rpath =
+    lib.makeLibraryPath [
+      alsa-lib
+      atk
+      at-spi2-atk
+      at-spi2-core
+      cairo
+      cups
+      curl
+      dbus
+      expat
+      fontconfig
+      freetype
+      glib
+      glibc
+      libsecret
+      libuuid
+
+      gdk-pixbuf
+      gtk3
+      libappindicator-gtk3
+
+      gnome-keyring
+
+      libnotify
+      libpulseaudio
+      nspr
+      nss
+      pango
+      stdenv.cc.cc
+      systemd
+
+      libv4l
+      libdrm
+      mesa
+      libxkbcommon
+      libxshmfence
+      xorg.libxkbfile
+      xorg.libX11
+      xorg.libXcomposite
+      xorg.libXcursor
+      xorg.libXdamage
+      xorg.libXext
+      xorg.libXfixes
+      xorg.libXi
+      xorg.libXrandr
+      xorg.libXrender
+      xorg.libXtst
+      xorg.libXScrnSaver
+      xorg.libxcb
+    ]
+    + ":${stdenv.cc.cc.lib}/lib64";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        name = "skypeforlinux-${version}-${revision}.snap";
+        url = "https://api.snapcraft.io/api/v1/snaps/download/QRDEfjn4WJYnm0FzDKwqqRZZI77awQEV_${revision}.snap";
+        hash = "sha512-sHbLmpF+5qaKTUArHceqv91NJxNpflQE2ojO9sepQBhXacn66hluC7cGb7toQnteYKUsx00TBYs2Ugk/BkT0uA==";
+      }
+    else
+      throw "Skype for linux is not supported on ${stdenv.hostPlatform.system}";
+
+in
+stdenv.mkDerivation {
+  pname = "skypeforlinux";
+  inherit version revision;
+
+  system = "x86_64-linux";
+
+  inherit src;
+
+  nativeBuildInputs = [
+    wrapGAppsHook3
+    glib # For setup hook populating GSETTINGS_SCHEMA_PATH
+  ];
+
+  buildInputs = [ squashfsTools ];
+
+  unpackPhase = ''
+    runHook preUnpack
+
+    unsquashfs "$src" '/meta/gui/*.desktop' \
+        /usr/share/{doc/skypeforlinux,'icons/hicolor/*/apps/skypeforlinux.png',kservices5,pixmaps,skypeforlinux}
+    sourceRoot=squashfs-root
+
+    runHook postUnpack
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/bin"
+    mv meta/gui usr/share/applications
+    mv usr/share "$out"
+    ln -s "$out/share/skypeforlinux/skypeforlinux" "$out/bin"
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* -or -name \*.node\* \) ); do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
+      patchelf --set-rpath ${rpath}:$out/share/skypeforlinux $file || true
+    done
+
+    # Fix the desktop link
+    substituteInPlace "$out/share/applications/"*.desktop \
+      --replace-fail 'Exec=skype ' 'Exec=skypeforlinux ' \
+      --replace-fail 'Icon=''${SNAP}/meta/gui/skypeforlinux.png' 'Icon=skypeforlinux'
+    substituteInPlace "$out/share/kservices5/ServiceMenus/skypeforlinux.desktop" \
+      --replace-fail 'Exec=/usr/bin/skypeforlinux ' 'Exec=skypeforlinux '
+  '';
+
+  passthru.updateScript = writeScript "update-skypeforlinux" ''
+    #!/usr/bin/env nix-shell
+    #!nix-shell -i bash -p common-updater-scripts curl jq
+
+    set -eu -o pipefail
+
+    data=$(curl -H 'X-Ubuntu-Series: 16' \
+      'https://api.snapcraft.io/api/v1/snaps/details/skype?channel=stable&fields=download_sha512,revision,version')
+
+    version=$(jq -r .version <<<"$data")
+
+    if [[ "x$UPDATE_NIX_OLD_VERSION" != "x$version" ]]; then
+
+        revision=$(jq -r .revision <<<"$data")
+        hash=$(nix hash to-sri "sha512:$(jq -r .download_sha512 <<<"$data")")
+
+        update-source-version "$UPDATE_NIX_ATTR_PATH" "$version" "$hash"
+        update-source-version --ignore-same-hash --version-key=revision "$UPDATE_NIX_ATTR_PATH" "$revision" "$hash"
+
+    fi
+  '';
+
+  meta = {
+    description = "Linux client for Skype";
+    homepage = "https://www.skype.com";
+    changelog = "https://support.microsoft.com/en-us/skype/what-s-new-in-skype-for-windows-mac-linux-and-web-d32f674c-abb3-40a5-a0b7-ee269ca60831";
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    license = lib.licenses.unfree;
+    maintainers = with lib.maintainers; [
+      panaeon
+      jraygauthier
+    ];
+    platforms = [ "x86_64-linux" ];
+    mainProgram = "skypeforlinux";
+  };
+}