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