flirt: init at 0.2 (#362189)
[NixPkgs.git] / pkgs / development / tools / unityhub / default.nix
blobd7d2bd2c2a8cc3157622bda4a403879e1f231841
1 { lib
2 , stdenv
3 , fetchurl
4 , dpkg
5 , makeWrapper
6 , buildFHSEnv
7 , extraPkgs ? pkgs: [ ]
8 , extraLibs ? pkgs: [ ]
9 }:
11 stdenv.mkDerivation rec {
12   pname = "unityhub";
13   version = "3.10.0";
15   src = fetchurl {
16     url = "https://hub-dist.unity3d.com/artifactory/hub-debian-prod-local/pool/main/u/unity/unityhub_amd64/unityhub-amd64-${version}.deb";
17     sha256 = "sha256-9dm6tVQ5nsDC8X2clrT4cAl8jg4wLwcihE4bnFgdU+A=";
18   };
20   nativeBuildInputs = [
21     dpkg
22     makeWrapper
23   ];
25   fhsEnv = buildFHSEnv {
26     name = "${pname}-fhs-env";
27     runScript = "";
29     targetPkgs = pkgs: with pkgs; [
30       # Unity Hub binary dependencies
31       xorg.libXrandr
32       xdg-utils
34       # GTK filepicker
35       gsettings-desktop-schemas
36       hicolor-icon-theme
38       # Bug Reporter dependencies
39       fontconfig
40       freetype
41       lsb-release
42     ] ++ extraPkgs pkgs;
44     multiPkgs = pkgs: with pkgs; [
45       # Unity Hub ldd dependencies
46       cups
47       gtk3
48       expat
49       libxkbcommon
50       lttng-ust_2_12
51       krb5
52       alsa-lib
53       nss
54       libdrm
55       mesa
56       nspr
57       atk
58       dbus
59       at-spi2-core
60       pango
61       xorg.libXcomposite
62       xorg.libXext
63       xorg.libXdamage
64       xorg.libXfixes
65       xorg.libxcb
66       xorg.libxshmfence
67       xorg.libXScrnSaver
68       xorg.libXtst
70       # Unity Hub additional dependencies
71       libva
72       openssl
73       cairo
74       libnotify
75       libuuid
76       libsecret
77       udev
78       libappindicator
79       wayland
80       cpio
81       icu
82       libpulseaudio
84       # Unity Editor dependencies
85       libglvnd # provides ligbl
86       xorg.libX11
87       xorg.libXcursor
88       glib
89       gdk-pixbuf
90       libxml2
91       zlib
92       clang
93       git # for git-based packages in unity package manager
95       # Unity Editor 2019 specific dependencies
96       xorg.libXi
97       xorg.libXrender
98       gnome2.GConf
99       libcap
101       # Unity Editor 6000 specific dependencies
102       harfbuzz
103     ] ++ extraLibs pkgs;
104   };
106   unpackCmd = "dpkg -x $curSrc src";
108   dontConfigure = true;
109   dontBuild = true;
111   installPhase = ''
112     runHook preInstall
114     mkdir -p $out
115     mv opt/ usr/share/ $out
117     # `/opt/unityhub/unityhub` is a shell wrapper that runs `/opt/unityhub/unityhub-bin`
118     # Which we don't need and overwrite with our own custom wrapper
119     makeWrapper ${fhsEnv}/bin/${pname}-fhs-env $out/opt/unityhub/unityhub \
120       --add-flags $out/opt/unityhub/unityhub-bin \
121       --argv0 unityhub
123     # Link binary
124     mkdir -p $out/bin
125     ln -s $out/opt/unityhub/unityhub $out/bin/unityhub
127     # Replace absolute path in desktop file to correctly point to nix store
128     substituteInPlace $out/share/applications/unityhub.desktop \
129       --replace /opt/unityhub/unityhub $out/opt/unityhub/unityhub
131     runHook postInstall
132   '';
134   passthru.updateScript = ./update.sh;
136   meta = with lib; {
137     description = "Official Unity3D app to download and manage Unity Projects and installations";
138     homepage = "https://unity.com/";
139     downloadPage = "https://unity.com/unity-hub";
140     changelog = "https://unity.com/unity-hub/release-notes";
141     license = licenses.unfree;
142     maintainers = with maintainers; [ tesq0 huantian ];
143     platforms = [ "x86_64-linux" ];
144     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
145   };