chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / sk / skypeforlinux / package.nix
blob1d818d11ae2d30a99e97e27047efddd012d0b827
2   lib,
3   stdenv,
4   fetchurl,
5   squashfsTools,
6   writeScript,
7   alsa-lib,
8   atk,
9   cairo,
10   cups,
11   curl,
12   dbus,
13   expat,
14   fontconfig,
15   freetype,
16   gdk-pixbuf,
17   glib,
18   glibc,
19   gnome-keyring,
20   gtk3,
21   libappindicator-gtk3,
22   libnotify,
23   libpulseaudio,
24   libsecret,
25   libv4l,
26   nspr,
27   nss,
28   pango,
29   systemd,
30   wrapGAppsHook3,
31   xorg,
32   at-spi2-atk,
33   libuuid,
34   at-spi2-core,
35   libdrm,
36   mesa,
37   libxkbcommon,
38   libxshmfence,
41 let
43   # Please keep the version x.y.0.z and do not update to x.y.76.z because the
44   # source of the latter disappears much faster.
45   version = "8.129.0.202";
46   revision = "365";
48   rpath =
49     lib.makeLibraryPath [
50       alsa-lib
51       atk
52       at-spi2-atk
53       at-spi2-core
54       cairo
55       cups
56       curl
57       dbus
58       expat
59       fontconfig
60       freetype
61       glib
62       glibc
63       libsecret
64       libuuid
66       gdk-pixbuf
67       gtk3
68       libappindicator-gtk3
70       gnome-keyring
72       libnotify
73       libpulseaudio
74       nspr
75       nss
76       pango
77       stdenv.cc.cc
78       systemd
80       libv4l
81       libdrm
82       mesa
83       libxkbcommon
84       libxshmfence
85       xorg.libxkbfile
86       xorg.libX11
87       xorg.libXcomposite
88       xorg.libXcursor
89       xorg.libXdamage
90       xorg.libXext
91       xorg.libXfixes
92       xorg.libXi
93       xorg.libXrandr
94       xorg.libXrender
95       xorg.libXtst
96       xorg.libXScrnSaver
97       xorg.libxcb
98     ]
99     + ":${stdenv.cc.cc.lib}/lib64";
101   src =
102     if stdenv.hostPlatform.system == "x86_64-linux" then
103       fetchurl {
104         name = "skypeforlinux-${version}-${revision}.snap";
105         url = "https://api.snapcraft.io/api/v1/snaps/download/QRDEfjn4WJYnm0FzDKwqqRZZI77awQEV_${revision}.snap";
106         hash = "sha512-pxLh/dU/RK1H5gjFLB0V4mVddgQkO8ZcJowpNNihECsLaELgoeXmWXflhYFs2G7fdEzNMeujuc4/ZoGCFSZCvw==";
107       }
108     else
109       throw "Skype for linux is not supported on ${stdenv.hostPlatform.system}";
112 stdenv.mkDerivation {
113   pname = "skypeforlinux";
114   inherit version revision;
116   system = "x86_64-linux";
118   inherit src;
120   nativeBuildInputs = [
121     wrapGAppsHook3
122     glib # For setup hook populating GSETTINGS_SCHEMA_PATH
123   ];
125   buildInputs = [ squashfsTools ];
127   unpackPhase = ''
128     runHook preUnpack
130     unsquashfs "$src" '/meta/gui/*.desktop' \
131         /usr/share/{doc/skypeforlinux,'icons/hicolor/*/apps/skypeforlinux.png',kservices5,pixmaps,skypeforlinux}
132     sourceRoot=squashfs-root
134     runHook postUnpack
135   '';
137   installPhase = ''
138     runHook preInstall
140     mkdir -p "$out/bin"
141     mv meta/gui usr/share/applications
142     mv usr/share "$out"
143     ln -s "$out/share/skypeforlinux/skypeforlinux" "$out/bin"
145     runHook postInstall
146   '';
148   postFixup = ''
149     for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* -or -name \*.node\* \) ); do
150       patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
151       patchelf --set-rpath ${rpath}:$out/share/skypeforlinux $file || true
152     done
154     # Fix the desktop link
155     substituteInPlace "$out/share/applications/"*.desktop \
156       --replace-fail 'Exec=skype ' 'Exec=skypeforlinux ' \
157       --replace-fail 'Icon=''${SNAP}/meta/gui/skypeforlinux.png' 'Icon=skypeforlinux'
158     substituteInPlace "$out/share/kservices5/ServiceMenus/skypeforlinux.desktop" \
159       --replace-fail 'Exec=/usr/bin/skypeforlinux ' 'Exec=skypeforlinux '
160   '';
162   passthru.updateScript = writeScript "update-skypeforlinux" ''
163     #!/usr/bin/env nix-shell
164     #!nix-shell -i bash -p common-updater-scripts curl jq
166     set -eu -o pipefail
168     data=$(curl -H 'X-Ubuntu-Series: 16' \
169       'https://api.snapcraft.io/api/v1/snaps/details/skype?channel=stable&fields=download_sha512,revision,version')
171     version=$(jq -r .version <<<"$data")
173     if [[ "x$UPDATE_NIX_OLD_VERSION" != "x$version" ]]; then
175         revision=$(jq -r .revision <<<"$data")
176         hash=$(nix hash to-sri "sha512:$(jq -r .download_sha512 <<<"$data")")
178         update-source-version "$UPDATE_NIX_ATTR_PATH" "$version" "$hash"
179         update-source-version --ignore-same-hash --version-key=revision "$UPDATE_NIX_ATTR_PATH" "$revision" "$hash"
181     fi
182   '';
184   meta = {
185     description = "Linux client for Skype";
186     homepage = "https://www.skype.com";
187     changelog = "https://support.microsoft.com/en-us/skype/what-s-new-in-skype-for-windows-mac-linux-and-web-d32f674c-abb3-40a5-a0b7-ee269ca60831";
188     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
189     license = lib.licenses.unfree;
190     maintainers = [ lib.maintainers.mjoerg ];
191     platforms = [ "x86_64-linux" ];
192     mainProgram = "skypeforlinux";
193   };