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
144
145
146
147
148
149
150
151
152
|
{ buildPythonApplication
, lib
, fetchFromGitHub
# build inputs
, atk
, file
, gdk-pixbuf
, glib-networking
, gnome-desktop
, gobject-introspection
, gst_all_1
, gtk3
, libnotify
, pango
, webkitgtk
, wrapGAppsHook3
# check inputs
, xvfb-run
, nose2
, flake8
# python dependencies
, certifi
, dbus-python
, distro
, evdev
, lxml
, pillow
, pygobject3
, pypresence
, pyyaml
, requests
, protobuf
, moddb
# commands that lutris needs
, xrandr
, pciutils
, psmisc
, glxinfo
, vulkan-tools
, xboxdrv
, pulseaudio
, p7zip
, xgamma
, libstrangle
, fluidsynth
, xorgserver
, xorg
, util-linux
}:
let
# See lutris/util/linux.py
requiredTools = [
xrandr
pciutils
psmisc
glxinfo
vulkan-tools
xboxdrv
pulseaudio
p7zip
xgamma
libstrangle
fluidsynth
xorgserver
xorg.setxkbmap
xorg.xkbcomp
# bypass mount suid wrapper which does not work in fhsenv
util-linux
];
in
buildPythonApplication rec {
pname = "lutris-unwrapped";
version = "0.5.17";
src = fetchFromGitHub {
owner = "lutris";
repo = "lutris";
rev = "v${version}";
hash = "sha256-Tr5k5LU0s75+1B17oK8tlgA6SlS1SHyyLS6UBKadUmw=";
};
nativeBuildInputs = [ wrapGAppsHook3 gobject-introspection ];
buildInputs = [
atk
gdk-pixbuf
glib-networking
gnome-desktop
gtk3
libnotify
pango
webkitgtk
] ++ (with gst_all_1; [
gst-libav
gst-plugins-bad
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gstreamer
]);
# See `install_requires` in https://github.com/lutris/lutris/blob/master/setup.py
propagatedBuildInputs = [
certifi
dbus-python
distro
evdev
lxml
pillow
pygobject3
pypresence
pyyaml
requests
protobuf
moddb
];
postPatch = ''
substituteInPlace lutris/util/magic.py \
--replace '"libmagic.so.1"' "'${lib.getLib file}/lib/libmagic.so.1'"
'';
nativeCheckInputs = [ xvfb-run nose2 flake8 ] ++ requiredTools;
checkPhase = ''
runHook preCheck
export HOME=$PWD
xvfb-run -s '-screen 0 800x600x24' make test
runHook postCheck
'';
# avoid double wrapping
dontWrapGApps = true;
makeWrapperArgs = [
"--prefix PATH : ${lib.makeBinPath requiredTools}"
"\${gappsWrapperArgs[@]}"
];
meta = with lib; {
homepage = "https://lutris.net";
description = "Open Source gaming platform for GNU/Linux";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ Madouura ];
platforms = platforms.linux;
mainProgram = "lutris";
};
}
|