1{
2 stdenv,
3 lib,
4 desktop-file-utils,
5 fetchurl,
6 elfutils,
7 gettext,
8 glib,
9 gtk4,
10 json-glib,
11 itstool,
12 libadwaita,
13 libdex,
14 libpanel,
15 libunwind,
16 libxml2,
17 meson,
18 ninja,
19 pkg-config,
20 polkit,
21 shared-mime-info,
22 systemd,
23 wrapGAppsHook4,
24 gnome,
25}:
26
27stdenv.mkDerivation (finalAttrs: {
28 pname = "sysprof";
29 version = "48.0";
30
31 outputs = [
32 "out"
33 "lib"
34 "dev"
35 ];
36
37 src = fetchurl {
38 url = "mirror://gnome/sources/sysprof/${lib.versions.major finalAttrs.version}/sysprof-${finalAttrs.version}.tar.xz";
39 hash = "sha256-Gw8DgPLzBwi6h4KTIaBv7h2zbfqHeXu/B/CnrPRJjRg=";
40 };
41
42 nativeBuildInputs = [
43 desktop-file-utils
44 gettext
45 itstool
46 libxml2
47 meson
48 ninja
49 pkg-config
50 shared-mime-info
51 wrapGAppsHook4
52 ];
53
54 buildInputs = [
55 elfutils
56 glib
57 gtk4
58 json-glib
59 polkit
60 systemd
61 libadwaita
62 libdex
63 libpanel
64 libunwind
65 ];
66
67 mesonFlags = [
68 "-Dsystemdunitdir=lib/systemd/system"
69 # In a separate libsysprof-capture package
70 "-Dinstall-static=false"
71 ];
72
73 passthru = {
74 updateScript = gnome.updateScript {
75 packageName = "sysprof";
76 };
77 };
78
79 meta = with lib; {
80 description = "System-wide profiler for Linux";
81 homepage = "https://gitlab.gnome.org/GNOME/sysprof";
82 longDescription = ''
83 Sysprof is a sampling CPU profiler for Linux that uses the perf_event_open
84 system call to profile the entire system, not just a single
85 application. Sysprof handles shared libraries and applications
86 do not need to be recompiled. In fact they don't even have to
87 be restarted.
88 '';
89 license = licenses.gpl3Plus;
90 teams = [ teams.gnome ];
91 platforms = platforms.unix;
92 };
93})