Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / misc / googleearth-pro / default.nix
blob59912ef6b1ac85cbfd27bb12525a4fbdb1fcf5f3
1 { lib
2 , stdenv
3 , mkDerivation
4 , fetchurl
5 , freetype
6 , glib
7 , libGL
8 , libGLU
9 , libSM
11 , libXrender
12 , libX11
14 , libxcb
15 , sqlite
16 , zlib
17 , fontconfig
18 , dpkg
19 , libproxy
20 , libxml2
21 , gst_all_1
22 , dbus
23 , makeWrapper
25 , cups
26 , alsa-lib
28 , xkeyboardconfig
29 , autoPatchelfHook
31 let
32   arch =
33     if stdenv.hostPlatform.system == "x86_64-linux" then "amd64"
34     else throw "Unsupported system ${stdenv.hostPlatform.system} ";
36 mkDerivation rec {
37   pname = "googleearth-pro";
38   version = "7.3.4.8248";
40   src = fetchurl {
41     url = "https://dl.google.com/linux/earth/deb/pool/main/g/google-earth-pro-stable/google-earth-pro-stable_${version}-r0_${arch}.deb";
42     sha256 = "1pbapi267snlrjari5k93y6kbrjsqhqxgkxxqaqv4r25az00dx6d";
43   };
45   nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook ];
46   propagatedBuildInputs = [ xkeyboardconfig ];
47   buildInputs = [
48     dbus
49     cups
50     fontconfig
51     freetype
52     glib
53     gst_all_1.gst-plugins-base
54     gst_all_1.gstreamer
55     libGL
56     libGLU
57     libSM
58     libX11
59     libXrender
60     libproxy
61     libxcb
62     libxml2
63     sqlite
64     zlib
65     alsa-lib
66   ];
68   doInstallCheck = true;
70   dontBuild = true;
72   unpackPhase = ''
73     # deb file contains a setuid binary, so 'dpkg -x' doesn't work here
74     mkdir deb
75     dpkg --fsys-tarfile ${src} | tar --extract -C deb
76   '';
78   installPhase =''
79     runHook preInstall
81     mkdir $out
82     mv deb/usr/* $out/
83     rmdir deb/usr
84     mv deb/* $out/
85     rm $out/bin/google-earth-pro $out/opt/google/earth/pro/googleearth
87     # patch and link googleearth binary
88     ln -s $out/opt/google/earth/pro/googleearth-bin $out/bin/googleearth-pro
90     # patch and link gpsbabel binary
91     ln -s $out/opt/google/earth/pro/gpsbabel $out/bin/gpsbabel
93     # Add desktop config file and icons
94     mkdir -p $out/share/{applications,icons/hicolor/{16x16,22x22,24x24,32x32,48x48,64x64,128x128,256x256}/apps,pixmaps}
95     ln -s $out/opt/google/earth/pro/google-earth-pro.desktop $out/share/applications/google-earth-pro.desktop
96     sed -i -e "s|Exec=.*|Exec=$out/bin/googleearth-pro|g" $out/opt/google/earth/pro/google-earth-pro.desktop
97     for size in 16 22 24 32 48 64 128 256; do
98       ln -s $out/opt/google/earth/pro/product_logo_"$size".png $out/share/icons/hicolor/"$size"x"$size"/apps/google-earth-pro.png
99     done
100     ln -s $out/opt/google/earth/pro/product_logo_256.png $out/share/pixmaps/google-earth-pro.png
102     runHook postInstall
103   '';
105   installCheckPhase = ''
106     $out/bin/gpsbabel -V > /dev/null
107   '';
109   # wayland is not supported by Qt included in binary package, so make sure it uses xcb
110   postFixup = ''
111     wrapProgram $out/bin/googleearth-pro \
112       --set QT_QPA_PLATFORM xcb \
113       --set QT_XKB_CONFIG_ROOT "${xkeyboardconfig}/share/X11/xkb"
114   '';
116   meta = with lib; {
117     description = "A world sphere viewer";
118     homepage = "https://www.google.com/earth/";
119     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
120     license = licenses.unfree;
121     maintainers = with maintainers; [ friedelino shamilton ];
122     platforms = platforms.linux;
123     knownVulnerabilities = [ "Includes vulnerable bundled libraries." ];
124   };