lol
1{ lib
2, buildPythonApplication
3, fetchgit
4, pygobject3
5, pytestCheckHook
6, gdk-pixbuf
7, glib
8, gobject-introspection
9, gtk3
10, python-linux-procfs
11, python-ethtool
12, wrapGAppsHook
13}:
14
15buildPythonApplication rec {
16 pname = "tuna";
17 version = "0.15";
18
19 src = fetchgit {
20 url = "https://git.kernel.org/pub/scm/utils/${pname}/${pname}.git";
21 rev = "v${version}";
22 sha256 = "sha256-lRHlbdCQ0NcjcWgLvCze67kN8NsK0f5RmKfPbkHhk78=";
23 };
24
25 patchPhase = ''
26 mv tuna-cmd.py tuna/cmd.py
27
28 substituteInPlace setup.py \
29 --replace 'packages = ["tuna", "tuna/gui"],' \
30 'packages = ["tuna", "tuna/gui"], entry_points={"console_scripts":["tuna=tuna.cmd:main"]},'
31
32 substituteInPlace tuna/tuna_gui.py \
33 --replace "self.binpath + 'pkexec'" "'/run/wrappers/bin/pkexec'" \
34 --replace 'tuna_glade_dirs = [".", "tuna", "/usr/share/tuna"]' "tuna_glade_dirs = [ \"$out/share/tuna\" ]"
35 '';
36
37 nativeBuildInputs = [
38 glib.dev
39 gobject-introspection
40 gtk3
41 wrapGAppsHook
42 ];
43
44 propagatedBuildInputs = [ pygobject3 python-linux-procfs python-ethtool ];
45
46 postInstall = ''
47 mkdir -p $out/share/tuna
48 cp tuna/tuna_gui.glade $out/share/tuna/
49 '';
50
51 # contains no tests
52 doCheck = false;
53 pythonImportsCheck = [ "tuna" ];
54
55 meta = with lib; {
56 description = "Thread and IRQ affinity setting GUI and cmd line tool";
57 homepage = "https://git.kernel.org/pub/scm/utils/tuna/tuna.git";
58 license = licenses.gpl2Plus;
59 platforms = platforms.linux;
60 maintainers = with maintainers; [ elohmeier ];
61 };
62}