1{ lib
2, stdenv
3, fetchurl
4, substituteAll
5, pkg-config
6, libxslt
7, ninja
8, gnome
9, gtk3
10, gtk4
11, glib
12, gettext
13, libxml2
14, xkeyboard_config
15, libxkbcommon
16, isocodes
17, meson
18, wayland
19, libseccomp
20, systemd
21, bubblewrap
22, gobject-introspection
23, gtk-doc
24, docbook-xsl-nons
25, gsettings-desktop-schemas
26}:
27
28stdenv.mkDerivation rec {
29 pname = "gnome-desktop";
30 version = "44.0";
31
32 outputs = [ "out" "dev" "devdoc" ];
33
34 src = fetchurl {
35 url = "mirror://gnome/sources/gnome-desktop/${lib.versions.major version}/${pname}-${version}.tar.xz";
36 sha256 = "sha256-QsdzdF2EuhS8HPHExvRgYUiAOlzTN5QcY5ZHlfPFnUI=";
37 };
38
39 patches = lib.optionals stdenv.isLinux [
40 (substituteAll {
41 src = ./bubblewrap-paths.patch;
42 bubblewrap_bin = "${bubblewrap}/bin/bwrap";
43 inherit (builtins) storeDir;
44 })
45 ];
46
47 nativeBuildInputs = [
48 pkg-config
49 meson
50 ninja
51 gettext
52 libxslt
53 libxml2
54 gobject-introspection
55 gtk-doc
56 docbook-xsl-nons
57 glib
58 ];
59
60 buildInputs = [
61 xkeyboard_config
62 libxkbcommon # for xkbregistry
63 isocodes
64 gtk3
65 gtk4
66 glib
67 ] ++ lib.optionals stdenv.isLinux [
68 bubblewrap
69 wayland
70 libseccomp
71 systemd
72 ];
73
74 propagatedBuildInputs = [
75 gsettings-desktop-schemas
76 ];
77
78 mesonFlags = [
79 "-Dgtk_doc=true"
80 "-Ddesktop_docs=false"
81 ] ++ lib.optionals (!stdenv.isLinux) [
82 "-Dsystemd=disabled"
83 "-Dudev=disabled"
84 ];
85
86 separateDebugInfo = stdenv.isLinux;
87
88 passthru = {
89 updateScript = gnome.updateScript {
90 packageName = "gnome-desktop";
91 };
92 };
93
94 meta = with lib; {
95 description = "Library with common API for various GNOME modules";
96 homepage = "https://gitlab.gnome.org/GNOME/gnome-desktop";
97 license = with licenses; [ gpl2Plus lgpl2Plus ];
98 platforms = platforms.unix;
99 maintainers = teams.gnome.members;
100 };
101}