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