diff options
Diffstat (limited to 'nixpkgs/pkgs/desktops/gnome-3')
174 files changed, 9354 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/accerciser/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/accerciser/default.nix new file mode 100644 index 00000000000..9a70319952c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/accerciser/default.nix @@ -0,0 +1,72 @@ +{ stdenv +, fetchurl +, pkgconfig +, gnome3 +, gtk3 +, wrapGAppsHook +, gobject-introspection +, itstool +, libxml2 +, python3 +, at-spi2-core +, dbus +, gettext +, libwnck3 +, adwaita-icon-theme +}: + + python3.pkgs.buildPythonApplication rec { + name = "accerciser-${version}"; + version = "3.32.3"; + + format = "other"; + + src = fetchurl { + url = "mirror://gnome/sources/accerciser/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0ark4qkfvdggz2mbksq12iq55izdsjnkjqkvfnnkf4k5vfpa95y5"; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection # For setup hook + itstool + libxml2 + pkgconfig + dbus + wrapGAppsHook + ]; + + buildInputs = [ + adwaita-icon-theme + at-spi2-core + gtk3 + libwnck3 + ]; + + propagatedBuildInputs = with python3.pkgs; [ + ipython + pyatspi + pycairo + pygobject3 + xlib + ]; + + # Strict deps breaks accerciser + # and https://github.com/NixOS/nixpkgs/issues/56943 + strictDeps = false; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "accerciser"; + attrPath = "gnome3.accerciser"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Accerciser; + description = "Interactive Python accessibility explorer"; + maintainers = gnome3.maintainers; + license = licenses.bsd3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/cheese/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/cheese/default.nix new file mode 100644 index 00000000000..b18e58f6f56 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/cheese/default.nix @@ -0,0 +1,58 @@ +{ stdenv, intltool, fetchurl, wrapGAppsHook, gnome-video-effects, libcanberra-gtk3 +, pkgconfig, gtk3, glib, clutter-gtk, clutter-gst, udev, gst_all_1, itstool +, libgudev, autoreconfHook, vala, docbook_xml_dtd_43, docbook_xsl, appstream-glib +, libxslt, yelp-tools, gnome-common, gtk-doc +, adwaita-icon-theme, librsvg, totem, gdk-pixbuf, gnome3, gnome-desktop, libxml2 }: + +stdenv.mkDerivation rec { + pname = "cheese"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/cheese/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1xlmsm4zsx05ahvpd4mgy1hfhxbag0r5i6p63bksjxdligdd36kv"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "cheese"; attrPath = "gnome3.cheese"; }; + }; + + nativeBuildInputs = [ + pkgconfig intltool itstool vala wrapGAppsHook libxml2 appstream-glib + libxslt docbook_xml_dtd_43 docbook_xsl + autoreconfHook gtk-doc yelp-tools gnome-common + ]; + buildInputs = [ gtk3 glib gnome-video-effects + gdk-pixbuf adwaita-icon-theme librsvg udev gst_all_1.gstreamer + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gnome-desktop + gst_all_1.gst-plugins-bad clutter-gtk clutter-gst + libcanberra-gtk3 libgudev ]; + + outputs = [ "out" "man" "devdoc" ]; + + patches = [ + gtk-doc.respect_xml_catalog_files_var_patch + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Effects + --prefix XDG_DATA_DIRS : "${gnome-video-effects}/share" + # vp8enc preset + --prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets" + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" + --prefix XDG_DATA_DIRS : "${totem}/share" + ) + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Cheese; + description = "Take photos and videos with your webcam, with fun graphical effects"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/evolution/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/evolution/default.nix new file mode 100644 index 00000000000..2061fc26607 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/evolution/default.nix @@ -0,0 +1,129 @@ +{ stdenv +, cmake +, ninja +, intltool +, fetchurl +, libxml2 +, webkitgtk +, highlight +, pkgconfig +, gtk3 +, glib +, libnotify +, gtkspell3 +, evolution-data-server +, adwaita-icon-theme +, gnome-desktop +, libgdata +, libgweather +, glib-networking +, gsettings-desktop-schemas +, wrapGAppsHook +, itstool +, shared-mime-info +, libical +, db +, gcr +, sqlite +, gnome3 +, librsvg +, gdk-pixbuf +, libsecret +, nss +, nspr +, icu +, libcanberra-gtk3 +, bogofilter +, gst_all_1 +, procps +, p11-kit +, openldap +}: + +stdenv.mkDerivation rec { + pname = "evolution"; + version = "3.32.4"; + + src = fetchurl { + url = "mirror://gnome/sources/evolution/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "00hmmg4hfns8rq9rcilmy0gi1xkksld27lfbd9zmw2xw37wjmbqh"; + }; + + nativeBuildInputs = [ + cmake + intltool + itstool + libxml2 + ninja + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + adwaita-icon-theme + bogofilter + db + evolution-data-server + gcr + gdk-pixbuf + glib + glib-networking + gnome-desktop + gsettings-desktop-schemas + gst_all_1.gst-plugins-base + gst_all_1.gstreamer + gtk3 + gtkspell3 + highlight + icu + libcanberra-gtk3 + libgdata + libgweather + libical + libnotify + librsvg + libsecret + nspr + nss + openldap + p11-kit + procps + shared-mime-info + sqlite + webkitgtk + ]; + + propagatedUserEnvPkgs = [ + evolution-data-server + ]; + + cmakeFlags = [ + "-DENABLE_AUTOAR=OFF" + "-DENABLE_LIBCRYPTUI=OFF" + "-DENABLE_PST_IMPORT=OFF" + "-DENABLE_YTNEF=OFF" + ]; + + requiredSystemFeatures = [ + "big-parallel" + ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "evolution"; + attrPath = "gnome3.evolution"; + }; + }; + + PKG_CONFIG_LIBEDATASERVERUI_1_2_UIMODULEDIR = "${placeholder "out"}/lib/evolution-data-server/ui-modules"; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Evolution; + description = "Personal information management application that provides integrated mail, calendaring and address book functionality"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/file-roller/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/file-roller/default.nix new file mode 100644 index 00000000000..267a7f2f7d2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/file-roller/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, glib, gtk3, meson, ninja, pkgconfig, gnome3, gettext, itstool, libxml2, libarchive +, file, json-glib, python3, wrapGAppsHook, desktop-file-utils, libnotify, nautilus, glibcLocales }: + +stdenv.mkDerivation rec { + pname = "file-roller"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/file-roller/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0irm72cf8222h93skivn0nn0ckahiiiimy4rb9r3ccjvhi3hiaqw"; + }; + + LANG = "en_US.UTF-8"; # postinstall.py + + nativeBuildInputs = [ meson ninja gettext itstool pkgconfig libxml2 python3 wrapGAppsHook glibcLocales desktop-file-utils ]; + + buildInputs = [ glib gtk3 json-glib libarchive file gnome3.adwaita-icon-theme libnotify nautilus ]; + + PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0"; + + postPatch = '' + chmod +x postinstall.py # patchShebangs requires executable file + patchShebangs postinstall.py + patchShebangs data/set-mime-type-entry.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "file-roller"; + attrPath = "gnome3.file-roller"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/FileRoller; + description = "Archive manager for the GNOME desktop environment"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gedit/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gedit/default.nix new file mode 100644 index 00000000000..35d97a87a86 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gedit/default.nix @@ -0,0 +1,52 @@ +{ stdenv, meson, fetchurl, python3 +, pkgconfig, gtk3, glib, adwaita-icon-theme +, libpeas, gtksourceview4, gsettings-desktop-schemas +, wrapGAppsHook, ninja, libsoup, libxml2 +, gnome3, gspell, perl, itstool, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "gedit"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gedit/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1q2rk7fym542c7k3bn2wlnzgy384gxacbifsjny0spbg95gfybvl"; + }; + + nativeBuildInputs = [ + pkgconfig wrapGAppsHook meson ninja libxml2 + python3 perl itstool desktop-file-utils + ]; + + buildInputs = [ + gtk3 glib + adwaita-icon-theme libsoup + libpeas gtksourceview4 + gsettings-desktop-schemas gspell + ]; + + postPatch = '' + chmod +x build-aux/meson/post_install.py + chmod +x plugins/externaltools/scripts/gedit-tool-merge.pl + patchShebangs build-aux/meson/post_install.py + patchShebangs plugins/externaltools/scripts/gedit-tool-merge.pl + ''; + + # Reliably fails to generate gedit-file-browser-enum-types.h in time + enableParallelBuilding = false; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gedit"; + attrPath = "gnome3.gedit"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Gedit; + description = "Official text editor of the GNOME desktop environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/ghex/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/ghex/default.nix new file mode 100644 index 00000000000..f776f4dbe5a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/ghex/default.nix @@ -0,0 +1,86 @@ +{ stdenv +, fetchurl +, fetchpatch +, pkgconfig +, meson +, ninja +, python3 +, gnome3 +, hicolor-icon-theme +, desktop-file-utils +, appstream-glib +, gettext +, itstool +, libxml2 +, gtk3 +, glib +, atk +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "ghex"; + version = "3.18.4"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/ghex/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1h1pjrr9wynclfykizqd78dbi785wjz6b63p31k87kjvzy8w3nf2"; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + hicolor-icon-theme # for setup-hook + itstool + meson + ninja + pkgconfig + python3 + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + atk + glib + ]; + + checkInputs = [ + appstream-glib + desktop-file-utils + ]; + + patches = [ + # Fixes for darwin. Drop in next release. + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/ghex/commit/b0af26666cd990d99076c242b2abb3efc6e98671.patch"; + sha256 = "1zwdkgr2nqrn9q3ydyvrrpn5x55cdi747fhbq6mh6blp9cbrk9b5"; + }) + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/ghex/commit/cc8ef9e67b23604c402460010dc0b5dccb85391b.patch"; + sha256 = "0j2165rfhlbrlzhmcnirqd5m89ljpz0n3nz20sxbwlc8h42zv36s"; + }) + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "ghex"; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Ghex; + description = "Hex editor for GNOME desktop environment"; + platforms = platforms.unix; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/glade/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/glade/default.nix new file mode 100644 index 00000000000..84d1a8a76ba --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/glade/default.nix @@ -0,0 +1,37 @@ +{ stdenv, intltool, fetchurl, python3 +, pkgconfig, gtk3, glib, gobject-introspection +, wrapGAppsHook, itstool, libxml2, docbook_xsl +, gnome3, gdk-pixbuf, libxslt, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "glade"; + version = "3.22.1"; + + src = fetchurl { + url = "mirror://gnome/sources/glade/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "16p38xavpid51qfy0s26n0n21f9ws1w9k5s65bzh1w7ay8p9my6z"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "glade"; attrPath = "gnome3.glade"; }; + }; + + nativeBuildInputs = [ + pkgconfig intltool itstool wrapGAppsHook docbook_xsl libxslt gobject-introspection + ]; + buildInputs = [ + gtk3 glib libxml2 python3 python3.pkgs.pygobject3 + gsettings-desktop-schemas + gdk-pixbuf gnome3.adwaita-icon-theme + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Glade; + description = "User interface designer for GTK applications"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-books/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-books/default.nix new file mode 100644 index 00000000000..25ee957224c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-books/default.nix @@ -0,0 +1,48 @@ +{ stdenv, meson, ninja, gettext, fetchurl, evince, gjs +, pkgconfig, gtk3, glib, tracker, tracker-miners, libxslt +, webkitgtk, gnome-desktop, libgepub, gnome3, gdk-pixbuf +, gsettings-desktop-schemas, adwaita-icon-theme, docbook_xsl +, docbook_xml_dtd_42, desktop-file-utils, python3 +, gobject-introspection, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "gnome-books"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1wkcywcwwszj9mldr0lngczqdz7hys08rr1nd2k6rs8ykzs2z7m4"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext libxslt desktop-file-utils + docbook_xsl docbook_xml_dtd_42 wrapGAppsHook python3 + ]; + + buildInputs = [ + gtk3 glib gsettings-desktop-schemas + gdk-pixbuf adwaita-icon-theme evince + webkitgtk gjs gobject-introspection tracker + tracker-miners gnome-desktop libgepub + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-books"; + attrPath = "gnome3.gnome-books"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Books; + description = "An e-book manager application for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix new file mode 100644 index 00000000000..2f0a21896e9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-boxes/default.nix @@ -0,0 +1,66 @@ +{ stdenv, fetchurl, meson, ninja, wrapGAppsHook, pkgconfig, gettext, itstool, libvirt-glib +, glib, gobject-introspection, libxml2, gtk3, gtk-vnc, freerdp, libvirt, spice-gtk, python3 +, spice-protocol, libsoup, libosinfo, systemd, tracker, tracker-miners, vala +, libcap, yajl, gmp, gdbm, cyrus_sasl, gnome3, librsvg, desktop-file-utils +, mtools, cdrkit, libcdio, libusb, libarchive, acl, libgudev, libsecret +, libcap_ng, numactl, xen, libapparmor, json-glib, webkitgtk, vte +}: + +# TODO: ovirt (optional) + +let + version = "3.32.1"; +in stdenv.mkDerivation rec { + pname = "gnome-boxes"; + inherit version; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-boxes/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "159sxii3g4s5pjb4s4i3kc4q162w5vicp4g6wvk1y2yv68bgmcl4"; + }; + + doCheck = true; + + nativeBuildInputs = [ + meson ninja vala pkgconfig gettext itstool wrapGAppsHook gobject-introspection desktop-file-utils python3 + ]; + + # Required for USB redirection PolicyKit rules file + propagatedUserEnvPkgs = [ spice-gtk ]; + + buildInputs = [ + libvirt-glib glib gtk3 gtk-vnc freerdp libxml2 + libvirt spice-gtk spice-protocol libsoup json-glib webkitgtk libosinfo systemd + tracker tracker-miners libcap yajl gmp gdbm cyrus_sasl libusb libarchive + gnome3.adwaita-icon-theme librsvg acl libgudev libsecret + libcap_ng numactl xen libapparmor vte + ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : "${stdenv.lib.makeBinPath [ mtools cdrkit libcdio ]}") + ''; + + mesonFlags = [ + "-Dovirt=false" + ]; + + postPatch = '' + chmod +x build-aux/post_install.py # patchShebangs requires executable file + patchShebangs build-aux/post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-boxes"; + attrPath = "gnome3.gnome-boxes"; + }; + }; + + meta = with stdenv.lib; { + description = "Simple GNOME 3 application to access remote or virtual systems"; + homepage = https://wiki.gnome.org/Apps/Boxes; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix new file mode 100644 index 00000000000..03619f38c9b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-calendar/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, wrapGAppsHook, libdazzle, libgweather, geoclue2, geocode-glib, python3 +, gettext, libxml2, gnome3, gtk3, evolution-data-server, libsoup +, glib, gnome-online-accounts, gsettings-desktop-schemas }: + +let + pname = "gnome-calendar"; + version = "3.32.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "07p73cvzj8idr80npja5yiv9pjfyi6qqfhaz5jwcgqspqbnhnl7k"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext libxml2 wrapGAppsHook python3 ]; + buildInputs = [ + gtk3 evolution-data-server libsoup glib gnome-online-accounts libdazzle libgweather geoclue2 geocode-glib + gsettings-desktop-schemas gnome3.adwaita-icon-theme + ]; + + postPatch = '' + chmod +x build-aux/meson/meson_post_install.py # patchShebangs requires executable file + patchShebangs build-aux/meson/meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Calendar; + description = "Simple and beautiful calendar application for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix new file mode 100644 index 00000000000..ac1e9ee85c0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-characters/default.nix @@ -0,0 +1,85 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gettext +, gnome3 +, glib +, gtk3 +, pango +, wrapGAppsHook +, python3 +, gobject-introspection +, gjs +, libunistring +, gsettings-desktop-schemas +, adwaita-icon-theme +, gnome-desktop +}: + +stdenv.mkDerivation rec { + pname = "gnome-characters"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-characters/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1mpg125x9k879ryg8xgbm9w1amx6b3iq9sqv7xfii7kzaanjb4js"; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection + meson + ninja + pkgconfig + python3 + wrapGAppsHook + ]; + + + buildInputs = [ + adwaita-icon-theme + gjs + glib + gnome-desktop # for typelib + gsettings-desktop-schemas + gtk3 + libunistring + pango + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + dontWrapGApps = true; + + # Fixes https://github.com/NixOS/nixpkgs/issues/31168 + postFixup = '' + for file in $out/share/org.gnome.Characters/org.gnome.Characters \ + $out/share/org.gnome.Characters/org.gnome.Characters.BackgroundService + do + sed -e $"2iimports.package._findEffectiveEntryPointName = () => \'$(basename $file)\' " \ + -i $file + + wrapProgram $file "''${gappsWrapperArgs[@]}" + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Design/Apps/CharacterMap; + description = "Simple utility application to find and insert unusual characters"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix new file mode 100644 index 00000000000..38182f1f994 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-clocks/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchurl +, meson, ninja, gettext, pkgconfig, wrapGAppsHook, itstool, desktop-file-utils +, vala, gobject-introspection, libxml2, gtk3, glib, gsound, sound-theme-freedesktop +, gsettings-desktop-schemas, adwaita-icon-theme, gnome-desktop, geocode-glib +, gnome3, gdk-pixbuf, geoclue2, libgweather }: + +stdenv.mkDerivation rec { + pname = "gnome-clocks"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-clocks/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1w6lgjdak3x76c9gyhd1lqrdmjfh8q77sjnrkcimylsg0jq913bc"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-clocks"; + attrPath = "gnome3.gnome-clocks"; + }; + }; + + doCheck = true; + + nativeBuildInputs = [ + vala meson ninja pkgconfig gettext itstool wrapGAppsHook desktop-file-utils libxml2 + gobject-introspection # for finding vapi files + ]; + buildInputs = [ + gtk3 glib gsettings-desktop-schemas gdk-pixbuf adwaita-icon-theme + gnome-desktop geocode-glib geoclue2 libgweather gsound + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Fallback sound theme + --prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share" + ) + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Clocks; + description = "Clock application designed for GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix new file mode 100644 index 00000000000..1301381e5aa --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-documents/default.nix @@ -0,0 +1,59 @@ +{ stdenv, meson, ninja, gettext, fetchurl, evince, gjs +, pkgconfig, gtk3, glib, tracker, tracker-miners +, itstool, libxslt, webkitgtk, libgdata +, gnome-desktop, libzapojit, libgepub +, gnome3, gdk-pixbuf, libsoup, docbook_xsl, docbook_xml_dtd_42 +, gobject-introspection, inkscape, poppler_utils +, desktop-file-utils, wrapGAppsHook, python3, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-documents"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-documents/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1gqddzbr4d8s0asmrhy0sfmwggzhbmpm61mqf8rxpdjk7s26086c"; + }; + + doCheck = true; + + mesonFlags = [ + "-Dgetting-started=true" + ]; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxslt desktop-file-utils docbook_xsl docbook_xml_dtd_42 wrapGAppsHook python3 + inkscape poppler_utils # building getting started + ]; + buildInputs = [ + gtk3 glib gsettings-desktop-schemas + gdk-pixbuf gnome3.adwaita-icon-theme evince + libsoup webkitgtk gjs gobject-introspection + tracker tracker-miners libgdata + gnome-desktop libzapojit libgepub + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + preFixup = '' + substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib.bin}/bin/gapplication" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-documents"; + attrPath = "gnome3.gnome-documents"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Documents; + description = "Document manager application designed to work with GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix new file mode 100644 index 00000000000..655e9e9fe34 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-getting-started-docs/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + pname = "gnome-getting-started-docs"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-getting-started-docs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1v4k465mlzrhgcdddzs6bmm0yliyrfx6jg3gh0s17a08i0w5rbwq"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-getting-started-docs"; attrPath = "gnome3.gnome-getting-started-docs"; }; + }; + + buildInputs = [ intltool itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = https://live.gnome.org/DocumentationProject; + description = "Help a new user get started in GNOME"; + maintainers = gnome3.maintainers; + license = licenses.cc-by-sa-30; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-logs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-logs/default.nix new file mode 100644 index 00000000000..8681a3c866c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-logs/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, glib, gtk3, wrapGAppsHook, desktop-file-utils +, gettext, itstool, libxml2, libxslt, docbook_xsl, docbook_xml_dtd_43, systemd, python3, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-logs"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-logs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0hh3nnbq7q2xbflvaywanm0j3dqhb04ngphskhnjx2sg7px12068"; + }; + + mesonFlags = [ + "-Dtests=true" + "-Dman=true" + ]; + + nativeBuildInputs = [ + python3 + meson ninja pkgconfig wrapGAppsHook gettext itstool desktop-file-utils + libxml2 libxslt docbook_xsl docbook_xml_dtd_43 + ]; + buildInputs = [ glib gtk3 systemd gsettings-desktop-schemas gnome3.adwaita-icon-theme ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-logs"; + attrPath = "gnome3.gnome-logs"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Logs; + description = "A log viewer for the systemd journal"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-maps/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-maps/default.nix new file mode 100644 index 00000000000..6011092c0e0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-maps/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchurl, meson, ninja, gettext, python3, pkgconfig, gnome3, gtk3 +, gobject-introspection, gdk-pixbuf, librsvg, libgweather +, geoclue2, wrapGAppsHook, folks, libchamplain, gfbgraph, libsoup, gsettings-desktop-schemas +, webkitgtk, gjs, libgee, geocode-glib, evolution-data-server, gnome-online-accounts }: + +let + pname = "gnome-maps"; + version = "3.32.2.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1m191iq1gjaqz79ci3dkbmwrkxp7pzknngimlf5bqib5x8yairlb"; + }; + + doCheck = true; + + nativeBuildInputs = [ meson ninja pkgconfig gettext python3 wrapGAppsHook ]; + buildInputs = [ + gobject-introspection + gtk3 geoclue2 gjs libgee folks gfbgraph + geocode-glib libchamplain libsoup + gdk-pixbuf librsvg libgweather + gsettings-desktop-schemas evolution-data-server + gnome-online-accounts gnome3.adwaita-icon-theme + webkitgtk + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + + # The .service file isn't wrapped with the correct environment + # so misses GIR files when started. By re-pointing from the gjs + # entry point to the wrapped binary we get back to a wrapped + # binary. + substituteInPlace "data/org.gnome.Maps.service.in" \ + --replace "Exec=@pkgdatadir@/org.gnome.Maps" \ + "Exec=$out/bin/gnome-maps" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Maps; + description = "A map application for GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-music/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-music/default.nix new file mode 100644 index 00000000000..9b8c96729ad --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-music/default.nix @@ -0,0 +1,52 @@ +{ stdenv, meson, ninja, gettext, fetchurl, gdk-pixbuf, tracker +, libxml2, python3, libnotify, wrapGAppsHook, libmediaart +, gobject-introspection, gnome-online-accounts, grilo, grilo-plugins +, pkgconfig, gtk3, glib, desktop-file-utils, appstream-glib +, itstool, gnome3, gst_all_1, libdazzle, libsoup, gsettings-desktop-schemas }: + +python3.pkgs.buildPythonApplication rec { + pname = "gnome-music"; + version = "3.32.2"; + + format = "other"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0cn7l1d3ayima1w3bxpshijabd7ibhnvqxv2mpvffzizk04ln6hk"; + }; + + nativeBuildInputs = [ meson ninja gettext itstool pkgconfig libxml2 wrapGAppsHook desktop-file-utils appstream-glib gobject-introspection ]; + buildInputs = with gst_all_1; [ + gtk3 glib libmediaart gnome-online-accounts gobject-introspection + gdk-pixbuf gnome3.adwaita-icon-theme python3 + grilo grilo-plugins libnotify libdazzle libsoup + gsettings-desktop-schemas tracker + gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly + ]; + propagatedBuildInputs = with python3.pkgs; [ pycairo dbus-python pygobject3 ]; + + + postPatch = '' + for f in meson_post_conf.py meson_post_install.py; do + chmod +x $f + patchShebangs $f + done + ''; + + doCheck = false; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Music; + description = "Music player and management application for the GNOME desktop environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-nettool/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-nettool/default.nix new file mode 100644 index 00000000000..37401af3ce6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-nettool/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libgtop, intltool, itstool, libxml2, nmap, inetutils }: + +stdenv.mkDerivation rec { + pname = "gnome-nettool"; + version = "3.8.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1c9cvzvyqgfwa5zzyvp7118pkclji62fkbb33g4y9sp5kw6m397h"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + gtk3 wrapGAppsHook libgtop intltool itstool libxml2 + gnome3.adwaita-icon-theme + ]; + + propagatedUserEnvPkgs = [ nmap inetutils ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://gitlab.gnome.org/GNOME/gnome-nettool"; + description = "A collection of networking tools"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-notes/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-notes/default.nix new file mode 100644 index 00000000000..920343a6024 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-notes/default.nix @@ -0,0 +1,56 @@ +{ stdenv, meson, ninja, gettext, fetchurl, pkgconfig +, wrapGAppsHook, itstool, desktop-file-utils, python3 +, glib, gtk3, evolution-data-server, gnome-online-accounts +, libuuid, webkitgtk, zeitgeist +, gnome3, libxml2, gsettings-desktop-schemas, tracker }: + +let + version = "3.32.2"; +in stdenv.mkDerivation { + pname = "gnome-notes"; + inherit version; + + src = fetchurl { + url = "mirror://gnome/sources/bijiben/${stdenv.lib.versions.majorMinor version}/bijiben-${version}.tar.xz"; + sha256 = "0chm2fks7cpx3mycxzddpj6v9by203c3m1y6zns5ra43bspwafy2"; + }; + + doCheck = true; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxml2 desktop-file-utils python3 wrapGAppsHook + ]; + + buildInputs = [ + glib gtk3 libuuid webkitgtk tracker + gnome-online-accounts zeitgeist + gsettings-desktop-schemas + evolution-data-server + gnome3.adwaita-icon-theme + ]; + + mesonFlags = [ + "-Dzeitgeist=true" + "-Dupdate_mimedb=false" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "bijiben"; + attrPath = "gnome3.gnome-notes"; + }; + }; + + meta = with stdenv.lib; { + description = "Note editor designed to remain simple to use"; + homepage = https://wiki.gnome.org/Apps/Notes; + license = licenses.gpl3; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-power-manager/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-power-manager/default.nix new file mode 100644 index 00000000000..fd47f54eb89 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-power-manager/default.nix @@ -0,0 +1,60 @@ +{ stdenv +, gettext +, fetchurl +, pkgconfig +, gtk3 +, glib +, meson +, ninja +, upower +, python3 +, desktop-file-utils +, wrapGAppsHook +, gnome3 }: + +let + pname = "gnome-power-manager"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0drfn3wcc8l4n07qwv6p0rw2dwcd00hwzda282q62l6sasks2b2g"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + wrapGAppsHook + gettext + + # needed by meson_post_install.sh + python3 + glib.dev + desktop-file-utils + ]; + + buildInputs = [ + gtk3 + glib + upower + gnome3.adwaita-icon-theme + ]; + + meta = with stdenv.lib; { + homepage = https://projects-old.gnome.org/gnome-power-manager/; + description = "View battery and power statistics provided by UPower"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-sound-recorder/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-sound-recorder/default.nix new file mode 100644 index 00000000000..907c0424454 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-sound-recorder/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, pkgconfig, gettext, gobject-introspection, wrapGAppsHook, gjs, glib, gtk3, gdk-pixbuf, gst_all_1, gnome3 +, meson, ninja, python3, hicolor-icon-theme, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "gnome-sound-recorder"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0q83b6dabckmwj8mcw0wvhbxaszwdzzcf8ajx5bldll3lyl5yh2b"; + }; + + nativeBuildInputs = [ + pkgconfig gettext meson ninja gobject-introspection + wrapGAppsHook python3 hicolor-icon-theme desktop-file-utils + ]; + buildInputs = [ gjs glib gtk3 gdk-pixbuf ] ++ (with gst_all_1; [ gstreamer.dev gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad ]); + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + # TODO: fix this in gstreamer + # TODO: make stdenv.lib.getBin respect outputBin + PKG_CONFIG_GSTREAMER_1_0_TOOLSDIR = "${gst_all_1.gstreamer.dev}/bin"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A simple and modern sound recorder"; + homepage = https://wiki.gnome.org/Apps/SoundRecorder; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-todo/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-todo/default.nix new file mode 100644 index 00000000000..dbbbb43659b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-todo/default.nix @@ -0,0 +1,88 @@ +{ stdenv +, fetchurl +, fetchpatch +, meson +, ninja +, pkgconfig +, python3 +, wrapGAppsHook +, gettext +, gnome3 +, glib +, gtk3 +, libpeas +, gnome-online-accounts +, gsettings-desktop-schemas +, evolution-data-server +, libxml2 +, libsoup +, libical +, librest +, json-glib +}: + +stdenv.mkDerivation rec { + pname = "gnome-todo"; + version = "3.28.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "08ygqbib72jlf9y0a16k54zz51sncpq2wa18wp81v46q8301ymy7"; + }; + + patches = [ + # fix build with e-d-s 3.32 + (fetchpatch { + url = https://gitlab.gnome.org/GNOME/gnome-todo/commit/6cdabc4dd0c6c804a093b94c269461ce376fed4f.patch; + sha256 = "08ldgyxv9216dgr8y9asqd7j2y82y9yqnqhkqaxc9i8a67yz1gzy"; + }) + ]; + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + python3 + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + libpeas + gnome-online-accounts + gsettings-desktop-schemas + gnome3.adwaita-icon-theme + # Plug-ins + evolution-data-server + libxml2 + libsoup + libical + librest + json-glib + ]; + + # Fix parallel building: missing dependency from src/gtd-application.c + # Probably remove for 3.30+ https://gitlab.gnome.org/GNOME/gnome-todo/issues/170 + preBuild = "ninja src/gtd-vcs-identifier.h"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Personal task manager for GNOME"; + homepage = https://wiki.gnome.org/Apps/Todo; + license = licenses.gpl3Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-weather/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-weather/default.nix new file mode 100644 index 00000000000..1e5a641f08f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/gnome-weather/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook, gjs, gobject-introspection +, libgweather, meson, ninja, geoclue2, gnome-desktop, python3, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-weather"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-weather/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0jfxdfbjkrk3x48w6nxgbmazd6jw1fh4mfw12hlly4rs0cjw698s"; + }; + + nativeBuildInputs = [ pkgconfig meson ninja wrapGAppsHook python3 ]; + buildInputs = [ + gtk3 gjs gobject-introspection gnome-desktop + libgweather gnome3.adwaita-icon-theme geoclue2 gsettings-desktop-schemas + ]; + + postPatch = '' + # The .service file is not wrapped with the correct environment + # so misses GIR files when started. By re-pointing from the gjs + # entry point to the wrapped binary we get back to a wrapped + # binary. + substituteInPlace "data/org.gnome.Weather.service.in" \ + --replace "Exec=@DATA_DIR@/@APP_ID@" \ + "Exec=$out/bin/gnome-weather" + + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-weather"; + attrPath = "gnome3.gnome-weather"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Weather; + description = "Access current weather conditions and forecasts"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/nautilus-sendto/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/nautilus-sendto/default.nix new file mode 100644 index 00000000000..7ac8b4dfe11 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/nautilus-sendto/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, meson, ninja, glib, pkgconfig, gnome3, appstream-glib, gettext }: + +let + pname = "nautilus-sendto"; + version = "3.8.6"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/3.8/${name}.tar.xz"; + sha256 = "164d7c6e8bae29c4579bcc67a7bf50d783662b1545b62f3008e7ea3c0410e04d"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig appstream-glib gettext ]; + buildInputs = [ glib ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Integrates Evolution and Pidgin into the Nautilus file manager"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/polari/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/polari/default.nix new file mode 100644 index 00000000000..51fea63b714 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/polari/default.nix @@ -0,0 +1,43 @@ +{ stdenv, itstool, fetchurl, gdk-pixbuf, adwaita-icon-theme +, telepathy-glib, gjs, meson, ninja, gettext, telepathy-idle, libxml2, desktop-file-utils +, pkgconfig, gtk3, glib, libsecret, libsoup, gobject-introspection, appstream-glib +, gnome3, wrapGAppsHook, telepathy-logger, gspell, gsettings-desktop-schemas }: + +let + pname = "polari"; + version = "3.32.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0h0w9j3y067l911gpj446b3a2w1i2vzr1w2a7cz7i5rhn6qkf2sp"; + }; + + propagatedUserEnvPkgs = [ telepathy-idle telepathy-logger ]; + + nativeBuildInputs = [ + meson ninja pkgconfig itstool gettext wrapGAppsHook libxml2 + desktop-file-utils gobject-introspection appstream-glib + ]; + + buildInputs = [ + gtk3 glib adwaita-icon-theme gsettings-desktop-schemas + telepathy-glib telepathy-logger gjs gspell gdk-pixbuf libsecret libsoup + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Polari; + description = "IRC chat client designed to integrate with the GNOME desktop"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/seahorse/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/seahorse/default.nix new file mode 100644 index 00000000000..a1bcb406eb3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/seahorse/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchurl, vala, meson, ninja, libpwquality +, pkgconfig, gtk3, glib, gobject-introspection +, wrapGAppsHook, itstool, gnupg, libsoup +, gnome3, gpgme, python3, openldap, gcr +, libsecret, avahi, p11-kit, openssh, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "seahorse"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0d8zdzmlz7fjv9xl20zl4ckidf465mvdjnbpxy3k08y9iw423q4x"; + }; + + doCheck = true; + + nativeBuildInputs = [ + meson ninja pkgconfig vala itstool wrapGAppsHook + python3 gobject-introspection + ]; + buildInputs = [ + gtk3 glib gcr + gsettings-desktop-schemas gnupg + gnome3.adwaita-icon-theme gpgme + libsecret avahi libsoup p11-kit + openssh openldap libpwquality + ]; + + postPatch = '' + patchShebangs build-aux/ + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Seahorse; + description = "Application for managing encryption keys and passwords in the GnomeKeyring"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/apps/vinagre/default.nix b/nixpkgs/pkgs/desktops/gnome-3/apps/vinagre/default.nix new file mode 100644 index 00000000000..c5377157ef0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/apps/vinagre/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, vte, libxml2, gtk-vnc, intltool +, libsecret, itstool, wrapGAppsHook, librsvg }: + +stdenv.mkDerivation rec { + pname = "vinagre"; + version = "3.22.0"; + + src = fetchurl { + url = "mirror://gnome/sources/vinagre/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "cd1cdbacca25c8d1debf847455155ee798c3e67a20903df8b228d4ece5505e82"; + }; + + nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook ]; + buildInputs = [ + gtk3 vte libxml2 gtk-vnc libsecret gnome3.adwaita-icon-theme librsvg + ]; + + NIX_CFLAGS_COMPILE = "-Wno-format-nonliteral"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "vinagre"; + attrPath = "gnome3.vinagre"; + }; + }; + + meta = with stdenv.lib; { + description = "Remote desktop viewer for GNOME"; + homepage = https://wiki.gnome.org/Apps/Vinagre; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix new file mode 100644 index 00000000000..a7f4a637b17 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/adwaita-icon-theme/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3 +, iconnamingutils, gtk3, gdk-pixbuf, librsvg, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + pname = "adwaita-icon-theme"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/adwaita-icon-theme/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "11ij35na8nisvxx3qh527iz33h6z2q1a7iinqyp7p65v0zjbd3b9"; + }; + + # For convenience, we can specify adwaita-icon-theme only in packages + propagatedBuildInputs = [ hicolor-icon-theme ]; + + buildInputs = [ gdk-pixbuf librsvg ]; + + nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk3 ]; + + # remove a tree of dirs with no files within + postInstall = '' rm -rf "$out/locale" ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "adwaita-icon-theme"; + attrPath = "gnome3.adwaita-icon-theme"; + }; + }; + + meta = with stdenv.lib; { + platforms = with platforms; linux ++ darwin; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix new file mode 100644 index 00000000000..4734a0e96b8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/baobab/default.nix @@ -0,0 +1,34 @@ +{ stdenv, gettext, fetchurl, vala, desktop-file-utils +, meson, ninja, pkgconfig, gtk3, glib, libxml2 +, wrapGAppsHook, itstool, gnome3 }: + +let + pname = "baobab"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0b33s9bhpiffv5wl76cq2bbnqhvx3qs2vxyxmil5gcs583llqh9r"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig vala gettext itstool libxml2 desktop-file-utils wrapGAppsHook ]; + buildInputs = [ gtk3 glib gnome3.adwaita-icon-theme ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + description = "Graphical application to analyse disk usage in any GNOME environment"; + homepage = https://wiki.gnome.org/Apps/DiskUsageAnalyzer; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/caribou/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/caribou/default.nix new file mode 100644 index 00000000000..bad06bae405 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/caribou/default.nix @@ -0,0 +1,54 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, glib, gtk3, clutter, dbus, python3, libxml2 +, libxklavier, libXtst, gtk2, intltool, libxslt, at-spi2-core, autoreconfHook +, wrapGAppsHook, libgee }: + +let + pname = "caribou"; + version = "0.4.21"; + pythonEnv = python3.withPackages ( ps: with ps; [ pygobject3 ] ); +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0mfychh1q3dx0b96pjz9a9y112bm9yqyim40yykzxx1hppsdjhww"; + }; + + patches = [ + # Fix crash in GNOME Flashback + # https://bugzilla.gnome.org/show_bug.cgi?id=791001 + (fetchurl { + url = https://bugzilla.gnome.org/attachment.cgi?id=364774; + sha256 = "15k1455grf6knlrxqbjnk7sals1730b0whj30451scp46wyvykvd"; + }) + ]; + + nativeBuildInputs = [ pkgconfig intltool libxslt libxml2 autoreconfHook wrapGAppsHook ]; + + buildInputs = [ + glib gtk3 clutter at-spi2-core dbus pythonEnv python3.pkgs.pygobject3 + libXtst gtk2 + ]; + + propagatedBuildInputs = [ libgee libxklavier ]; + + postPatch = '' + patchShebangs . + substituteInPlace libcaribou/Makefile.am --replace "--shared-library=libcaribou.so.0" "--shared-library=$out/lib/libcaribou.so.0" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "An input assistive technology intended for switch and pointer users"; + homepage = https://wiki.gnome.org/Projects/Caribou; + license = licenses.lgpl21; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix new file mode 100644 index 00000000000..7f4f84fa5fe --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/dconf-editor/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, meson, ninja, vala, libxslt, pkgconfig, glib, gtk3, gnome3, python3 +, libxml2, gettext, docbook_xsl, hicolor-icon-theme, wrapGAppsHook, gobject-introspection }: + +let + pname = "dconf-editor"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1fmsmlh16njjm948grz20mzrsvb4wjj7pl1fvkrkxqi7mhr177gi"; + }; + + nativeBuildInputs = [ + meson ninja vala libxslt pkgconfig wrapGAppsHook + gettext docbook_xsl libxml2 gobject-introspection python3 + hicolor-icon-theme # for setup-hook + ]; + + buildInputs = [ glib gtk3 gnome3.dconf ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/dconf/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/dconf/default.nix new file mode 100644 index 00000000000..43f8dd08dbf --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/dconf/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchurl, meson, ninja, python3, vala, libxslt, pkgconfig, glib, bash-completion, dbus, gnome3 +, libxml2, gtk-doc, docbook_xsl, docbook_xml_dtd_42, fetchpatch }: + +let + pname = "dconf"; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + version = "0.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1azz4hb9z76yxn34yrrsiib3iqz5z4vpwn5q7cncp55w365ygg38"; + }; + + patches = [ + # Fix the build on Darwin + # Issue: https://gitlab.gnome.org/GNOME/dconf/issues/47 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/dconf/commit/49f4d916e1151af3975df52c522c69de98ed2fbb.patch"; + sha256 = "00klkr1jzli9ap0aj6399m1bj2bxxz48pmcj4r16dsy6dfdl6325"; + }) + ]; + + postPatch = '' + chmod +x meson_post_install.py tests/test-dconf.py + patchShebangs meson_post_install.py + patchShebangs tests/test-dconf.py + ''; + + outputs = [ "out" "lib" "dev" "devdoc" ]; + + nativeBuildInputs = [ meson ninja vala pkgconfig python3 libxslt libxml2 gtk-doc docbook_xsl docbook_xml_dtd_42 ]; + buildInputs = [ glib bash-completion dbus ]; + + mesonFlags = [ + "--sysconfdir=/etc" + "-Dgtk_doc=true" + ]; + + doCheck = !stdenv.isAarch32 && !stdenv.isAarch64 && !stdenv.isDarwin; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/dconf; + license = licenses.lgpl21Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix new file mode 100644 index 00000000000..5e4bbf8cce1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/empathy/default.nix @@ -0,0 +1,64 @@ +{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib +, file, librsvg, gnome3, gdk-pixbuf, python3 +, telepathy-glib, telepathy-farstream, glibcLocales +, clutter-gtk, clutter-gst, gst_all_1, cogl, gnome-online-accounts +, gcr, libsecret, folks, libpulseaudio, telepathy-mission-control +, telepathy-logger, libnotify, clutter, libsoup, gnutls +, evolution-data-server, yelp-xsl +, libcanberra-gtk3, p11-kit, farstream, libtool, shared-mime-info +, wrapGAppsHook, itstool, libxml2, libxslt, icu, libgee, gsettings-desktop-schemas +, isocodes, enchant, libchamplain, geoclue2, geocode-glib, cheese, libgudev }: + +stdenv.mkDerivation rec { + pname = "empathy"; + version = "3.25.90"; + + src = fetchurl { + url = "mirror://gnome/sources/empathy/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0sn10fcymc6lyrabk7vx8lpvlaxxkqnmcwj9zdkfa8qf3388k4nc"; + }; + + propagatedUserEnvPkgs = [ + gnome-online-accounts shared-mime-info + ]; + propagatedBuildInputs = [ + folks telepathy-logger evolution-data-server telepathy-mission-control + ]; + nativeBuildInputs = [ + pkgconfig libtool intltool itstool file wrapGAppsHook + libxml2 libxslt yelp-xsl python3 glibcLocales + ]; + buildInputs = [ + gtk3 glib webkitgtk icu gnome-online-accounts + telepathy-glib clutter-gtk clutter-gst cogl + gst_all_1.gstreamer gst_all_1.gst-plugins-base + gcr libsecret libpulseaudio gdk-pixbuf + libnotify clutter libsoup gnutls libgee p11-kit + libcanberra-gtk3 telepathy-farstream farstream + gnome3.adwaita-icon-theme gsettings-desktop-schemas + librsvg + # Spell-checking + enchant isocodes + # Display maps, location awareness, geocode support + libchamplain geoclue2 geocode-glib + # Cheese webcam support, camera monitoring + cheese libgudev + ]; + + LC_ALL = "en_US.UTF-8"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "empathy"; + versionPolicy = "none"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Empathy; + description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols"; + maintainers = gnome3.maintainers; + license = [ licenses.gpl2 ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix new file mode 100644 index 00000000000..8bb727a6fc5 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/eog/default.nix @@ -0,0 +1,51 @@ +{ fetchurl, stdenv, meson, ninja, gettext, itstool, pkgconfig, libxml2, libjpeg, libpeas, gnome3 +, gtk3, glib, gsettings-desktop-schemas, adwaita-icon-theme, gnome-desktop, lcms2, gdk-pixbuf, exempi +, shared-mime-info, wrapGAppsHook, librsvg, libexif, gobject-introspection, python3 }: + +let + pname = "eog"; + version = "3.32.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1bcxpqgzlk2cy4wfb3b5h66mhpj2fhrk1rrb5qqcv5xrr62ik5xy"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext itstool wrapGAppsHook libxml2 gobject-introspection python3 ]; + + buildInputs = [ + libjpeg gtk3 gdk-pixbuf glib libpeas librsvg lcms2 gnome-desktop libexif exempi + gsettings-desktop-schemas shared-mime-info adwaita-icon-theme + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" + --prefix XDG_DATA_DIRS : "${librsvg}/share" + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME image viewer"; + homepage = https://wiki.gnome.org/Apps/EyeOfGnome; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix new file mode 100644 index 00000000000..c52162ce7f1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/epiphany/default.nix @@ -0,0 +1,50 @@ +{ stdenv, meson, ninja, gettext, fetchurl, pkgconfig, gtk3, glib, icu +, wrapGAppsHook, gnome3, libxml2, libxslt, itstool +, webkitgtk, libsoup, glib-networking, libsecret, gnome-desktop, libnotify, p11-kit +, sqlite, gcr, isocodes, desktop-file-utils, python3, nettle +, gdk-pixbuf, gst_all_1, json-glib, libdazzle, libhandy }: + +stdenv.mkDerivation rec { + pname = "epiphany"; + version = "3.32.4"; + + src = fetchurl { + url = "mirror://gnome/sources/epiphany/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "15d9s295yr6m9pbwh344c4akm7rgn19y4g1xkyn7gbq1hdbjia69"; + }; + + # Tests need an X display + mesonFlags = [ "-Dunit_tests=disabled" ]; + + nativeBuildInputs = [ + meson ninja libxslt pkgconfig itstool gettext wrapGAppsHook desktop-file-utils python3 + ]; + + buildInputs = [ + gtk3 glib webkitgtk libsoup libxml2 libsecret gnome-desktop libnotify + sqlite isocodes p11-kit icu libhandy + gdk-pixbuf gnome3.adwaita-icon-theme gcr + glib-networking gst_all_1.gstreamer gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly + gst_all_1.gst-libav json-glib libdazzle nettle + ]; + + postPatch = '' + chmod +x post_install.py # patchShebangs requires executable file + patchShebangs post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "epiphany"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Epiphany; + description = "WebKit based web browser for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix new file mode 100644 index 00000000000..9313ca8990c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evince/default.nix @@ -0,0 +1,139 @@ +{ fetchFromGitLab +, stdenv +, fetchpatch +, meson +, ninja +, pkgconfig +, gettext +, libxml2 +, appstream +, glib +, gtk3 +, pango +, atk +, gdk-pixbuf +, shared-mime-info +, itstool +, gnome3 +, poppler +, ghostscriptX +, djvulibre +, libspectre +, libarchive +, libsecret +, wrapGAppsHook +, librsvg +, gobject-introspection +, yelp-tools +, gspell +, adwaita-icon-theme +, gsettings-desktop-schemas +, gnome-desktop +, dbus +, python3 +, texlive +, t1lib +, gst_all_1 +, supportMultimedia ? true # PDF multimedia +, libgxps +, supportXPS ? true # Open XML Paper Specification via libgxps +}: + +stdenv.mkDerivation rec { + pname = "evince"; + version = "3.32.0"; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "GNOME"; + repo = pname; + rev = version; + sha256 = "1klq8j70q8r8hyqv1wi6jcx8g76yh46bh8614y82zzggn4cx6y3r"; + }; + + + patches = [ + (fetchpatch { + name = "CVE-2019-11459.patch"; + url = "https://gitlab.gnome.org/GNOME/evince/commit/3e38d5ad724a042eebadcba8c2d57b0f48b7a8c7.patch"; + sha256 = "1ds6iwr2r9i86nwrly8cx7p1kbvf1gljjplcffa67znxqmwx4n74"; + }) + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gobject-introspection + gettext + itstool + yelp-tools + appstream + wrapGAppsHook + python3 + ]; + + buildInputs = [ + glib + gtk3 + pango + atk + gdk-pixbuf + libxml2 + gsettings-desktop-schemas + poppler + ghostscriptX + djvulibre + libspectre + libarchive + libsecret + librsvg + adwaita-icon-theme + gspell + gnome-desktop + dbus # only needed to find the service directory + texlive.bin.core # kpathsea for DVI support + t1lib + ] ++ stdenv.lib.optional supportXPS libgxps + ++ stdenv.lib.optionals supportMultimedia (with gst_all_1; [ + gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ]); + + mesonFlags = [ + "-Dnautilus=false" + "-Dps=enabled" + "-Dgtk_doc=false" + ]; + + NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; + + preFixup = '' + gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share") + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Evince; + description = "GNOME's document viewer"; + + longDescription = '' + Evince is a document viewer for multiple document formats. It + currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal + of Evince is to replace the multiple document viewers that exist + on the GNOME Desktop with a single simple application. + ''; + + license = stdenv.lib.licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = gnome3.maintainers ++ [ maintainers.vcunat ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix new file mode 100644 index 00000000000..0048b02581a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/default.nix @@ -0,0 +1,64 @@ +{ fetchurl, stdenv, substituteAll, pkgconfig, gnome3, python3, gobject-introspection +, intltool, libsoup, libxml2, libsecret, icu, sqlite, tzdata, libcanberra-gtk3, gcr +, p11-kit, db, nspr, nss, libical, gperf, wrapGAppsHook, glib-networking, pcre +, vala, cmake, ninja, kerberos, openldap, webkitgtk, libaccounts-glib, json-glib +, glib, gtk3, gnome-online-accounts, libgweather, libgdata, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "evolution-data-server"; + version = "3.32.4"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/evolution-data-server/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0zsc9xwy6ixk3x0dx69ax5isrdw8qxjdxg2i5fr95s40nss7rxl3"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata; + }) + ]; + + prePatch = '' + substitute ${./hardcode-gsettings.patch} hardcode-gsettings.patch --subst-var-by ESD_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"} \ + --subst-var-by GDS_GSETTINGS_PATH ${glib.getSchemaPath gsettings-desktop-schemas} + patches="$patches $PWD/hardcode-gsettings.patch" + ''; + + nativeBuildInputs = [ + cmake ninja pkgconfig intltool python3 gperf wrapGAppsHook gobject-introspection vala + ]; + buildInputs = [ + glib libsoup libxml2 gtk3 gnome-online-accounts + gcr p11-kit libgweather libgdata libaccounts-glib json-glib + icu sqlite kerberos openldap webkitgtk glib-networking + libcanberra-gtk3 pcre + ]; + + propagatedBuildInputs = [ libsecret nss nspr libical db libsoup ]; + + cmakeFlags = [ + "-DENABLE_UOA=OFF" + "-DENABLE_VALA_BINDINGS=ON" + "-DENABLE_INTROSPECTION=ON" + "-DCMAKE_SKIP_BUILD_RPATH=OFF" + "-DINCLUDE_INSTALL_DIR=${placeholder "dev"}/include" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "evolution-data-server"; + }; + }; + + meta = with stdenv.lib; { + description = "Unified backend for programs that work with contacts, tasks, and calendar information"; + homepage = https://wiki.gnome.org/Apps/Evolution; + license = licenses.lgpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/fix-paths.patch new file mode 100644 index 00000000000..33423551659 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/fix-paths.patch @@ -0,0 +1,11 @@ +--- a/src/calendar/libecal/e-cal-system-timezone.c ++++ b/src/calendar/libecal/e-cal-system-timezone.c +@@ -26,7 +26,7 @@ + #ifdef HAVE_SOLARIS + #define SYSTEM_ZONEINFODIR "/usr/share/lib/zoneinfo/tab" + #else +-#define SYSTEM_ZONEINFODIR "/usr/share/zoneinfo" ++#define SYSTEM_ZONEINFODIR "@tzdata@/share/zoneinfo" + #endif + + #define ETC_TIMEZONE "/etc/timezone" diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch new file mode 100644 index 00000000000..c499bac4552 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/evolution-data-server/hardcode-gsettings.patch @@ -0,0 +1,526 @@ +diff --git a/src/addressbook/libebook/e-book-client.c b/src/addressbook/libebook/e-book-client.c +index 2c0557c3c..5955aa55e 100644 +--- a/src/addressbook/libebook/e-book-client.c ++++ b/src/addressbook/libebook/e-book-client.c +@@ -1989,7 +1989,20 @@ e_book_client_get_self (ESourceRegistry *registry, + + *out_client = book_client; + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + uid = g_settings_get_string (settings, SELF_UID_KEY); + g_object_unref (settings); + +@@ -2057,7 +2070,20 @@ e_book_client_set_self (EBookClient *client, + g_return_val_if_fail ( + e_contact_get_const (contact, E_CONTACT_UID) != NULL, FALSE); + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + g_settings_set_string ( + settings, SELF_UID_KEY, + e_contact_get_const (contact, E_CONTACT_UID)); +@@ -2093,8 +2119,20 @@ e_book_client_is_self (EContact *contact) + * unfortunately the API doesn't allow that. + */ + g_mutex_lock (&mutex); +- if (!settings) +- settings = g_settings_new (SELF_UID_PATH_ID); ++ if (!settings) { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + uid = g_settings_get_string (settings, SELF_UID_KEY); + g_mutex_unlock (&mutex); + +diff --git a/src/addressbook/libebook/e-book.c b/src/addressbook/libebook/e-book.c +index 3396b57c0..ac6420b2e 100644 +--- a/src/addressbook/libebook/e-book.c ++++ b/src/addressbook/libebook/e-book.c +@@ -2594,7 +2594,20 @@ e_book_get_self (ESourceRegistry *registry, + return FALSE; + } + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + uid = g_settings_get_string (settings, SELF_UID_KEY); + g_object_unref (settings); + +@@ -2649,7 +2662,20 @@ e_book_set_self (EBook *book, + g_return_val_if_fail (E_IS_BOOK (book), FALSE); + g_return_val_if_fail (E_IS_CONTACT (contact), FALSE); + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + g_settings_set_string ( + settings, SELF_UID_KEY, + e_contact_get_const (contact, E_CONTACT_UID)); +@@ -2677,7 +2703,20 @@ e_book_is_self (EContact *contact) + + g_return_val_if_fail (E_IS_CONTACT (contact), FALSE); + +- settings = g_settings_new (SELF_UID_PATH_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ SELF_UID_PATH_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + uid = g_settings_get_string (settings, SELF_UID_KEY); + g_object_unref (settings); + +diff --git a/src/calendar/backends/contacts/e-cal-backend-contacts.c b/src/calendar/backends/contacts/e-cal-backend-contacts.c +index de1716941..e83b104f1 100644 +--- a/src/calendar/backends/contacts/e-cal-backend-contacts.c ++++ b/src/calendar/backends/contacts/e-cal-backend-contacts.c +@@ -1397,7 +1397,20 @@ e_cal_backend_contacts_init (ECalBackendContacts *cbc) + (GDestroyNotify) g_free, + (GDestroyNotify) contact_record_free); + +- cbc->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server.calendar", ++ FALSE); ++ cbc->priv->settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + cbc->priv->notifyid = 0; + cbc->priv->update_alarms_id = 0; + cbc->priv->alarm_enabled = FALSE; +diff --git a/src/calendar/libecal/e-reminder-watcher.c b/src/calendar/libecal/e-reminder-watcher.c +index b08a7f301..a49fe39c5 100644 +--- a/src/calendar/libecal/e-reminder-watcher.c ++++ b/src/calendar/libecal/e-reminder-watcher.c +@@ -2202,7 +2202,21 @@ e_reminder_watcher_init (EReminderWatcher *watcher) + + watcher->priv = G_TYPE_INSTANCE_GET_PRIVATE (watcher, E_TYPE_REMINDER_WATCHER, EReminderWatcherPrivate); + watcher->priv->cancellable = g_cancellable_new (); +- watcher->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server.calendar", ++ FALSE); ++ watcher->priv->settings = g_settings_new_full(schema, NULL, ++ NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + watcher->priv->scheduled = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, e_reminder_watcher_free_rd_slist); + watcher->priv->default_zone = icaltimezone_copy (zone); + watcher->priv->timers_enabled = TRUE; +diff --git a/src/camel/camel-cipher-context.c b/src/camel/camel-cipher-context.c +index dcdc3eed0..fd2e428c2 100644 +--- a/src/camel/camel-cipher-context.c ++++ b/src/camel/camel-cipher-context.c +@@ -1635,7 +1635,20 @@ camel_cipher_can_load_photos (void) + GSettings *settings; + gboolean load_photos; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + load_photos = g_settings_get_boolean (settings, "camel-cipher-load-photos"); + g_clear_object (&settings); + +diff --git a/src/camel/camel-gpg-context.c b/src/camel/camel-gpg-context.c +index 1b3362886..f0811b292 100644 +--- a/src/camel/camel-gpg-context.c ++++ b/src/camel/camel-gpg-context.c +@@ -573,7 +573,20 @@ gpg_ctx_get_executable_name (void) + GSettings *settings; + gchar *path; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + path = g_settings_get_string (settings, "camel-gpg-binary"); + g_clear_object (&settings); + +diff --git a/src/libedataserver/e-network-monitor.c b/src/libedataserver/e-network-monitor.c +index e0d8b87d6..3a4d5a359 100644 +--- a/src/libedataserver/e-network-monitor.c ++++ b/src/libedataserver/e-network-monitor.c +@@ -255,7 +255,20 @@ e_network_monitor_constructed (GObject *object) + /* Chain up to parent's method. */ + G_OBJECT_CLASS (e_network_monitor_parent_class)->constructed (object); + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + g_settings_bind ( + settings, "network-monitor-gio-name", + object, "gio-name", +diff --git a/src/libedataserver/e-oauth2-service-google.c b/src/libedataserver/e-oauth2-service-google.c +index f0c6f2cbf..0053e3ce6 100644 +--- a/src/libedataserver/e-oauth2-service-google.c ++++ b/src/libedataserver/e-oauth2-service-google.c +@@ -69,7 +69,20 @@ eos_google_read_settings (EOAuth2Service *service, + if (!value) { + GSettings *settings; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + value = g_settings_get_string (settings, key_name); + g_object_unref (settings); + +diff --git a/src/libedataserver/e-oauth2-service-outlook.c b/src/libedataserver/e-oauth2-service-outlook.c +index 687c10d3b..684583c35 100644 +--- a/src/libedataserver/e-oauth2-service-outlook.c ++++ b/src/libedataserver/e-oauth2-service-outlook.c +@@ -70,7 +70,20 @@ eos_outlook_read_settings (EOAuth2Service *service, + if (!value) { + GSettings *settings; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + value = g_settings_get_string (settings, key_name); + g_object_unref (settings); + +diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c +index 682673c16..436f52d5f 100644 +--- a/src/libedataserver/e-oauth2-service.c ++++ b/src/libedataserver/e-oauth2-service.c +@@ -95,7 +95,20 @@ eos_default_guess_can_process (EOAuth2Service *service, + name_len = strlen (name); + hostname_len = strlen (hostname); + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + values = g_settings_get_strv (settings, "oauth2-services-hint"); + g_object_unref (settings); + +diff --git a/src/libedataserver/e-proxy.c b/src/libedataserver/e-proxy.c +index 883379a60..989353494 100644 +--- a/src/libedataserver/e-proxy.c ++++ b/src/libedataserver/e-proxy.c +@@ -969,8 +969,37 @@ e_proxy_init (EProxy *proxy) + + proxy->priv->type = PROXY_TYPE_SYSTEM; + +- proxy->priv->evolution_proxy_settings = g_settings_new ("org.gnome.evolution.shell.network-config"); +- proxy->priv->proxy_settings = g_settings_new ("org.gnome.system.proxy"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution.shell.network-config", ++ FALSE); ++ proxy->priv->evolution_proxy_settings = g_settings_new_full(schema, ++ NULL, ++ NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@GDS_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.system.proxy", ++ FALSE); ++ proxy->priv->proxy_settings = g_settings_new_full(schema, ++ NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + proxy->priv->proxy_http_settings = g_settings_get_child (proxy->priv->proxy_settings, "http"); + proxy->priv->proxy_https_settings = g_settings_get_child (proxy->priv->proxy_settings, "https"); + proxy->priv->proxy_socks_settings = g_settings_get_child (proxy->priv->proxy_settings, "socks"); +diff --git a/src/libedataserver/e-source-registry.c b/src/libedataserver/e-source-registry.c +index a5a30a3e1..5fbdf8190 100644 +--- a/src/libedataserver/e-source-registry.c ++++ b/src/libedataserver/e-source-registry.c +@@ -1749,7 +1749,21 @@ e_source_registry_init (ESourceRegistry *registry) + + g_mutex_init (®istry->priv->sources_lock); + +- registry->priv->settings = g_settings_new (GSETTINGS_SCHEMA); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ GSETTINGS_SCHEMA, ++ FALSE); ++ registry->priv->settings = g_settings_new_full(schema, NULL, ++ NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + + g_signal_connect ( + registry->priv->settings, "changed", +diff --git a/src/libedataserverui/e-reminders-widget.c b/src/libedataserverui/e-reminders-widget.c +index f89cd4a5c..06cca9b5f 100644 +--- a/src/libedataserverui/e-reminders-widget.c ++++ b/src/libedataserverui/e-reminders-widget.c +@@ -1642,7 +1642,21 @@ static void + e_reminders_widget_init (ERemindersWidget *reminders) + { + reminders->priv = G_TYPE_INSTANCE_GET_PRIVATE (reminders, E_TYPE_REMINDERS_WIDGET, ERemindersWidgetPrivate); +- reminders->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server.calendar", ++ FALSE); ++ reminders->priv->settings = g_settings_new_full(schema, NULL, ++ NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + reminders->priv->cancellable = g_cancellable_new (); + reminders->priv->is_empty = TRUE; + reminders->priv->is_mapped = FALSE; +diff --git a/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c b/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c +index 6f03053d6..dffc186c7 100644 +--- a/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c ++++ b/src/services/evolution-source-registry/evolution-source-registry-autoconfig.c +@@ -706,7 +706,20 @@ evolution_source_registry_merge_autoconfig_sources (ESourceRegistryServer *serve + gchar *autoconfig_directory; + gint ii; + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + + autoconfig_sources = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, e_autoconfig_free_merge_source_data); + +diff --git a/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c b/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c +index d531cb9e2..c5b1c761c 100644 +--- a/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c ++++ b/src/services/evolution-source-registry/evolution-source-registry-migrate-proxies.c +@@ -61,7 +61,20 @@ evolution_source_registry_migrate_proxies (ESourceRegistryServer *server) + extension_name = E_SOURCE_EXTENSION_PROXY; + extension = e_source_get_extension (source, extension_name); + +- settings = g_settings_new (NETWORK_CONFIG_SCHEMA_ID); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ NETWORK_CONFIG_SCHEMA_ID, ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + + switch (g_settings_get_int (settings, "proxy-type")) { + case 1: +diff --git a/src/services/evolution-source-registry/evolution-source-registry.c b/src/services/evolution-source-registry/evolution-source-registry.c +index 1c0a11382..3e144845e 100644 +--- a/src/services/evolution-source-registry/evolution-source-registry.c ++++ b/src/services/evolution-source-registry/evolution-source-registry.c +@@ -181,7 +181,20 @@ main (gint argc, + + reload: + +- settings = g_settings_new ("org.gnome.evolution-data-server"); ++ { ++ GSettingsSchemaSource *schema_source; ++ GSettingsSchema *schema; ++ schema_source = g_settings_schema_source_new_from_directory("@ESD_GSETTINGS_PATH@", ++ g_settings_schema_source_get_default(), ++ TRUE, ++ NULL); ++ schema = g_settings_schema_source_lookup(schema_source, ++ "org.gnome.evolution-data-server", ++ FALSE); ++ settings = g_settings_new_full(schema, NULL, NULL); ++ g_settings_schema_source_unref(schema_source); ++ g_settings_schema_unref(schema); ++ } + + if (!opt_disable_migration && !g_settings_get_boolean (settings, "migrated")) { + g_settings_set_boolean (settings, "migrated", TRUE); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix new file mode 100644 index 00000000000..a4d2fd2be5a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/default.nix @@ -0,0 +1,82 @@ +{ stdenv, fetchurl, substituteAll, pkgconfig, glib, itstool, libxml2, xorg +, accountsservice, libX11, gnome3, systemd, autoreconfHook +, gtk3, libcanberra-gtk3, pam, libtool, gobject-introspection, plymouth +, librsvg, coreutils, xwayland }: + +stdenv.mkDerivation rec { + pname = "gdm"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gdm/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "12ypdz9i24hwbl1d1wnnxb8zlvfa4f49n9ac5cl9d6h8qp4b0gb4"; + }; + + # Only needed to make it build + preConfigure = '' + substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X" + ''; + + configureFlags = [ + "--sysconfdir=/etc" + "--localstatedir=/var" + "--with-plymouth=yes" + "--enable-gdm-xsession" + "--with-initial-vt=7" + "--with-systemdsystemunitdir=$(out)/etc/systemd/system" + "--with-udevdir=$(out)/lib/udev" + ]; + + nativeBuildInputs = [ pkgconfig libxml2 itstool autoreconfHook libtool gnome3.dconf ]; + buildInputs = [ + glib accountsservice systemd + gobject-introspection libX11 gtk3 + libcanberra-gtk3 pam plymouth librsvg + ]; + + enableParallelBuilding = true; + + patches = [ + # Change hardcoded paths to nix store paths. + (substituteAll { + src = ./fix-paths.patch; + inherit coreutils plymouth xwayland; + }) + + # The following patches implement certain environment variables in GDM which are set by + # the gdm configuration module (nixos/modules/services/x11/display-managers/gdm.nix). + + ./gdm-x-session_extra_args.patch + + # Allow specifying a wrapper for running the session command. + ./gdm-x-session_session-wrapper.patch + + # Forwards certain environment variables to the gdm-x-session child process + # to ensure that the above two patches actually work. + ./gdm-session-worker_forward-vars.patch + + # Set up the environment properly when launching sessions + # https://github.com/NixOS/nixpkgs/issues/48255 + ./reset-environment.patch + ]; + + installFlags = [ + "sysconfdir=$(out)/etc" + "dbusconfdir=$(out)/etc/dbus-1/system.d" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gdm"; + attrPath = "gnome3.gdm"; + }; + }; + + meta = with stdenv.lib; { + description = "A program that manages graphical display servers and handles graphical user logins"; + homepage = https://wiki.gnome.org/Projects/GDM; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch new file mode 100644 index 00000000000..6b5bd6152bd --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch @@ -0,0 +1,60 @@ +--- a/daemon/gdm-local-display-factory.c ++++ b/daemon/gdm-local-display-factory.c +@@ -201,7 +201,7 @@ + #ifdef ENABLE_WAYLAND_SUPPORT + gboolean wayland_enabled = FALSE; + if (gdm_settings_direct_get_boolean (GDM_KEY_WAYLAND_ENABLE, &wayland_enabled)) { +- if (wayland_enabled && g_file_test ("/usr/bin/Xwayland", G_FILE_TEST_IS_EXECUTABLE) ) ++ if (wayland_enabled && g_file_test ("@xwayland@/bin/Xwayland", G_FILE_TEST_IS_EXECUTABLE) ) + return TRUE; + } + #endif +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -145,7 +145,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_sync ("/bin/plymouth --ping", ++ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth --ping", + NULL, NULL, &status, &error); + if (! res) { + g_debug ("Could not ping plymouth: %s", error->message); +@@ -163,7 +163,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_sync ("/bin/plymouth deactivate", ++ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth deactivate", + NULL, NULL, NULL, &error); + if (! res) { + g_warning ("Could not deactivate plymouth: %s", error->message); +@@ -178,7 +178,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_async ("/bin/plymouth quit --retain-splash", &error); ++ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit --retain-splash", &error); + if (! res) { + g_warning ("Could not quit plymouth: %s", error->message); + g_error_free (error); +@@ -194,7 +194,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_async ("/bin/plymouth quit", &error); ++ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit", &error); + if (! res) { + g_warning ("Could not quit plymouth: %s", error->message); + g_error_free (error); +--- a/data/gdm.service.in ++++ b/data/gdm.service.in +@@ -28,7 +28,7 @@ BusName=org.gnome.DisplayManager + StandardOutput=syslog + StandardError=inherit + EnvironmentFile=-@LANG_CONFIG_FILE@ +-ExecReload=/bin/kill -SIGHUP $MAINPID ++ExecReload=@coreutils@/bin/kill -SIGHUP $MAINPID + KeyringMode=shared + + [Install] diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_forward-vars.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_forward-vars.patch new file mode 100644 index 00000000000..401b6aea0c2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_forward-vars.patch @@ -0,0 +1,31 @@ +diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c +index 9ef4c5b..94da834 100644 +--- a/daemon/gdm-session-worker.c ++++ b/daemon/gdm-session-worker.c +@@ -1515,6 +1515,16 @@ gdm_session_worker_load_env_d (GdmSessionWorker *worker) + g_object_unref (dir); + } + ++static void ++gdm_session_worker_forward_var (GdmSessionWorker *worker, char const *var) ++{ ++ char const *value = g_getenv(var); ++ if (value != NULL) { ++ g_debug ("forwarding %s= %s", var, value); ++ gdm_session_worker_set_environment_variable(worker, var, value); ++ } ++} ++ + static gboolean + gdm_session_worker_accredit_user (GdmSessionWorker *worker, + GError **error) +@@ -1559,6 +1569,9 @@ gdm_session_worker_accredit_user (GdmSessionWorker *worker, + goto out; + } + ++ gdm_session_worker_forward_var(worker, "GDM_X_SERVER_EXTRA_ARGS"); ++ gdm_session_worker_forward_var(worker, "GDM_X_SESSION_WRAPPER"); ++ + gdm_session_worker_update_environment_from_passwd_info (worker, + uid, + gid, diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch new file mode 100644 index 00000000000..66071aa4af8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch @@ -0,0 +1,38 @@ +diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c +index d835b34..1f4b7f1 100644 +--- a/daemon/gdm-x-session.c.orig ++++ b/daemon/gdm-x-session.c +@@ -211,6 +211,7 @@ spawn_x_server (State *state, + char *vt_string = NULL; + char *display_number; + gsize display_number_size; ++ gchar **xserver_extra_args = NULL; + + auth_file = prepare_auth_file (); + +@@ -285,6 +286,17 @@ spawn_x_server (State *state, + if (state->debug_enabled) { + g_ptr_array_add (arguments, "-core"); + } ++ ++ if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) { ++ g_debug ("using GDM_X_SERVER_EXTRA_ARGS: %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS")); ++ xserver_extra_args = g_strsplit(g_getenv("GDM_X_SERVER_EXTRA_ARGS"), " ", -1); ++ for (gchar **extra_arg = xserver_extra_args; *extra_arg; extra_arg++) { ++ if (strlen(*extra_arg) < 1) continue; ++ g_debug ("adding: %s", *extra_arg); ++ g_ptr_array_add (arguments, *extra_arg); ++ } ++ } ++ + g_ptr_array_add (arguments, NULL); + + subprocess = g_subprocess_launcher_spawnv (launcher, +@@ -332,6 +344,7 @@ spawn_x_server (State *state, + + is_running = TRUE; + out: ++ g_strfreev(xserver_extra_args); + g_clear_pointer (&auth_file, g_free); + g_clear_object (&data_stream); + g_clear_object (&subprocess); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_session-wrapper.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_session-wrapper.patch new file mode 100644 index 00000000000..58481f0730f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_session-wrapper.patch @@ -0,0 +1,40 @@ +diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c +index 88fe96f..b1b140a 100644 +--- a/daemon/gdm-x-session.c ++++ b/daemon/gdm-x-session.c +@@ -664,18 +664,34 @@ spawn_session (State *state, + state->session_command, + NULL); + } else { ++ char const *session_wrapper; ++ char *eff_session_command; + int ret; + char **argv; + +- ret = g_shell_parse_argv (state->session_command, ++ session_wrapper = g_getenv("GDM_X_SESSION_WRAPPER"); ++ if (session_wrapper != NULL) { ++ char *quoted_wrapper = g_shell_quote(session_wrapper); ++ eff_session_command = g_strjoin(" ", quoted_wrapper, state->session_command, NULL); ++ g_free(quoted_wrapper); ++ } else { ++ eff_session_command = state->session_command; ++ } ++ ++ ret = g_shell_parse_argv (eff_session_command, + NULL, + &argv, + &error); + ++ if (session_wrapper != NULL) { ++ g_free(eff_session_command); ++ } ++ + if (!ret) { + g_debug ("could not parse session arguments: %s", error->message); + goto out; + } ++ + subprocess = g_subprocess_launcher_spawnv (launcher, + (const char * const *) argv, + &error); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gdm/reset-environment.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/reset-environment.patch new file mode 100644 index 00000000000..61defd9c4bc --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gdm/reset-environment.patch @@ -0,0 +1,20 @@ +--- a/daemon/gdm-wayland-session.c ++++ b/daemon/gdm-wayland-session.c +@@ -285,6 +285,7 @@ spawn_session (State *state, + "WAYLAND_DISPLAY", + "WAYLAND_SOCKET", + "GNOME_SHELL_SESSION_MODE", ++ "__NIXOS_SET_ENVIRONMENT_DONE", + NULL }; + + g_debug ("Running wayland session"); +--- a/daemon/gdm-x-session.c ++++ b/daemon/gdm-x-session.c +@@ -610,6 +610,7 @@ spawn_session (State *state, + "WAYLAND_DISPLAY", + "WAYLAND_SOCKET", + "GNOME_SHELL_SESSION_MODE", ++ "__NIXOS_SET_ENVIRONMENT_DONE", + NULL }; + + g_debug ("Running X session"); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gjs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gjs/default.nix new file mode 100644 index 00000000000..303377b8631 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gjs/default.nix @@ -0,0 +1,51 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, gtk3, atk, gobject-introspection +, spidermonkey_60, pango, readline, glib, libxml2, dbus, gdk-pixbuf +, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "gjs"; + version = "1.56.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gjs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1b5321krn89p3f7s2ik6gpfnc61apzljhlnbqky8c88f7n6832ac"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gjs"; attrPath = "gnome3.gjs"; }; + }; + + outputs = [ "out" "installedTests" ]; + + nativeBuildInputs = [ pkgconfig makeWrapper ]; + buildInputs = [ libxml2 gobject-introspection gtk3 glib pango readline dbus ]; + + propagatedBuildInputs = [ spidermonkey_60 ]; + + configureFlags = [ + "--enable-installed-tests" + ]; + + postPatch = '' + for f in installed-tests/*.test.in; do + substituteInPlace "$f" --subst-var-by pkglibexecdir "$installedTests/libexec/gjs" + done + ''; + + postInstall = '' + sed 's|-lreadline|-L${readline.out}/lib -lreadline|g' -i $out/lib/libgjs.la + + moveToOutput "share/installed-tests" "$installedTests" + moveToOutput "libexec/gjs/installed-tests" "$installedTests" + + wrapProgram "$installedTests/libexec/gjs/installed-tests/minijasmine" \ + --prefix GI_TYPELIB_PATH : "${stdenv.lib.makeSearchPath "lib/girepository-1.0" [ gtk3 atk pango.out gdk-pixbuf ]}:$installedTests/libexec/gjs/installed-tests" + ''; + + meta = with stdenv.lib; { + description = "JavaScript bindings for GNOME"; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + license = licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix new file mode 100644 index 00000000000..e4c772cb1d4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-backgrounds/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-backgrounds"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-backgrounds/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1s5krdmd3md44p1fgr2lqm5ifxb8s1vzx6hm11sb4cgzr4dw6lrz"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-backgrounds"; attrPath = "gnome3.gnome-backgrounds"; }; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext ]; + + meta = with stdenv.lib; { + platforms = platforms.unix; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix new file mode 100644 index 00000000000..817c8324c6b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-bluetooth/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, gnome3, meson, ninja, pkgconfig, gtk3, intltool, glib +, udev, itstool, libxml2, wrapGAppsHook, libnotify, libcanberra-gtk3, gobject-introspection +, gtk-doc, docbook_xsl, docbook_xml_dtd_43, python3, gsettings-desktop-schemas }: + +let + pname = "gnome-bluetooth"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + version = "3.32.1"; + + # TODO: split out "lib" + outputs = [ "out" "dev" "devdoc" "man" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1am1gf0nzwg6x1s8ly13j0xnjzgrfj06j0dp52x4zy9s67ywlhb4"; + }; + + nativeBuildInputs = [ + meson ninja intltool itstool pkgconfig libxml2 wrapGAppsHook gobject-introspection + gtk-doc docbook_xsl docbook_xml_dtd_43 python3 + ]; + buildInputs = [ + glib gtk3 udev libnotify libcanberra-gtk3 + gnome3.adwaita-icon-theme gsettings-desktop-schemas + ]; + + mesonFlags = [ + "-Dicon_update=false" + "-Dgtk_doc=true" + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en; + description = "Application that let you manage Bluetooth in the GNOME destkop"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix new file mode 100644 index 00000000000..df43371a497 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-calculator/default.nix @@ -0,0 +1,46 @@ +{ stdenv, meson, ninja, vala, gettext, itstool, fetchurl, pkgconfig, libxml2 +, gtk3, glib, gtksourceview4, wrapGAppsHook, gobject-introspection, python3 +, gnome3, mpfr, gmp, libsoup, libmpc, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-calculator"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-calculator/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0fgpn3sc226s9fpzhik5rkkrf669037gc659ga2kn9jsyckj6p41"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig vala gettext itstool wrapGAppsHook python3 + gobject-introspection # for finding vapi files + ]; + + buildInputs = [ + gtk3 glib libxml2 gtksourceview4 mpfr gmp + gnome3.adwaita-icon-theme + gsettings-desktop-schemas libsoup libmpc + ]; + + doCheck = true; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-calculator"; + attrPath = "gnome3.gnome-calculator"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Calculator; + description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix new file mode 100644 index 00000000000..bcc8871bcf1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-color-manager/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, desktop-file-utils, gnome3, glib, gtk3, libexif, libtiff, colord, colord-gtk, libcanberra-gtk3, lcms2, vte, exiv2, hicolor-icon-theme }: + +let + pname = "gnome-color-manager"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1vpxa2zjz3lkq9ldjg0fl65db9s6b4kcs8nyaqfz3jygma7ifg3w"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool desktop-file-utils + # setup-hook + hicolor-icon-theme + ]; + + buildInputs = [ glib gtk3 libexif libtiff colord colord-gtk libcanberra-gtk3 lcms2 vte exiv2 ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A set of graphical utilities for color management to be used in the GNOME desktop"; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-common/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-common/default.nix new file mode 100644 index 00000000000..f2eb65e50bb --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-common/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, which, gnome3, autoconf, automake }: + +stdenv.mkDerivation rec { + pname = "gnome-common"; + version = "3.18.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-common/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "22569e370ae755e04527b76328befc4c73b62bfd4a572499fde116b8318af8cf"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-common"; attrPath = "gnome3.gnome-common"; }; + }; + + patches = [(fetchurl { + name = "gnome-common-patch"; + url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935"; + sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl"; + })]; + + propagatedBuildInputs = [ which autoconf automake ]; # autogen.sh which is using gnome-common tends to require which + + meta = with stdenv.lib; { + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix new file mode 100644 index 00000000000..75a15a41f97 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-contacts/default.nix @@ -0,0 +1,74 @@ +{ stdenv, gettext, fetchurl, evolution-data-server, fetchpatch +, pkgconfig, libxslt, docbook_xsl, docbook_xml_dtd_42, python3, gtk3, glib, cheese +, libchamplain, clutter-gtk, geocode-glib, gnome-desktop, gnome-online-accounts +, wrapGAppsHook, folks, libxml2, gnome3, telepathy-glib +, vala, meson, ninja, libhandy, gsettings-desktop-schemas }: + +let + version = "3.32.1"; +in stdenv.mkDerivation rec { + pname = "gnome-contacts"; + inherit version; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-contacts/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "17g1gh8yj58cfpdx69h2szivlbjgvv982kmhnkkh0i5bwj0zs2yy"; + }; + + propagatedUserEnvPkgs = [ evolution-data-server ]; + + nativeBuildInputs = [ + meson ninja pkgconfig vala gettext libxslt docbook_xsl docbook_xml_dtd_42 python3 wrapGAppsHook + ]; + + buildInputs = [ + gtk3 glib evolution-data-server gsettings-desktop-schemas + folks gnome-desktop telepathy-glib libhandy + libxml2 gnome-online-accounts cheese + gnome3.adwaita-icon-theme libchamplain clutter-gtk geocode-glib + ]; + + mesonFlags = [ + "-Dtelepathy=true" + ]; + + patches = [ + # Fixes build with libhandy >= 0.0.10 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gnome-contacts/commit/c5eee38cd2556403a640a0a4c11d36cbf9a5a798.patch"; + sha256 = "0s2cl7z6b0x3ky4y28yyxc9x5zp4r3vqmvbhz5m2fm6830fyjg13"; + }) + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gnome-contacts/commit/1f1500ca01098ffda6392f5ec9ce3a29a48a84b1.patch"; + sha256 = "082zaaj2l5cgr2qy145x8yknja87r0vpigrhidal40041kd5nldg"; + }) + ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + # In file included from src/gnome-contacts@exe/contacts-avatar-selector.c:30:0: + # /nix/store/*-cheese-3.28.0/include/cheese/cheese-widget.h:26:10: fatal error: clutter-gtk/clutter-gtk.h: No such file or directory + # #include <clutter-gtk/clutter-gtk.h> + # ^~~~~~~~~~~~~~~~~~~~~~~~~~~ + NIX_CFLAGS_COMPILE = "-I${stdenv.lib.getDev clutter-gtk}/include/clutter-gtk-1.0"; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-contacts"; + attrPath = "gnome3.gnome-contacts"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Contacts; + description = "GNOME’s integrated address book"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix new file mode 100644 index 00000000000..04730f2370f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix @@ -0,0 +1,183 @@ +{ fetchurl +, stdenv +, substituteAll +, accountsservice +, adwaita-icon-theme +, cheese +, clutter +, clutter-gtk +, colord +, colord-gtk +, cups +, docbook_xsl +, fontconfig +, gdk-pixbuf +, gettext +, glib +, glib-networking +, glibc +, gnome-bluetooth +, gnome-color-manager +, gnome-desktop +, gnome-online-accounts +, gnome-session +, gnome-settings-daemon +, gnome3 +, grilo +, grilo-plugins +, gsettings-desktop-schemas +, gsound +, gtk3 +, ibus +, libcanberra-gtk3 +, libgnomekbd +, libgtop +, libgudev +, libhandy +, libkrb5 +, libpulseaudio +, libpwquality +, librsvg +, libsecret +, libsoup +, libwacom +, libxml2 +, libxslt +, meson +, modemmanager +, mutter +, networkmanager +, networkmanagerapplet +, ninja +, pkgconfig +, polkit +, python3 +, samba +, shared-mime-info +, sound-theme-freedesktop +, tracker +, tzdata +, udisks2 +, upower +, vino +, gnome-user-share +, gnome-remote-desktop +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "gnome-control-center"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "03np0mhfl9kkdw4cb711pda0cli9zgh2bq2gqn2zwbdi3qnhk9gs"; + }; + + nativeBuildInputs = [ + docbook_xsl + gettext + libxslt + meson + ninja + pkgconfig + python3 + shared-mime-info + wrapGAppsHook + ]; + + buildInputs = [ + accountsservice + adwaita-icon-theme + cheese + clutter + clutter-gtk + colord + colord-gtk + fontconfig + gdk-pixbuf + glib + glib-networking + gnome-bluetooth + gnome-desktop + gnome-online-accounts + gnome-remote-desktop # optional, sharing panel + gnome-settings-daemon + gnome-user-share # optional, sharing panel + grilo + grilo-plugins # for setting wallpaper from Flickr + gsettings-desktop-schemas + gsound + gtk3 + ibus + libcanberra-gtk3 + libgtop + libgudev + libhandy + libkrb5 + libpulseaudio + libpwquality + librsvg + libsecret + libsoup + libwacom + libxml2 + modemmanager + mutter # schemas for the keybindings + networkmanager + networkmanagerapplet + polkit + samba + tracker + udisks2 + upower + vino + ]; + + patches = [ + (substituteAll { + src = ./paths.patch; + gcm = gnome-color-manager; + gnome_desktop = gnome-desktop; + inherit glibc libgnomekbd tzdata; + inherit cups networkmanagerapplet; + }) + ]; + + postPatch = '' + chmod +x build-aux/meson/meson_post_install.py # patchShebangs requires executable file + patchShebangs build-aux/meson/meson_post_install.py + ''; + + mesonFlags = [ + "-Dgnome_session_libexecdir=${gnome-session}/libexec" + ]; + + preFixup = '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share" + # Thumbnailers (for setting user profile pictures) + --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" + --prefix XDG_DATA_DIRS : "${librsvg}/share" + # WM keyboard shortcuts + --prefix XDG_DATA_DIRS : "${mutter}/share" + ) + for i in $out/share/applications/*; do + substituteInPlace $i --replace "Exec=gnome-control-center" "Exec=$out/bin/gnome-control-center" + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Utilities to configure the GNOME desktop"; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch new file mode 100644 index 00000000000..97d8f0bee68 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch @@ -0,0 +1,167 @@ +diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c +index 49ca35220..adefb87b9 100644 +--- a/panels/color/cc-color-panel.c ++++ b/panels/color/cc-color-panel.c +@@ -599,7 +599,7 @@ gcm_prefs_calibrate_cb (GtkWidget *widget, CcColorPanel *prefs) + + /* run with modal set */ + argv = g_ptr_array_new_with_free_func (g_free); +- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-calibrate", NULL)); ++ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-calibrate", NULL)); + g_ptr_array_add (argv, g_strdup ("--device")); + g_ptr_array_add (argv, g_strdup (cd_device_get_id (prefs->current_device))); + g_ptr_array_add (argv, g_strdup ("--parent-window")); +@@ -1038,7 +1038,7 @@ gcm_prefs_profile_view (CcColorPanel *prefs, CdProfile *profile) + + /* open up gcm-viewer as a info pane */ + argv = g_ptr_array_new_with_free_func (g_free); +- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-viewer", NULL)); ++ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-viewer", NULL)); + g_ptr_array_add (argv, g_strdup ("--profile")); + g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile))); + g_ptr_array_add (argv, g_strdup ("--parent-window")); +@@ -1288,15 +1288,12 @@ gcm_prefs_device_clicked (CcColorPanel *prefs, CdDevice *device) + static void + gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device) + { +- g_autofree gchar *s = NULL; +- + /* get profile */ + g_debug ("selected profile = %s", + cd_profile_get_filename (profile)); + + /* allow getting profile info */ +- if (cd_profile_get_filename (profile) != NULL && +- (s = g_find_program_in_path ("gcm-viewer")) != NULL) ++ if (cd_profile_get_filename (profile) != NULL) + gtk_widget_set_sensitive (prefs->toolbutton_profile_view, TRUE); + else + gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE); +diff --git a/panels/datetime/tz.h b/panels/datetime/tz.h +index 96b25140c..1ad704d4a 100644 +--- a/panels/datetime/tz.h ++++ b/panels/datetime/tz.h +@@ -27,11 +27,7 @@ + + #include <glib.h> + +-#ifndef __sun +-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" +-#else +-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" +-#endif ++#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab" + + typedef struct _TzDB TzDB; + typedef struct _TzLocation TzLocation; +diff --git a/panels/info/cc-info-overview-panel.c b/panels/info/cc-info-overview-panel.c +index 4541986db..da7826bfe 100644 +--- a/panels/info/cc-info-overview-panel.c ++++ b/panels/info/cc-info-overview-panel.c +@@ -187,7 +187,7 @@ load_gnome_version (char **version, + gsize length; + g_autoptr(VersionData) data = NULL; + +- if (!g_file_get_contents (DATADIR "/gnome/gnome-version.xml", ++ if (!g_file_get_contents ("@gnome_desktop@/share/gnome/gnome-version.xml", + &contents, + &length, + &error)) +diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c +index 9390a3308..d30b4a68e 100644 +--- a/panels/network/connection-editor/net-connection-editor.c ++++ b/panels/network/connection-editor/net-connection-editor.c +@@ -247,9 +247,9 @@ net_connection_editor_do_fallback (NetConnectionEditor *editor, const gchar *typ + GError *error = NULL; + + if (editor->is_new_connection) { +- cmdline = g_strdup_printf ("nm-connection-editor --type='%s' --create", type); ++ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --type='%s' --create", type); + } else { +- cmdline = g_strdup_printf ("nm-connection-editor --edit='%s'", ++ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit='%s'", + nm_connection_get_uuid (editor->connection)); + } + +diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c +index 360fbfc72..870157a11 100644 +--- a/panels/network/net-device-wifi.c ++++ b/panels/network/net-device-wifi.c +@@ -1385,7 +1385,7 @@ device_wifi_edit (NetObject *object) + return; + } + uuid = nm_connection_get_uuid (NM_CONNECTION (connection)); +- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid); ++ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid); + g_debug ("Launching '%s'\n", cmdline); + if (!g_spawn_command_line_async (cmdline, &error)) { + g_warning ("Failed to launch nm-connection-editor: %s", error->message); +diff --git a/panels/network/net-device.c b/panels/network/net-device.c +index d73b537b9..e2ee54294 100644 +--- a/panels/network/net-device.c ++++ b/panels/network/net-device.c +@@ -197,7 +197,7 @@ net_device_edit (NetObject *object) + + connection = net_device_get_find_connection (device); + uuid = nm_connection_get_uuid (connection); +- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid); ++ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid); + g_debug ("Launching '%s'\n", cmdline); + if (!g_spawn_command_line_async (cmdline, &error)) { + g_warning ("Failed to launch nm-connection-editor: %s", error->message); +diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c +index f53ba217e..d24bcaeb9 100644 +--- a/panels/printers/pp-host.c ++++ b/panels/printers/pp-host.c +@@ -256,7 +256,7 @@ _pp_host_get_snmp_devices_thread (GTask *task, + devices = g_new0 (PpDevicesList, 1); + + argv = g_new0 (gchar *, 3); +- argv[0] = g_strdup ("/usr/lib/cups/backend/snmp"); ++ argv[0] = g_strdup ("@cups@/lib/cups/backend/snmp"); + argv[1] = g_strdup (priv->hostname); + + /* Use SNMP to get printer's informations */ +diff --git a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c +index 35859526d..21486c917 100644 +--- a/panels/region/cc-region-panel.c ++++ b/panels/region/cc-region-panel.c +@@ -755,10 +755,10 @@ row_layout_cb (CcRegionPanel *self, + layout_variant = cc_input_source_get_layout_variant (source); + + if (layout_variant && layout_variant[0]) +- commandline = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"", ++ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l \"%s\t%s\"", + layout, layout_variant); + else +- commandline = g_strdup_printf ("gkbd-keyboard-display -l %s", ++ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s", + layout); + + g_spawn_command_line_async (commandline, NULL); +diff --git a/panels/user-accounts/run-passwd.c b/panels/user-accounts/run-passwd.c +index 00239ce0f..617c98870 100644 +--- a/panels/user-accounts/run-passwd.c ++++ b/panels/user-accounts/run-passwd.c +@@ -150,7 +150,7 @@ spawn_passwd (PasswdHandler *passwd_handler, GError **error) + gchar **envp; + gint my_stdin, my_stdout, my_stderr; + +- argv[0] = "/usr/bin/passwd"; /* Is it safe to rely on a hard-coded path? */ ++ argv[0] = "/run/wrappers/bin/passwd"; /* Is it safe to rely on a hard-coded path? */ + argv[1] = NULL; + + envp = g_get_environ (); +diff --git a/tests/datetime/test-endianess.c b/tests/datetime/test-endianess.c +index 9cb92007a..84d2f0fa3 100644 +--- a/tests/datetime/test-endianess.c ++++ b/tests/datetime/test-endianess.c +@@ -26,7 +26,7 @@ test_endianess (void) + g_autoptr(GDir) dir = NULL; + const char *name; + +- dir = g_dir_open ("/usr/share/i18n/locales/", 0, NULL); ++ dir = g_dir_open ("@glibc@/share/i18n/locales/", 0, NULL); + if (dir == NULL) { + /* Try with /usr/share/locale/ + * https://bugzilla.gnome.org/show_bug.cgi?id=646780 */ diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/bubblewrap-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/bubblewrap-paths.patch new file mode 100644 index 00000000000..57eb4b3d44a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/bubblewrap-paths.patch @@ -0,0 +1,15 @@ +--- a/libgnome-desktop/gnome-desktop-thumbnail-script.c ++++ b/libgnome-desktop/gnome-desktop-thumbnail-script.c +@@ -536,9 +536,9 @@ add_bwrap (GPtrArray *array, + g_return_val_if_fail (script->s_infile != NULL, FALSE); + + add_args (array, +- "bwrap", +- "--ro-bind", "/usr", "/usr", +- "--ro-bind", "/etc/ld.so.cache", "/etc/ld.so.cache", ++ "@bubblewrap_bin@", ++ "--ro-bind", "@storeDir@", "@storeDir@", ++ "--ro-bind", "/run/current-system", "/run/current-system", + NULL); + + /* These directories might be symlinks into /usr/... */ diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix new file mode 100644 index 00000000000..9d798c2811b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-desktop/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, substituteAll, pkgconfig, libxslt, ninja, libX11, gnome3, gtk3, glib +, gettext, libxml2, xkeyboard_config, isocodes, meson, wayland +, libseccomp, systemd, bubblewrap, gobject-introspection, gtk-doc, docbook_xsl, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-desktop"; + version = "3.32.2"; + + outputs = [ "out" "dev" "devdoc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-desktop/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0bidx4626x7k2myv6f64qv4fzmxv8v475wibiz19kj8hjfr737q9"; + }; + + nativeBuildInputs = [ + pkgconfig meson ninja gettext libxslt libxml2 gobject-introspection + gtk-doc docbook_xsl + ]; + buildInputs = [ + libX11 bubblewrap xkeyboard_config isocodes wayland + gtk3 glib libseccomp systemd + ]; + + propagatedBuildInputs = [ gsettings-desktop-schemas ]; + + patches = [ + (substituteAll { + src = ./bubblewrap-paths.patch; + bubblewrap_bin = "${bubblewrap}/bin/bwrap"; + inherit (builtins) storeDir; + }) + ]; + + mesonFlags = [ + "-Dgtk_doc=true" + "-Ddesktop_docs=false" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-desktop"; + attrPath = "gnome3.gnome-desktop"; + }; + }; + + meta = with stdenv.lib; { + description = "Library with common API for various GNOME modules"; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix new file mode 100644 index 00000000000..98398311882 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-dictionary/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, desktop-file-utils, appstream-glib, libxslt +, libxml2, gettext, itstool, wrapGAppsHook, docbook_xsl, docbook_xml_dtd_43 +, gnome3, gtk3, glib, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gnome-dictionary"; + version = "3.26.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-dictionary/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "16b8bc248dcf68987826d5e39234b1bb7fd24a2607fcdbf4258fde88f012f300"; + }; + + doCheck = true; + + nativeBuildInputs = [ + meson ninja pkgconfig wrapGAppsHook libxml2 gettext itstool + desktop-file-utils appstream-glib libxslt docbook_xsl docbook_xml_dtd_43 + ]; + buildInputs = [ gtk3 glib gsettings-desktop-schemas gnome3.adwaita-icon-theme ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-dictionary"; + attrPath = "gnome3.gnome-dictionary"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Dictionary; + description = "Dictionary is the GNOME application to look up definitions"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix new file mode 100644 index 00000000000..d6d9f927252 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-disk-utility/default.nix @@ -0,0 +1,45 @@ +{ stdenv, gettext, fetchurl, pkgconfig, udisks2, libsecret, libdvdread +, meson, ninja, gtk3, glib, wrapGAppsHook, python3, libnotify +, itstool, gnome3, libxml2, gsettings-desktop-schemas +, libcanberra-gtk3, libxslt, docbook_xsl, libpwquality }: + +stdenv.mkDerivation rec { + pname = "gnome-disk-utility"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-disk-utility/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "08vwbji9m1nhjjdiyhhaqi8cncys7i89b4bpy095f8475v8y05bg"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxslt docbook_xsl + wrapGAppsHook python3 libxml2 + ]; + + buildInputs = [ + gtk3 glib libsecret libpwquality libnotify libdvdread libcanberra-gtk3 + udisks2 gnome3.adwaita-icon-theme + gnome3.gnome-settings-daemon gsettings-desktop-schemas + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-disk-utility"; + attrPath = "gnome3.gnome-disk-utility"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://en.wikipedia.org/wiki/GNOME_Disks; + description = "A udisks graphical front-end"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix new file mode 100644 index 00000000000..976829acd4c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-font-viewer/default.nix @@ -0,0 +1,35 @@ +{ stdenv, meson, ninja, gettext, fetchurl +, pkgconfig, gtk3, glib, libxml2, gnome-desktop, adwaita-icon-theme +, wrapGAppsHook, gnome3, harfbuzz }: + +stdenv.mkDerivation rec { + pname = "gnome-font-viewer"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-font-viewer/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "10b150sa3971i5lfnk0jkkzlril97lz09sshwsbkabc8b7kv1qa3"; + }; + + doCheck = true; + + nativeBuildInputs = [ meson ninja pkgconfig gettext wrapGAppsHook libxml2 ]; + buildInputs = [ gtk3 glib gnome-desktop adwaita-icon-theme harfbuzz ]; + + # Do not run meson-postinstall.sh + preConfigure = "sed -i '2,$ d' meson-postinstall.sh"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-font-viewer"; + attrPath = "gnome3.gnome-font-viewer"; + }; + }; + + meta = with stdenv.lib; { + description = "Program that can preview fonts and create thumbnails for fonts"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix new file mode 100644 index 00000000000..7817936bfda --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix @@ -0,0 +1,73 @@ +{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, pam, python2, glib, libxslt +, gettext, gcr, libcap_ng, libselinux, p11-kit, openssh, wrapGAppsHook +, docbook_xsl, docbook_xml_dtd_43, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-keyring"; + version = "3.31.91"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-keyring/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1fjylqw4xp0rqsylq4gbxzw1sql2sy55h1mnz1pprrxb9py0mnd4"; + }; + + outputs = [ "out" "dev" ]; + + buildInputs = [ + glib libgcrypt pam openssh libcap_ng libselinux + gcr p11-kit + ]; + + nativeBuildInputs = [ + pkgconfig gettext libxslt docbook_xsl docbook_xml_dtd_43 wrapGAppsHook + ]; + + configureFlags = [ + "--with-pkcs11-config=${placeholder "out"}/etc/pkcs11/" # installation directories + "--with-pkcs11-modules=${placeholder "out"}/lib/pkcs11/" + ]; + + postPatch = '' + patchShebangs build + ''; + + # Tends to fail non-deterministically. + # - https://github.com/NixOS/nixpkgs/issues/55293 + # - https://github.com/NixOS/nixpkgs/issues/51121 + doCheck = false; + + # In 3.20.1, tests do not support Python 3 + checkInputs = [ dbus python2 ]; + + checkPhase = '' + export HOME=$(mktemp -d) + dbus-run-session \ + --config-file=${dbus.daemon}/share/dbus-1/session.conf \ + make check + ''; + + # Use wrapped gnome-keyring-daemon with cap_ipc_lock=ep + postFixup = '' + files=($out/etc/xdg/autostart/* $out/share/dbus-1/services/*) + + for file in ''${files[*]}; do + substituteInPlace $file \ + --replace "$out/bin/gnome-keyring-daemon" "/run/wrappers/bin/gnome-keyring-daemon" + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-keyring"; + attrPath = "gnome3.gnome-keyring"; + }; + }; + + meta = with stdenv.lib; { + description = "Collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications"; + homepage = https://wiki.gnome.org/Projects/GnomeKeyring; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix new file mode 100644 index 00000000000..93da1f8abec --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-online-miners/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, glib, gnome3, libxml2 +, libgdata, grilo, libzapojit, grilo-plugins, gnome-online-accounts, libmediaart +, tracker, gfbgraph, librest, libsoup, json-glib, gmp, openssl, dleyna-server, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "gnome-online-miners"; + version = "3.30.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-online-miners/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0pjamwwzn5wqgihyss357dyl2q70r0bngnqmwsqawchx5f9aja9c"; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook ]; + buildInputs = [ + glib libgdata libxml2 libsoup gmp openssl + grilo libzapojit grilo-plugins + gnome-online-accounts libmediaart + tracker gfbgraph json-glib librest + dleyna-server + ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-online-miners"; + attrPath = "gnome3.gnome-online-miners"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GnomeOnlineMiners; + description = "A set of crawlers that go through your online content and index them locally in Tracker"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix new file mode 100644 index 00000000000..fd507acc009 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-remote-desktop/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitLab, meson, ninja, pkgconfig, python3, wrapGAppsHook +, glib, pipewire, systemd, libvncserver, libsecret, libnotify, gdk-pixbuf, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-remote-desktop"; + version = "0.1.7"; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "jadahl"; + repo = "gnome-remote-desktop"; + rev = version; + sha256 = "0gmazc8ww0lyhx9iclhi982bkpjsnflrzv4qfm3q6hcy0il21fsc"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig python3 wrapGAppsHook ]; + + buildInputs = [ + glib pipewire systemd libvncserver libsecret libnotify + gdk-pixbuf # For libnotify + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + mesonFlags = [ + "-Dsystemd_user_unit_dir=${placeholder "out"}/lib/systemd/user" + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/Mutter/RemoteDesktop; + description = "GNOME Remote Desktop server"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix new file mode 100644 index 00000000000..33acfd245cf --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-screenshot/default.nix @@ -0,0 +1,43 @@ +{ stdenv, gettext, libxml2, fetchurl, pkgconfig, libcanberra-gtk3 +, gtk3, glib, meson, ninja, python3, wrapGAppsHook, appstream-glib, desktop-file-utils +, gnome3, gsettings-desktop-schemas }: + +let + pname = "gnome-screenshot"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "09ha7dizjm5ymqpjyrqd10ijfb3xlqc1mwg9ajkrbfry11q9yq4b"; + }; + + doCheck = true; + + postPatch = '' + chmod +x build-aux/postinstall.py # patchShebangs requires executable file + patchShebangs build-aux/postinstall.py + ''; + + nativeBuildInputs = [ meson ninja pkgconfig gettext appstream-glib libxml2 desktop-file-utils python3 wrapGAppsHook ]; + buildInputs = [ + gtk3 glib libcanberra-gtk3 gnome3.adwaita-icon-theme + gsettings-desktop-schemas + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://en.wikipedia.org/wiki/GNOME_Screenshot; + description = "Utility used in the GNOME desktop environment for taking screenshots"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix new file mode 100644 index 00000000000..f13ad9f47aa --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/default.nix @@ -0,0 +1,67 @@ +{ fetchurl, stdenv, substituteAll, meson, ninja, pkgconfig, gnome3, glib, gtk3, gsettings-desktop-schemas +, gnome-desktop, dbus, json-glib, libICE, xmlto, docbook_xsl, docbook_xml_dtd_412, python3 +, libxslt, gettext, makeWrapper, systemd, xorg, epoxy, gnugrep, bash }: + +stdenv.mkDerivation rec { + pname = "gnome-session"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-session/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0zrzkpd406i159mla7bfs5npa32fgqh66aip1rfq02rgsgmc9m5v"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + gsettings = "${glib.bin}/bin/gsettings"; + dbusLaunch = "${dbus.lib}/bin/dbus-launch"; + grep = "${gnugrep}/bin/grep"; + bash = "${bash}/bin/bash"; + }) + ]; + + mesonFlags = [ "-Dsystemd=true" ]; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext makeWrapper + xmlto libxslt docbook_xsl docbook_xml_dtd_412 python3 + dbus # for DTD + ]; + + buildInputs = [ + glib gtk3 libICE gnome-desktop json-glib xorg.xtrans gnome3.adwaita-icon-theme + gnome3.gnome-settings-daemon gsettings-desktop-schemas systemd epoxy + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + # `bin/gnome-session` will reset the environment when run in wayland, we + # therefor wrap `libexec/gnome-session-binary` instead which is the actual + # binary needing wrapping + preFixup = '' + wrapProgram "$out/libexec/gnome-session-binary" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \ + --suffix XDG_DATA_DIRS : "${gnome3.gnome-shell}/share"\ + --suffix XDG_CONFIG_DIRS : "${gnome3.gnome-settings-daemon}/etc/xdg" + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-session"; + attrPath = "gnome3.gnome-session"; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME session manager"; + homepage = https://wiki.gnome.org/Projects/SessionManagement; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch new file mode 100644 index 00000000000..fe4feaf7085 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-session/fix-paths.patch @@ -0,0 +1,38 @@ +--- a/gnome-session/gnome-session.in ++++ b/gnome-session/gnome-session.in +@@ -3,11 +3,11 @@ + if [ "x$XDG_SESSION_TYPE" = "xwayland" ] && + [ "x$XDG_SESSION_CLASS" != "xgreeter" ] && + [ -n "$SHELL" ] && +- grep -q "$SHELL" /etc/shells && +- ! (echo "$SHELL" | grep -q "false") && +- ! (echo "$SHELL" | grep -q "nologin"); then ++ @grep@ -q "$SHELL" /etc/shells && ++ ! (echo "$SHELL" | @grep@ -q "false") && ++ ! (echo "$SHELL" | @grep@ -q "nologin"); then + if [ "$1" != '-l' ]; then +- exec bash -c "exec -l '$SHELL' -c '$0 -l $*'" ++ exec @bash@ -c "exec -l '$SHELL' -c '$0 -l $*'" + else + shift + fi +@@ -13,7 +13,7 @@ + fi + fi + +-SETTING=$(G_MESSAGES_DEBUG= gsettings get org.gnome.system.locale region) ++SETTING=$(G_MESSAGES_DEBUG= @gsettings@ get org.gnome.system.locale region) + REGION=${SETTING#\'} + REGION=${REGION%\'} + +--- a/gnome-session/main.c ++++ b/gnome-session/main.c +@@ -203,7 +203,7 @@ + } + new_argv[i + 2] = NULL; + +- if (!execvp ("dbus-launch", new_argv)) { ++ if (!execvp ("@dbusLaunch@", new_argv)) { + g_set_error (error, + G_SPAWN_ERROR, + G_SPAWN_ERROR_FAILED, diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix new file mode 100644 index 00000000000..b9f33ce73a8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/default.nix @@ -0,0 +1,129 @@ +{ stdenv +, substituteAll +, fetchurl +, meson +, ninja +, pkgconfig +, gnome3 +, perl +, gettext +, gtk3 +, glib +, libnotify +, libgnomekbd +, lcms2 +, libpulseaudio +, mousetweaks +, alsaLib +, libcanberra-gtk3 +, upower +, colord +, libgweather +, polkit +, gsettings-desktop-schemas +, geoclue2 +, systemd +, libgudev +, libwacom +, libxslt +, libxml2 +, networkmanager +, gnome-desktop +, geocode-glib +, docbook_xsl +, wrapGAppsHook +, python3 +, tzdata +, nss +}: + +stdenv.mkDerivation rec { + pname = "gnome-settings-daemon"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-settings-daemon/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "02d0s0g2mmqfib44r3sf0499r08p61s8l2ndsjssbam1bi7x2dks"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit tzdata mousetweaks; + }) + ./global-backlight-helper.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + perl + gettext + libxml2 + libxslt + docbook_xsl + wrapGAppsHook + python3 + ]; + + buildInputs = [ + gtk3 + glib + gsettings-desktop-schemas + networkmanager + libnotify + libgnomekbd # for org.gnome.libgnomekbd.keyboard schema + gnome-desktop + lcms2 + libpulseaudio + alsaLib + libcanberra-gtk3 + upower + colord + libgweather + nss + polkit + geocode-glib + geoclue2 + systemd + libgudev + libwacom + ]; + + mesonFlags = [ + "-Dudev_dir=${placeholder "out"}/lib/udev" + ]; + + NIX_CFLAGS_COMPILE = [ + # Default for release buildtype but passed manually because + # we're using plain + "-DG_DISABLE_CAST_CHECKS" + ]; + + # So the polkit policy can reference /run/current-system/sw/bin/gnome-settings-daemon/gsd-backlight-helper + postFixup = '' + mkdir -p $out/bin/gnome-settings-daemon + ln -s $out/libexec/gsd-backlight-helper $out/bin/gnome-settings-daemon/gsd-backlight-helper + ''; + + postPatch = '' + for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl meson_post_install.py; do + chmod +x $f + patchShebangs $f + done + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch new file mode 100644 index 00000000000..272656fae78 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/fix-paths.patch @@ -0,0 +1,26 @@ +--- a/plugins/datetime/tz.h ++++ b/plugins/datetime/tz.h +@@ -27,11 +27,7 @@ + + #include <glib.h> + +-#ifndef __sun +-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" +-#else +-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" +-#endif ++#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab" + + typedef struct _TzDB TzDB; + typedef struct _TzLocation TzLocation; +--- a/plugins/mouse/gsd-mouse-manager.c ++++ b/plugins/mouse/gsd-mouse-manager.c +@@ -118,7 +118,7 @@ set_mousetweaks_daemon (GsdMouseManager *manager, + gboolean run_daemon = dwell_click_enabled || secondary_click_enabled; + + if (run_daemon || manager->priv->mousetweaks_daemon_running) +- comm = g_strdup_printf ("mousetweaks %s", ++ comm = g_strdup_printf ("@mousetweaks@/bin/mousetweaks %s", + run_daemon ? "" : "-s"); + else + return; diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/global-backlight-helper.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/global-backlight-helper.patch new file mode 100644 index 00000000000..8f3951af2da --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-settings-daemon/global-backlight-helper.patch @@ -0,0 +1,26 @@ +diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c +index d7d10fd2..5619d6ad 100644 +--- a/plugins/power/gsd-backlight.c ++++ b/plugins/power/gsd-backlight.c +@@ -358,7 +358,7 @@ gsd_backlight_run_set_helper (GsdBacklight *backlight, GTask *task) + proc = g_subprocess_new (G_SUBPROCESS_FLAGS_STDOUT_SILENCE, + &error, + "pkexec", +- LIBEXECDIR "/gsd-backlight-helper", ++ "/run/current-system/sw/bin/gnome-settings-daemon/gsd-backlight-helper", + g_udev_device_get_sysfs_path (backlight->udev_device), + data->value_str, NULL); + } else { +diff --git a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in +index f16300f8..79d6bd17 100644 +--- a/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in ++++ b/plugins/power/org.gnome.settings-daemon.plugins.power.policy.in.in +@@ -25,7 +25,7 @@ + <allow_inactive>no</allow_inactive> + <allow_active>yes</allow_active> + </defaults> +- <annotate key="org.freedesktop.policykit.exec.path">@libexecdir@/gsd-backlight-helper</annotate> ++ <annotate key="org.freedesktop.policykit.exec.path">/run/current-system/sw/bin/gnome-settings-daemon/gsd-backlight-helper</annotate> + </action> + + </policyconfig> diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix new file mode 100644 index 00000000000..3d37040828c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchurl, meson, ninja, gettext, pkgconfig, spidermonkey_52, glib +, gnome3, gnome-menus, substituteAll }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extensions"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-shell-extensions/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "07libf6z24n42hpdsq163w0j8xyrav0lxqrwxrvq5kbz8zxv5ch2"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-shell-extensions"; + attrPath = "gnome3.gnome-shell-extensions"; + }; + }; + + patches = [ + (substituteAll { + src = ./fix_gmenu.patch; + gmenu_path = "${gnome-menus}/lib/girepository-1.0"; + }) + ]; + + doCheck = true; + # 52 is required for tests + # https://gitlab.gnome.org/GNOME/gnome-shell-extensions/blob/3.30.1/meson.build#L25 + checkInputs = [ spidermonkey_52 ]; + + nativeBuildInputs = [ meson ninja pkgconfig gettext glib ]; + + mesonFlags = [ "-Dextension_set=all" ]; + + preFixup = '' + # The meson build doesn't compile the schemas. + # Fixup adapted from export-zips.sh in the source. + + extensiondir=$out/share/gnome-shell/extensions + schemadir=${glib.makeSchemaPath "$out" "${pname}-${version}"} + + glib-compile-schemas $schemadir + + for f in $extensiondir/*; do + name=`basename ''${f%%@*}` + uuid=$name@gnome-shell-extensions.gcampax.github.com + schema=$schemadir/org.gnome.shell.extensions.$name.gschema.xml + + if [ -f $schema ]; then + mkdir $f/schemas + ln -s $schema $f/schemas; + glib-compile-schemas $f/schemas + fi + done + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GnomeShell/Extensions; + description = "Modify and extend GNOME Shell functionality and behavior"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/fix_gmenu.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/fix_gmenu.patch new file mode 100644 index 00000000000..555664e8ae2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell-extensions/fix_gmenu.patch @@ -0,0 +1,11 @@ +--- a/extensions/apps-menu/extension.js ++++ b/extensions/apps-menu/extension.js +@@ -1,6 +1,8 @@ + /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ + /* exported init enable disable */ + ++imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@'); ++ + const { + Atk, Clutter, Gio, GLib, GMenu, GObject, Gtk, Meta, Shell, St + } = imports.gi; diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix new file mode 100644 index 00000000000..a1d8f2c599a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/default.nix @@ -0,0 +1,99 @@ +{ fetchurl, fetchpatch, substituteAll, stdenv, meson, ninja, pkgconfig, gnome3, json-glib, libcroco, gettext, libsecret +, python3, libsoup, polkit, clutter, networkmanager, docbook_xsl , docbook_xsl_ns, at-spi2-core +, libstartup_notification, telepathy-glib, telepathy-logger, libXtst, unzip, glibcLocales, shared-mime-info +, libgweather, libcanberra-gtk3, librsvg, geoclue2, perl, docbook_xml_dtd_42, desktop-file-utils +, libpulseaudio, libical, gobject-introspection, gstreamer, wrapGAppsHook, libxslt, gcr, caribou +, accountsservice, gdk-pixbuf, gdm, upower, ibus, networkmanagerapplet, libgnomekbd, gnome-desktop +, gsettings-desktop-schemas, gnome-keyring, glib, gjs, mutter, evolution-data-server, gtk3 +, sassc, systemd, gst_all_1, adwaita-icon-theme, gnome-bluetooth, gnome-clocks, gnome-settings-daemon }: + +# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild?revision=1.3&view=markup + +let + pythonEnv = python3.withPackages ( ps: with ps; [ pygobject3 ] ); + +in stdenv.mkDerivation rec { + pname = "gnome-shell"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-shell/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0anlkdnqsp5fqvmg95rqjpp1ifcx5xzsvwcrdsvb1cqzbh6inmp5"; + }; + + LANG = "en_US.UTF-8"; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext docbook_xsl docbook_xsl_ns docbook_xml_dtd_42 perl wrapGAppsHook glibcLocales + sassc desktop-file-utils libxslt.bin python3 + ]; + buildInputs = [ + systemd caribou + gsettings-desktop-schemas gnome-keyring glib gcr json-glib accountsservice + libcroco libsecret libsoup polkit gdk-pixbuf librsvg + clutter networkmanager libstartup_notification telepathy-glib + libXtst gjs mutter libpulseaudio evolution-data-server + libical gtk3 gstreamer gdm libcanberra-gtk3 geoclue2 + adwaita-icon-theme gnome-bluetooth + gnome-clocks # schemas needed + at-spi2-core upower ibus gnome-desktop telepathy-logger gnome-settings-daemon + gst_all_1.gst-plugins-good # recording + gobject-introspection + + # not declared at build time, but typelib is needed at runtime + libgweather networkmanagerapplet + ]; + propagatedUserEnvPkgs = [ + # Needed to support on-screen keyboard used with touch screen devices + # see https://github.com/NixOS/nixpkgs/issues/25968 + caribou + ]; + + patches = [ + (fetchpatch { + name = "0001-build-Add-missing-dependency-to-run-js-test.patch"; + url = https://bug787864.bugzilla-attachments.gnome.org/attachment.cgi?id=360016; + sha256 = "1dmahd8ysbzh33rxglba0fbq127aw9h14cl2a2bw9913vjxhxijm"; + }) + (substituteAll { + src = ./fix-paths.patch; + inherit libgnomekbd unzip; + }) + ]; + + postPatch = '' + patchShebangs src/data-to-c.pl + + substituteInPlace src/gnome-shell-extension-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python" + substituteInPlace src/gnome-shell-perf-tool.in --replace "@PYTHON@" "${pythonEnv}/bin/python" + ''; + + postInstall = '' + glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + preFixup = '' + gappsWrapperArgs+=( + # Until glib’s xdgmime is patched + # Fixes “Failed to load resource:///org/gnome/shell/theme/noise-texture.png: Unrecognized image file format” + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + mozillaPlugin = "/lib/mozilla/plugins"; + updateScript = gnome3.updateScript { + packageName = "gnome-shell"; + attrPath = "gnome3.gnome-shell"; + }; + }; + + meta = with stdenv.lib; { + description = "Core user interface for the GNOME 3 desktop"; + homepage = https://wiki.gnome.org/Projects/GnomeShell; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; + +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch new file mode 100644 index 00000000000..3207af11088 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-shell/fix-paths.patch @@ -0,0 +1,22 @@ +--- a/js/ui/extensionDownloader.js ++++ b/js/ui/extensionDownloader.js +@@ -86,7 +86,7 @@ + stream.output_stream.write_bytes(contents, null); + stream.close(null); + let [success, pid] = GLib.spawn_async(null, +- ['unzip', '-uod', dir.get_path(), '--', file.get_path()], ++ ['@unzip@/bin/unzip', '-uod', dir.get_path(), '--', file.get_path()], + null, + GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD, + null); +--- a/js/ui/status/keyboard.js ++++ b/js/ui/status/keyboard.js +@@ -1059,7 +1059,7 @@ class InputSourceIndicator extends PanelMenu.Button { + let description = xkbLayout; + if (xkbVariant.length > 0) + description = description + '\t' + xkbVariant; + +- Util.spawn(['gkbd-keyboard-display', '-l', description]); ++ Util.spawn(['@libgnomekbd@/bin/gkbd-keyboard-display', '-l', description]); + } + }); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix new file mode 100644 index 00000000000..12081bbae5b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/default.nix @@ -0,0 +1,64 @@ +{ stdenv, fetchurl, substituteAll, pkgconfig, meson, ninja, gettext, gnome3, wrapGAppsHook, packagekit, ostree +, glib, appstream-glib, libsoup, polkit, isocodes, gspell, libxslt, gobject-introspection, flatpak, fwupd +, gtk3, gsettings-desktop-schemas, gnome-desktop, libxmlb, gnome-online-accounts, hicolor-icon-theme +, json-glib, libsecret, valgrind-light, docbook_xsl, docbook_xml_dtd_42, docbook_xml_dtd_43, gtk-doc, desktop-file-utils }: + +let + + withFwupd = stdenv.isx86_64 || stdenv.isi686; + +in + +stdenv.mkDerivation rec { + pname = "gnome-software"; + version = "3.32.4"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-software/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0g30wdrpypj23npvx85wqh1i4a8bbg00ainz7wmsvry21hcny4d4"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit isocodes; + }) + ]; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext wrapGAppsHook libxslt docbook_xml_dtd_42 docbook_xml_dtd_43 + valgrind-light docbook_xsl gtk-doc desktop-file-utils gobject-introspection + hicolor-icon-theme # for setup-hook + ]; + + buildInputs = [ + gtk3 glib packagekit appstream-glib libsoup + gsettings-desktop-schemas gnome-desktop + gspell json-glib libsecret ostree + polkit flatpak libxmlb gnome-online-accounts + ] ++ stdenv.lib.optionals withFwupd [ + fwupd + ]; + + mesonFlags = [ + "-Dubuntu_reviews=false" + "-Dgudev=false" + ] ++ stdenv.lib.optionals (!withFwupd) [ + "-Dfwupd=false" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-software"; + attrPath = "gnome3.gnome-software"; + }; + }; + + meta = with stdenv.lib; { + description = "Software store that lets you install and update applications and system extensions"; + homepage = https://wiki.gnome.org/Apps/Software; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch new file mode 100644 index 00000000000..6f443a8a43e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-software/fix-paths.patch @@ -0,0 +1,11 @@ +--- a/src/gs-language.c ++++ b/src/gs-language.c +@@ -95,7 +95,7 @@ + g_autoptr(GMarkupParseContext) context = NULL; + + /* find filename */ +- filename = g_build_filename (DATADIR, "xml", "iso-codes", "iso_639.xml", NULL); ++ filename = g_build_filename ("@isocodes@", "share", "xml", "iso-codes", "iso_639.xml", NULL); + if (!g_file_test (filename, G_FILE_TEST_EXISTS)) { + g_free (filename); + filename = g_build_filename ("/usr", "share", "xml", "iso-codes", "iso_639.xml", NULL); diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix new file mode 100644 index 00000000000..a9f8367a548 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-system-monitor/default.nix @@ -0,0 +1,45 @@ +{ stdenv, gettext, fetchurl, pkgconfig, gtkmm3, libxml2, polkit +, bash, gtk3, glib, wrapGAppsHook, meson, ninja, python3 +, gsettings-desktop-schemas, itstool, gnome3, librsvg, gdk-pixbuf, libgtop, systemd }: + +stdenv.mkDerivation rec { + pname = "gnome-system-monitor"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-system-monitor/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1wd43qdgjav6xamq5z5cy8fri5zr01jga3plc9w95gcia0rk3ha8"; + }; + + doCheck = true; + + nativeBuildInputs = [ + pkgconfig gettext itstool wrapGAppsHook meson ninja python3 + polkit # for ITS file + ]; + buildInputs = [ + bash gtk3 glib libxml2 gtkmm3 libgtop gdk-pixbuf gnome3.adwaita-icon-theme librsvg + gsettings-desktop-schemas systemd + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + sed -i '/gtk-update-icon-cache/s/^/#/' meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-system-monitor"; + attrPath = "gnome3.gnome-system-monitor"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/SystemMonitor; + description = "System Monitor shows you what programs are running and how much processor time, memory, and disk space are being used"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix new file mode 100644 index 00000000000..75d4b117e77 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, gnome3, dconf, nautilus +, gtk3, gsettings-desktop-schemas, vte, intltool, which, libuuid, vala +, desktop-file-utils, itstool, wrapGAppsHook, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + pname = "gnome-terminal"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-terminal/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0shhpnagasyp1kxgjczfrivcxbgrrl3y8lzvp1z101m67h4jp6km"; + }; + + buildInputs = [ + gtk3 gsettings-desktop-schemas vte libuuid dconf + # For extension + nautilus + ]; + + nativeBuildInputs = [ + pkgconfig intltool itstool which libxml2 + vala desktop-file-utils wrapGAppsHook + hicolor-icon-theme # for setup-hook + ]; + + # Silly ./configure, it looks for dbus file from gnome-shell in the + # installation tree of the package it is configuring. + postPatch = '' + substituteInPlace configure --replace '$(eval echo $(eval echo $(eval echo ''${dbusinterfacedir})))/org.gnome.ShellSearchProvider2.xml' "${gnome3.gnome-shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml" + substituteInPlace src/Makefile.in --replace '$(dbusinterfacedir)/org.gnome.ShellSearchProvider2.xml' "${gnome3.gnome-shell}/share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml" + ''; + + configureFlags = [ "--disable-migration" ]; # TODO: remove this with 3.30 + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-terminal"; + attrPath = "gnome3.gnome-terminal"; + }; + }; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "The GNOME Terminal Emulator"; + homepage = https://wiki.gnome.org/Apps/Terminal; + platforms = platforms.linux; + license = licenses.gpl3Plus; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix new file mode 100644 index 00000000000..5cd8f249481 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-themes-extra/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2 +, gdk-pixbuf }: + +let + pname = "gnome-themes-extra"; + version = "3.28"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "06aqg9asq2vqi9wr29bs4v8z2bf4manhbhfghf4nvw01y2zs0jvw"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ gtk3 librsvg pango atk gtk2 gdk-pixbuf gnome3.adwaita-icon-theme ]; + + postFixup = '' + gtk-update-icon-cache "$out"/share/icons/HighContrast + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix new file mode 100644 index 00000000000..7915e71a73c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-docs/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, itstool, libxml2, intltool }: + +stdenv.mkDerivation rec { + pname = "gnome-user-docs"; + version = "3.32.3"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-user-docs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0dvsl0ldg8rf7yq0r4dv1pn41s7gjgcqp7agkbflkbmhrl6vbhig"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-user-docs"; attrPath = "gnome3.gnome-user-docs"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gnome3.yelp itstool libxml2 intltool ]; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-help/; + description = "User and system administration help for the GNOME desktop"; + maintainers = gnome3.maintainers; + license = licenses.cc-by-30; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix new file mode 100644 index 00000000000..2a425acb067 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gnome-user-share/default.nix @@ -0,0 +1,74 @@ +{ stdenv +, gettext +, fetchurl +, apacheHttpd +, nautilus +, pkgconfig +, gtk3 +, glib +, libxml2 +, systemd +, wrapGAppsHook +, itstool +, libnotify +, mod_dnssd +, gnome3 +, libcanberra-gtk3 +}: + +stdenv.mkDerivation rec { + pname = "gnome-user-share"; + version = "3.32.0.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "16w6n0cjyzp8vln3zspvab8jhjprpvs88xc9x7bvigg0wry74945"; + }; + + preConfigure = '' + sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' \ + -e 's,''${HTTP_MODULES_PATH},${apacheHttpd}/modules,' \ + -i data/dav_user_2.4.conf + ''; + + configureFlags = [ + "--with-httpd=${apacheHttpd.out}/bin/httpd" + "--with-modules-path=${apacheHttpd.dev}/modules" + "--with-systemduserunitdir=${placeholder "out"}/etc/systemd/user" + "--with-nautilusdir=${placeholder "out"}/lib/nautilus/extensions-3.0" + ]; + + nativeBuildInputs = [ + pkgconfig + gettext + itstool + libxml2 + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + glib + nautilus + libnotify + libcanberra-gtk3 + systemd + ]; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-user-share/3.8; + description = "Service that exports the contents of the Public folder in your home directory on the local network"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/default.nix new file mode 100644 index 00000000000..6c291c1874f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/default.nix @@ -0,0 +1,59 @@ +{ stdenv, intltool, fetchFromGitLab, pkgconfig, gtk3, adwaita-icon-theme +, glib, desktop-file-utils, gtk-doc, autoconf, automake, libtool +, wrapGAppsHook, gnome3, itstool, libxml2, yelp-tools +, docbook_xsl, docbook_xml_dtd_412, gsettings-desktop-schemas +, callPackage, unzip, gobject-introspection }: + +let + unicode-data = callPackage ./unicode-data.nix {}; +in stdenv.mkDerivation rec { + pname = "gucharmap"; + version = "12.0.1"; + + outputs = [ "out" "lib" "dev" "devdoc" ]; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "GNOME"; + repo = pname; + rev = version; + sha256 = "0si3ymyfzc5v7ly0dmcs3qgw2wp8cyasycq5hmcr8frl09lr6gkw"; + }; + + nativeBuildInputs = [ + pkgconfig wrapGAppsHook unzip intltool itstool + autoconf automake libtool gtk-doc docbook_xsl docbook_xml_dtd_412 + yelp-tools libxml2 desktop-file-utils gobject-introspection + ]; + + buildInputs = [ gtk3 glib gsettings-desktop-schemas adwaita-icon-theme ]; + + configureFlags = [ + "--with-unicode-data=${unicode-data}" + "--enable-gtk-doc" + ]; + + doCheck = true; + + postPatch = '' + patchShebangs gucharmap/gen-guch-unicode-tables.pl + ''; + + preConfigure = '' + NOCONFIGURE=1 ./autogen.sh + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME Character Map, based on the Unicode Character Database"; + homepage = https://wiki.gnome.org/Apps/Gucharmap; + license = licenses.gpl3; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix new file mode 100644 index 00000000000..56104aff484 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/gucharmap/unicode-data.nix @@ -0,0 +1,45 @@ +{ fetchurl, stdenv, gnome3 }: +stdenv.mkDerivation rec { + pname = "unicode-data"; + version = "12.0.0"; + srcs = [ + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/Blocks.txt"; + sha256 = "041sk54v6rjzb23b9x7yjdwzdp2wc7gvfz7ybavgg4gbh51wm8x1"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/DerivedAge.txt"; + sha256 = "04j92xp07v273z3pxkbfmi1svmw9kmnjl9nvz9fv0g5ybk9zk7r6"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/NamesList.txt"; + sha256 = "0vsq8gx7hws8mvxy3nlglpwxw7ky57q0fs09d7w9xgb2ylk7fz61"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/Scripts.txt"; + sha256 = "18c63hx4y5yg408a8d0wx72d2hfnlz4l560y1fsf9lpzifxpqcmx"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/UnicodeData.txt"; + sha256 = "07d1kq190kgl92ispfx6zmdkvwvhjga0ishxsngzlw8j3kdkz4ap"; + }) + (fetchurl { + url = "http://www.unicode.org/Public/${version}/ucd/Unihan.zip"; + sha256 = "1kfdhgg2gm52x3s07bijb5cxjy0jxwhd097k5lqhvzpznprm6ibf"; + }) + ]; + phases = "installPhase"; + installPhase = with stdenv.lib; '' + mkdir $out + for f in $srcs;do + cp $f $out/$(stripHash $f) + done + ''; + meta = with stdenv.lib; { + homepage = http://www.unicode.org/ucd/; + description = "Unicode Character Database"; + maintainers = gnome3.maintainers; + license = licenses.mit; + platforms = platforms.all; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix new file mode 100644 index 00000000000..bc0f5683a75 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, glib, dbus, libgcrypt, pkgconfig, intltool, gobject-introspection, gnome3 }: + +let + pname = "libgnome-keyring"; + version = "3.12.0"; +in +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "c4c178fbb05f72acc484d22ddb0568f7532c409b0a13e06513ff54b91e947783"; + }; + + outputs = [ "out" "dev" ]; + + propagatedBuildInputs = [ glib gobject-introspection dbus libgcrypt ]; + nativeBuildInputs = [ pkgconfig intltool ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = { + description = "Framework for managing passwords and other secrets"; + homepage = https://wiki.gnome.org/Projects/GnomeKeyring; + license = with stdenv.lib.licenses; [ gpl2Plus lgpl2Plus ]; + inherit (glib.meta) platforms maintainers; + + longDescription = '' + gnome-keyring is a program that keeps password and other secrets for + users. The library libgnome-keyring is used by applications to integrate + with the gnome-keyring system. + ''; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/0001-Revert-ClutterActor-Preserve-valid-paint-volumes-til.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/0001-Revert-ClutterActor-Preserve-valid-paint-volumes-til.patch new file mode 100644 index 00000000000..0e1c33773b0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/0001-Revert-ClutterActor-Preserve-valid-paint-volumes-til.patch @@ -0,0 +1,147 @@ +From 76477def5c103f10d62e604305802d7f5506afd4 Mon Sep 17 00:00:00 2001 +From: worldofpeace <worldofpeace@protonmail.ch> +Date: Sun, 15 Sep 2019 20:14:16 -0400 +Subject: [PATCH] Revert "ClutterActor: Preserve valid paint volumes till the + next relayout/repaint" + +This causes issues for users of mutter like in gala[0]. + +Upstream report: https://gitlab.gnome.org/GNOME/mutter/issues/536 +[0]: https://github.com/elementary/gala/issues/605 +--- + clutter/clutter/clutter-actor.c | 35 +++++---------------------------- + 1 file changed, 5 insertions(+), 30 deletions(-) + +diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c +index e70892308..8cb60fa07 100644 +--- a/clutter/clutter/clutter-actor.c ++++ b/clutter/clutter/clutter-actor.c +@@ -24,7 +24,7 @@ + + /** + * SECTION:clutter-actor +- * @short_description: The basic element of the scene graph ++ * @short_description: The basic element of the scene graph + * + * The ClutterActor class is the basic element of the scene graph in Clutter, + * and it encapsulates the position, size, and transformations of a node in +@@ -840,7 +840,6 @@ struct _ClutterActorPrivate + guint needs_compute_expand : 1; + guint needs_x_expand : 1; + guint needs_y_expand : 1; +- guint needs_paint_volume_update : 1; + guint had_effects_on_last_paint_volume_update : 1; + }; + +@@ -1511,8 +1510,6 @@ clutter_actor_real_map (ClutterActor *self) + + CLUTTER_ACTOR_SET_FLAGS (self, CLUTTER_ACTOR_MAPPED); + +- self->priv->needs_paint_volume_update = TRUE; +- + stage = _clutter_actor_get_stage_internal (self); + priv->pick_id = _clutter_stage_acquire_pick_id (CLUTTER_STAGE (stage), self); + +@@ -2746,7 +2743,6 @@ clutter_actor_real_queue_relayout (ClutterActor *self) + priv->needs_width_request = TRUE; + priv->needs_height_request = TRUE; + priv->needs_allocation = TRUE; +- priv->needs_paint_volume_update = TRUE; + + /* reset the cached size requests */ + memset (priv->width_requests, 0, +@@ -4742,7 +4738,7 @@ clutter_actor_set_rotation_center_internal (ClutterActor *self, + ClutterRotateAxis axis, + const ClutterVertex *center) + { +- ClutterVertex v = CLUTTER_VERTEX_INIT_ZERO; ++ ClutterVertex v = CLUTTER_VERTEX_INIT_ZERO; + GObject *obj = G_OBJECT (self); + ClutterTransformInfo *info; + +@@ -8531,7 +8527,6 @@ clutter_actor_init (ClutterActor *self) + priv->needs_width_request = TRUE; + priv->needs_height_request = TRUE; + priv->needs_allocation = TRUE; +- priv->needs_paint_volume_update = TRUE; + + priv->cached_width_age = 1; + priv->cached_height_age = 1; +@@ -10098,9 +10093,6 @@ clutter_actor_allocate (ClutterActor *self, + return; + } + +- if (CLUTTER_ACTOR_IS_MAPPED (self)) +- self->priv->needs_paint_volume_update = TRUE; +- + if (!stage_allocation_changed) + { + /* If the actor didn't move but needs_allocation is set, we just +@@ -12992,9 +12984,6 @@ clutter_actor_add_child_internal (ClutterActor *self, + child->priv->needs_height_request = TRUE; + child->priv->needs_allocation = TRUE; + +- if (CLUTTER_ACTOR_IS_MAPPED (child)) +- child->priv->needs_paint_volume_update = TRUE; +- + /* we only queue a relayout here, because any possible + * redraw has already been queued either by show() or + * by our call to queue_redraw() above +@@ -14130,7 +14119,7 @@ clutter_actor_get_anchor_point_gravity (ClutterActor *self) + * + * Since: 0.6 + * +- * Deprecated: 1.12: Use #ClutterActor:pivot-point and ++ * Deprecated: 1.12: Use #ClutterActor:pivot-point and + * clutter_actor_set_translation() instead. + */ + void +@@ -14178,7 +14167,7 @@ clutter_actor_move_anchor_point (ClutterActor *self, + * + * Since: 0.6 + * +- * Deprecated: 1.12: Use #ClutterActor:pivot-point and ++ * Deprecated: 1.12: Use #ClutterActor:pivot-point and + * clutter_actor_set_translation() instead. + */ + void +@@ -14230,7 +14219,7 @@ clutter_actor_move_anchor_point_from_gravity (ClutterActor *self, + * + * Since: 0.6 + * +- * Deprecated: 1.12: Use #ClutterActor:pivot-point and ++ * Deprecated: 1.12: Use #ClutterActor:pivot-point and + * clutter_actor_set_translation() instead. E.g. For %CLUTTER_GRAVITY_CENTER set + * pivot_point to (0.5,0.5) and the translation to (width/2,height/2). + */ +@@ -17567,19 +17556,6 @@ _clutter_actor_get_paint_volume_mutable (ClutterActor *self) + + if (priv->paint_volume_valid) + { +- /* If effects are applied, the actor paint volume +- * needs to be recomputed on each paint, since those +- * paint volumes could change over the duration of the +- * effect. +- * +- * We also need to update the paint volume if we went +- * from having effects to not having effects on the last +- * paint volume update. */ +- if (!priv->needs_paint_volume_update && +- priv->current_effect == NULL && +- !has_paint_volume_override_effects && +- !priv->had_effects_on_last_paint_volume_update) +- return &priv->paint_volume; + clutter_paint_volume_free (&priv->paint_volume); + } + +@@ -17588,7 +17564,6 @@ _clutter_actor_get_paint_volume_mutable (ClutterActor *self) + if (_clutter_actor_get_paint_volume_real (self, &priv->paint_volume)) + { + priv->paint_volume_valid = TRUE; +- priv->needs_paint_volume_update = FALSE; + return &priv->paint_volume; + } + else +-- +2.22.1 + diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.28.nix b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.28.nix new file mode 100644 index 00000000000..cc00fc5ece4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/3.28.nix @@ -0,0 +1,95 @@ +{ fetchFromGitLab, stdenv, substituteAll, pkgconfig, gnome3, intltool, gobject-introspection, upower, cairo +, glib, gtk3, pango, cogl, clutter, libstartup_notification, zenity, libcanberra-gtk3, fetchpatch +, gsettings-desktop-schemas, gnome-desktop, wrapGAppsHook +, libtool, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libinput +, geocode-glib, libgudev, libwacom, xwayland, autoreconfHook }: + +stdenv.mkDerivation rec { + pname = "mutter"; + version = "3.28.4"; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "GNOME"; + repo = pname; + rev = "74e3126b77eb5f27c0ae3f53b0aff2d2eebc15af"; # patches of tip from gnome-3-28 branch + sha256 = "0gw1n1w3i040w5mv30kkg7g8a59ymjlc5yaklip0ngg8xv76g0zi"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths-328.patch; + inherit zenity; + }) + + # https://bugzilla.redhat.com/show_bug.cgi?id=1700337 + # https://gitlab.gnome.org/GNOME/mutter/merge_requests/133 + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/mutter328/raw/fff28bebda02111b4c534952465ff967ba7efced/f/0070-clutter-Add-API-to-retrieve-the-physical-size-of-abs.patch"; + sha256 = "11xg0clrqwvssy2r6hv4iya8g87z2v5f47fimd2b4hha6ki3g1is"; + }) + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/mutter328/raw/fff28bebda02111b4c534952465ff967ba7efced/f/0071-backends-Add-MetaInputMapper.patch"; + sha256 = "1kcp42hg8sy1q21w5586gdgmi95nf36829kkfswbah61h6bkb518"; + }) + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/mutter328/raw/fff28bebda02111b4c534952465ff967ba7efced/f/0072-backends-Delegate-on-MetaInputMapper-for-unmapped-di.patch"; + sha256 = "0zf4yxhq5s3dnzmn15mx4yb978g27ij4vmq055my9p7xgh6h9ga8"; + }) + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/mutter328/raw/fff28bebda02111b4c534952465ff967ba7efced/f/0073-backends-Add-MetaInputMapper-method-to-lookup-device.patch"; + sha256 = "0dnb2hqx5in6x9ar6wnr1hy3bg2wdcl3wbdx4jn66c7bi7s1k5zd"; + }) + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/mutter328/raw/fff28bebda02111b4c534952465ff967ba7efced/f/0074-backends-Turn-builtin-touchscreen-on-off-together-wi.patch"; + sha256 = "17fvs7j5ws4sz6fkch93gjlik0nm4z426w4n348gyw5llh0r76pg"; + }) + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/mutter328/raw/fff28bebda02111b4c534952465ff967ba7efced/f/0075-backends-Update-to-new-output-setting-for-tablets-to.patch"; + sha256 = "141p3an83s042f67fw2fqmr79i5g634ndrbpd8cs47fd4wwiwpj5"; + }) + # https://gitlab.gnome.org/GNOME/mutter/merge_requests/670 + # Needed for gala redorder workspace + (fetchpatch { + url = "https://github.com/elementary/os-patches/commit/d636a44885c5be662997f8e19f7dcd26670b3219.patch"; + sha256 = "12pbxk6f39a09jxjam5a5hxl4whp3cifzpck2m7fpp0n98nc63qh"; + }) + # See patch commit message + ./0001-Revert-ClutterActor-Preserve-valid-paint-volumes-til.patch + ]; + + configureFlags = [ + "--with-x" + "--enable-shape" + "--enable-sm" + "--enable-startup-notification" + "--enable-xsync" + "--enable-verbose-mode" + "--with-libcanberra" + "--with-xwayland-path=${xwayland}/bin/Xwayland" + "--enable-compile-warnings=maximum" + ]; + + propagatedBuildInputs = [ + # required for pkgconfig to detect mutter-clutter + libXtst + ]; + + nativeBuildInputs = [ autoreconfHook pkgconfig intltool libtool wrapGAppsHook ]; + + buildInputs = [ + glib gobject-introspection gtk3 gsettings-desktop-schemas upower + gnome-desktop cairo pango cogl clutter zenity libstartup_notification + geocode-glib libinput libgudev libwacom + libcanberra-gtk3 zenity xkeyboard_config libxkbfile + libxkbcommon + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix new file mode 100644 index 00000000000..eab0b131ea9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/default.nix @@ -0,0 +1,89 @@ +{ fetchurl, fetchpatch, substituteAll, stdenv, pkgconfig, gnome3, gettext, gobject-introspection, upower, cairo +, pango, cogl, clutter, libstartup_notification, zenity, libcanberra-gtk3 +, ninja, xkeyboard_config, libxkbfile, libxkbcommon, libXtst, libinput +, gsettings-desktop-schemas, glib, gtk3, gnome-desktop +, geocode-glib, pipewire, libgudev, libwacom, xwayland, meson +, gnome-settings-daemon +, xorgserver +, python3 +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "mutter"; + version = "3.32.2"; + + outputs = [ "out" "dev" "man" ]; + + src = fetchurl { + url = "mirror://gnome/sources/mutter/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1h577i2ap7dpfy1jg101jvc6nzccc0csgvd55ahydlr8f94frcva"; + }; + + mesonFlags = [ + "-Dxwayland-path=${xwayland}/bin/Xwayland" + "-Dinstalled_tests=false" # TODO: enable these + ]; + + propagatedBuildInputs = [ + # required for pkgconfig to detect mutter-clutter + libXtst + ]; + + nativeBuildInputs = [ + meson + pkgconfig + gettext + ninja + python3 + # for cvt command + xorgserver + wrapGAppsHook + ]; + + buildInputs = [ + glib gobject-introspection gtk3 gsettings-desktop-schemas upower + gnome-desktop cairo pango cogl clutter zenity libstartup_notification + geocode-glib libinput libgudev libwacom + libcanberra-gtk3 zenity xkeyboard_config libxkbfile + libxkbcommon pipewire xwayland + gnome-settings-daemon + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit zenity; + }) + # Fix a segmentation fault in dri_flush_front_buffer() upon + # suspend/resume. This change should be removed when Mutter + # is updated to 3.34. + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/mutter/commit/8307c0f7ab60760de53f764e6636893733543be8.diff"; + sha256 = "1hzfva71xdqvvnx5smjsrjlgyrmc7dj94mpylkak0gwda5si0h2n"; + }) + ]; + + postPatch = '' + patchShebangs src/backends/native/gen-default-modes.py + ''; + + postInstall = '' + ${glib.dev}/bin/glib-compile-schemas "$out/share/glib-2.0/schemas" + ''; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "mutter"; + attrPath = "gnome3.mutter"; + }; + }; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/fix-paths-328.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/fix-paths-328.patch new file mode 100644 index 00000000000..6c40624a55d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/fix-paths-328.patch @@ -0,0 +1,13 @@ +diff --git a/src/core/util.c b/src/core/util.c +index 5b8de18c7..546352a95 100644 +--- a/src/core/util.c ++++ b/src/core/util.c +@@ -635,7 +635,7 @@ meta_show_dialog (const char *type, + + args = g_ptr_array_new (); + +- append_argument (args, "zenity"); ++ append_argument (args, "@zenity@/bin/zenity"); + append_argument (args, type); + + if (display) diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/mutter/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/fix-paths.patch new file mode 100644 index 00000000000..6ac0a431f61 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/mutter/fix-paths.patch @@ -0,0 +1,13 @@ +diff --git a/src/core/util.c b/src/core/util.c +index 57b73747d..f424cc81c 100644 +--- a/src/core/util.c ++++ b/src/core/util.c +@@ -636,7 +636,7 @@ meta_show_dialog (const char *type, + + args = g_ptr_array_new (); + +- append_argument (args, "zenity"); ++ append_argument (args, "@zenity@/bin/zenity"); + append_argument (args, type); + + if (display) diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/bubblewrap-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/bubblewrap-paths.patch new file mode 100644 index 00000000000..37358c8432c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/bubblewrap-paths.patch @@ -0,0 +1,15 @@ +--- a/src/gnome-desktop/gnome-desktop-thumbnail-script.c ++++ a/src/gnome-desktop/gnome-desktop-thumbnail-script.c +@@ -536,9 +536,9 @@ add_bwrap (GPtrArray *array, + g_return_val_if_fail (script->s_infile != NULL, FALSE); + + add_args (array, +- "bwrap", +- "--ro-bind", "/usr", "/usr", +- "--ro-bind", "/etc/ld.so.cache", "/etc/ld.so.cache", ++ "@bubblewrap_bin@", ++ "--ro-bind", "@storeDir@", "@storeDir@", ++ "--ro-bind", "/run/current-system", "/run/current-system", + NULL); + + /* These directories might be symlinks into /usr/... */ diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix new file mode 100644 index 00000000000..14551fb7d0c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/default.nix @@ -0,0 +1,70 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, libxml2 +, desktop-file-utils, python3, wrapGAppsHook , gtk3, gnome3, gnome-autoar +, glib-networking, shared-mime-info, libnotify, libexif, libseccomp , exempi +, librsvg, tracker, tracker-miners, gexiv2, libselinux, gdk-pixbuf +, substituteAll, bubblewrap, gst_all_1, gsettings-desktop-schemas +}: + +let + pname = "nautilus"; + version = "3.32.3"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1x9crzbj6rrrf8w5dkcx0c14j40byr4ijpzkwd5dcrbfvvdy1r01"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig libxml2 gettext python3 wrapGAppsHook + desktop-file-utils + ]; + + buildInputs = [ + glib-networking shared-mime-info libexif gtk3 exempi libnotify libselinux + tracker tracker-miners gexiv2 libseccomp bubblewrap gst_all_1.gst-plugins-base + gnome3.adwaita-icon-theme gsettings-desktop-schemas + ]; + + propagatedBuildInputs = [ gnome-autoar ]; + + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share" + --prefix XDG_DATA_DIRS : "${librsvg}/share" + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + postPatch = '' + patchShebangs build-aux/meson/postinstall.py + ''; + + patches = [ + ./extension_dir.patch + # 3.30 now generates it's own thummbnails, + # and no longer depends on `gnome-desktop` + (substituteAll { + src = ./bubblewrap-paths.patch; + bubblewrap_bin = "${bubblewrap}/bin/bwrap"; + inherit (builtins) storeDir; + }) + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "The file manager for GNOME"; + homepage = https://wiki.gnome.org/Apps/Files; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/extension_dir.patch b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/extension_dir.patch new file mode 100644 index 00000000000..e1313999675 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/nautilus/extension_dir.patch @@ -0,0 +1,24 @@ +diff --git a/src/nautilus-module.c b/src/nautilus-module.c +index 6273a76..4adcc8a 100644 +--- a/src/nautilus-module.c ++++ b/src/nautilus-module.c +@@ -242,11 +242,17 @@ void + nautilus_module_setup (void) + { + static gboolean initialized = FALSE; ++ const gchar* extensiondir = NULL; + + if (!initialized) + { + initialized = TRUE; + +- load_module_dir (NAUTILUS_EXTENSIONDIR); ++ extensiondir = g_getenv ("NAUTILUS_EXTENSION_DIR"); ++ if (extensiondir == NULL) { ++ extensiondir = NAUTILUS_EXTENSIONDIR; ++ } ++ ++ load_module_dir (extensiondir); + + eel_debug_call_at_shutdown (free_module_objects); + } diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch new file mode 100644 index 00000000000..4259f93eb24 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/add-option-for-installation-sysconfdir.patch @@ -0,0 +1,38 @@ +diff --git a/meson.build b/meson.build +index 209d4187..58580980 100644 +--- a/meson.build ++++ b/meson.build +@@ -20,7 +20,11 @@ if not get_option('uninstalled') + rygel_datadir = join_paths(get_option('prefix'), get_option('datadir'), 'rygel') + rygel_libexecdir = join_paths(get_option('prefix'), get_option('libexecdir'), + 'rygel') +- rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir')) ++ if get_option('sysconfdir_install') != '' ++ rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir_install')) ++ else ++ rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir')) ++ endif + rygel_plugindir = join_paths(rygel_libdir, 'rygel-2.6', 'plugins') + rygel_enginedir = join_paths(rygel_libdir, 'rygel-2.6', 'engines') + rygel_presetdir = join_paths(rygel_datadir, 'rygel', 'presets') +@@ -55,7 +59,7 @@ conf.set_quoted('DATA_DIR', rygel_datadir) + conf.set_quoted('PLUGIN_DIR', rygel_plugindir) + conf.set_quoted('BIG_ICON_DIR', rygel_bigicondir) + conf.set_quoted('SMALL_ICON_DIR', rygel_smallicondir) +-conf.set_quoted('SYS_CONFIG_DIR', rygel_sysconfdir) ++conf.set_quoted('SYS_CONFIG_DIR', get_option('sysconfdir')) + conf.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir'))) + conf.set_quoted('MX_EXTRACT_PATH', join_paths(rygel_libexecdir, 'mx-extract')) + conf.set_quoted('DESKTOP_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'applications')) +diff --git a/meson_options.txt b/meson_options.txt +index f09cac58..ff11c548 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,6 +1,7 @@ + option('uninstalled', type: 'boolean', value: 'false', description: 'Run Rygel from build directory only') + option('api-docs', type: 'boolean', value: 'false', description: 'Build the API documentation') + option('systemd-user-units-dir', type : 'string', value : 'auto', description : 'Where to install the systemd user unit (use special values "auto" or "none", or pass a path') ++option('sysconfdir_install', type: 'string', value: '', description: 'sysconfdir to use during installation') + option('plugins', type : 'array', choices : ['external', 'gst-launch', 'lms', 'media-export', 'mpris', 'playbin', 'ruih', 'tracker']) + option('engines', type : 'array', choices : ['simple', 'gstreamer']) + option('examples', type : 'boolean', value : 'true') diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix new file mode 100644 index 00000000000..c38e677a421 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/rygel/default.nix @@ -0,0 +1,106 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, vala +, gettext +, libxml2 +, gobject-introspection +, wrapGAppsHook +, python3 +, glib +, gssdp +, gupnp +, gupnp-av +, gupnp-dlna +, gst_all_1 +, libgee +, libsoup +, gtk3 +, libmediaart +, sqlite +, systemd +, tracker +, shared-mime-info +, gnome3 +}: + +stdenv.mkDerivation rec { + pname = "rygel"; + version = "0.38.1"; + + # TODO: split out lib + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1w8bi2rw91qyfny1zxhy32k4qn62hdjl2m38f75cp7wv6494d7w0"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + vala + gettext + libxml2 + gobject-introspection + wrapGAppsHook + python3 + ]; + + buildInputs = [ + glib + gssdp + gupnp + gupnp-av + gupnp-dlna + libgee + libsoup + gtk3 + libmediaart + sqlite + systemd + tracker + shared-mime-info + ] ++ (with gst_all_1; [ + gstreamer + gst-plugins-base + gst-plugins-good + gst-plugins-bad + gst-plugins-ugly + ]); + + mesonFlags = [ + "-Dsystemd-user-units-dir=${placeholder "out"}/lib/systemd/user" + "-Dapi-docs=false" + "--sysconfdir=/etc" + "-Dsysconfdir_install=${placeholder "out"}/etc" + ]; + + doCheck = true; + + patches = [ + ./add-option-for-installation-sysconfdir.patch + ]; + + postPatch = '' + patchShebangs data/xml/process-xml.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "A home media solution (UPnP AV MediaServer) that allows you to easily share audio, video and pictures to other devices"; + homepage = https://wiki.gnome.org/Projects/Rygel; + license = licenses.lgpl21Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix new file mode 100644 index 00000000000..de56b14d46f --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/simple-scan/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, itstool, python3, wrapGAppsHook +, cairo, gdk-pixbuf, colord, glib, gtk3, gusb, packagekit, libwebp +, libxml2, sane-backends, vala, gnome3, gobject-introspection }: + +stdenv.mkDerivation rec { + pname = "simple-scan"; + version = "3.32.2.1"; + + src = fetchurl { + url = "mirror://gnome/sources/simple-scan/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0xqb642bsd2hddsm4bd199vyq8jcipdlxm0br3mjlc5vjcxgkxyp"; + }; + + buildInputs = [ + cairo gdk-pixbuf colord glib gnome3.adwaita-icon-theme gusb + gtk3 libwebp packagekit sane-backends vala + ]; + nativeBuildInputs = [ + meson ninja gettext itstool pkgconfig python3 wrapGAppsHook libxml2 + # For setup hook + gobject-introspection + ]; + + postPatch = '' + patchShebangs data/meson_compile_gschema.py + ''; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "simple-scan"; + }; + }; + + meta = with stdenv.lib; { + description = "Simple scanning utility"; + longDescription = '' + A really easy way to scan both documents and photos. You can crop out the + bad parts of a photo and rotate it if it is the wrong way round. You can + print your scans, export them to pdf, or save them in a range of image + formats. Basically a frontend for SANE - which is the same backend as + XSANE uses. This means that all existing scanners will work and the + interface is well tested. + ''; + homepage = https://gitlab.gnome.org/GNOME/simple-scan; + license = licenses.gpl3Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix new file mode 100644 index 00000000000..86675f21f06 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/sushi/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, meson, gettext, gobject-introspection, glib +, clutter-gtk, clutter-gst, gnome3, gtksourceview, gjs +, webkitgtk, libmusicbrainz5, icu, wrapGAppsHook, gst_all_1 +, gdk-pixbuf, librsvg, gtk3, harfbuzz, ninja }: + +stdenv.mkDerivation rec { + pname = "sushi"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/sushi/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "02idvqjk76lii9xyg3b1yz4rw721709bdm5j8ikjym6amcghl0aj"; + }; + + nativeBuildInputs = [ + pkgconfig meson ninja gettext gobject-introspection wrapGAppsHook + ]; + buildInputs = [ + glib gtk3 gnome3.evince icu harfbuzz + clutter-gtk clutter-gst gjs gtksourceview gdk-pixbuf + librsvg libmusicbrainz5 webkitgtk + gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "sushi"; + attrPath = "gnome3.sushi"; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://en.wikipedia.org/wiki/Sushi_(software)"; + description = "A quick previewer for Nautilus"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix new file mode 100644 index 00000000000..a5388f2eae1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/totem/default.nix @@ -0,0 +1,65 @@ +{ stdenv, fetchurl, meson, ninja, gettext, gst_all_1 +, clutter-gtk, clutter-gst, python3Packages, shared-mime-info +, pkgconfig, gtk3, glib, gobject-introspection, totem-pl-parser +, wrapGAppsHook, itstool, libxml2, vala, gnome3, grilo, grilo-plugins +, libpeas, adwaita-icon-theme, gnome-desktop, gsettings-desktop-schemas +, gdk-pixbuf, tracker, nautilus, xvfb_run }: + +stdenv.mkDerivation rec { + pname = "totem"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/totem/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0yra8apc7smpwf7d1k8crhrm8d4wix24ds6i9yxbch1v11jnhr3v"; + }; + + doCheck = true; + + nativeBuildInputs = [ meson ninja vala pkgconfig gettext python3Packages.python itstool gobject-introspection wrapGAppsHook ]; + buildInputs = [ + gtk3 glib grilo clutter-gtk clutter-gst totem-pl-parser grilo-plugins + gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-ugly gst_all_1.gst-libav libpeas shared-mime-info + gdk-pixbuf libxml2 adwaita-icon-theme gnome-desktop + gsettings-desktop-schemas tracker nautilus + python3Packages.pygobject3 python3Packages.dbus-python # for plug-ins + ]; + + postPatch = '' + chmod +x meson_compile_python.py meson_post_install.py # patchShebangs requires executable file + patchShebangs . + ''; + + mesonFlags = [ + "-Dwith-nautilusdir=${placeholder "out"}/lib/nautilus/extensions-3.0" + # https://bugs.launchpad.net/ubuntu/+source/totem/+bug/1712021 + # https://bugzilla.gnome.org/show_bug.cgi?id=784236 + # https://github.com/mesonbuild/meson/issues/1994 + "-Denable-vala=no" + ]; + + checkInputs = [ xvfb_run ]; + + checkPhase = '' + xvfb-run -s '-screen 0 800x600x24' \ + ninja test + ''; + + wrapPrefixVariables = [ "PYTHONPATH" ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "totem"; + attrPath = "gnome3.totem"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Videos; + description = "Movie player for the GNOME desktop based on GStreamer"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/vino/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/vino/default.nix new file mode 100644 index 00000000000..e18f4de68d6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/vino/default.nix @@ -0,0 +1,98 @@ +{ stdenv +, fetchFromGitLab +, wrapGAppsHook +, pkgconfig +, gnome3 +, gtk3 +, glib +, intltool +, libXtst +, libnotify +, libsoup +, libsecret +, gnutls +, libgcrypt +, avahi +, zlib +, libjpeg +, libXdamage +, libXfixes +, libXext +, networkmanager +, gnome-common +, libtool +, automake +, autoconf +, telepathySupport ? false +, dbus-glib ? null +, telepathy-glib ? null +}: + +stdenv.mkDerivation { + pname = "vino"; + version = "unstable-2019-07-08"; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "GNOME"; + repo = "vino"; + rev = "aed81a798558c8127b765cd4fb4dc726d10f1e21"; + sha256 = "16r4cj5nsygmd9v97nq6d1yhynzak9hdnaprcdbmwfhh0c9w8jv3"; + }; + + doCheck = true; + + nativeBuildInputs = [ + autoconf + automake + gnome-common + intltool + libtool + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + avahi + glib + gnome3.adwaita-icon-theme + gnutls + gtk3 + libXdamage + libXext + libXfixes + libXtst + libgcrypt + libjpeg + libnotify + libsecret + libsoup + networkmanager + zlib + ] + ++ stdenv.lib.optionals telepathySupport [ dbus-glib telepathy-glib ] + ; + + preConfigure = '' + NOCONFIGURE=1 ./autogen.sh + ''; + + postInstall = stdenv.lib.optionalString (!telepathySupport) '' + rm -f $out/share/dbus-1/services/org.freedesktop.Telepathy.Client.Vino.service + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "vino"; + attrPath = "gnome3.vino"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/Vino; + description = "GNOME desktop sharing server"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp-tools/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-tools/default.nix new file mode 100644 index 00000000000..43863bf7f85 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-tools/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, libxml2, libxslt, itstool, gnome3, pkgconfig }: + +stdenv.mkDerivation rec { + pname = "yelp-tools"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/yelp-tools/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1yg8f5g5wadhmy4yfd9yjhvd8vll4gq4l86ibp0b42qbxnsmcf0q"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "yelp-tools"; attrPath = "gnome3.yelp-tools"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libxml2 libxslt itstool gnome3.yelp-xsl ]; + + doCheck = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Yelp/Tools; + description = "Small programs that help you create, edit, manage, and publish your Mallard or DocBook documentation"; + maintainers = with maintainers; [ domenkozar ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix new file mode 100644 index 00000000000..fc5b0268df7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp-xsl/default.nix @@ -0,0 +1,29 @@ +{ stdenv, intltool, fetchurl, pkgconfig +, itstool, libxml2, libxslt, gnome3 }: + +stdenv.mkDerivation rec { + pname = "yelp-xsl"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/yelp-xsl/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "013z2ixx9kfrs6hq79qpil093xfbc12y1p0mvsh6lpala30iphya"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "yelp-xsl"; attrPath = "gnome3.yelp-xsl"; }; + }; + + doCheck = true; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ intltool itstool libxml2 libxslt ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Yelp; + description = "Yelp's universal stylesheets for Mallard and DocBook"; + maintainers = gnome3.maintainers; + license = [licenses.gpl2 licenses.lgpl2]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix new file mode 100644 index 00000000000..7e326dd1657 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/yelp/default.nix @@ -0,0 +1,36 @@ +{ stdenv, gettext, fetchurl, webkitgtk, pkgconfig, gtk3, glib +, gnome3, sqlite +, itstool, libxml2, libxslt, gst_all_1 +, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "yelp"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/yelp/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0yrl96icmmrxvg7sxl519gzg9qb368cmzgrr9ddh181ignkxzx7f"; + }; + + nativeBuildInputs = [ pkgconfig gettext itstool wrapGAppsHook ]; + buildInputs = [ + gtk3 glib webkitgtk sqlite + libxml2 libxslt gnome3.yelp-xsl + gnome3.adwaita-icon-theme + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "yelp"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Yelp; + description = "The help viewer in Gnome"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/core/zenity/default.nix b/nixpkgs/pkgs/desktops/gnome-3/core/zenity/default.nix new file mode 100644 index 00000000000..5023ffce6b9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/core/zenity/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, libxslt, gnome3, gtk3 +, gnome-doc-utils, intltool, libX11, which, itstool, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "zenity"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/zenity/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "15fdh8xfdhnwcynyh4byx3mrjxbyprqnwxzi7qn3g5wwaqryg1p7"; + }; + + preBuild = '' + mkdir -p $out/include + ''; + + buildInputs = [ gtk3 libxml2 libxslt libX11 itstool ]; + + nativeBuildInputs = [ pkgconfig intltool gnome-doc-utils which wrapGAppsHook ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "zenity"; + attrPath = "gnome3.zenity"; + }; + }; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/default.nix b/nixpkgs/pkgs/desktops/gnome-3/default.nix new file mode 100644 index 00000000000..370733798af --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/default.nix @@ -0,0 +1,359 @@ +{ config, pkgs, lib }: + +lib.makeScope pkgs.newScope (self: with self; { + updateScript = callPackage ./update.nix { }; + + /* Remove packages of packagesToRemove from packages, based on their names + + Type: + removePackagesByName :: [package] -> [package] -> [package] + + Example: + removePackagesByName [ nautilus file-roller ] [ file-roller totem ] + => [ nautilus ] + */ + removePackagesByName = packages: packagesToRemove: + let + pkgName = drv: (builtins.parseDrvName drv.name).name; + namesToRemove = map pkgName packagesToRemove; + in + lib.filter (x: !(builtins.elem (pkgName x) namesToRemove)) packages; + + maintainers = with pkgs.lib.maintainers; [ lethalman jtojnar hedning worldofpeace ]; + + libsoup = pkgs.libsoup.override { gnomeSupport = true; }; + libchamplain = pkgs.libchamplain.override { libsoup = libsoup; }; + gnome3 = self // { recurseForDerivations = false; }; + vala = pkgs.vala_0_44; + gegl_0_4 = pkgs.gegl_0_4.override { gtk = pkgs.gtk3; }; + +# ISO installer +# installerIso = callPackage ./installer.nix {}; + +#### Core (http://ftp.acc.umu.se/pub/GNOME/core/) + + adwaita-icon-theme = callPackage ./core/adwaita-icon-theme { }; + + baobab = callPackage ./core/baobab { }; + + caribou = callPackage ./core/caribou { }; + + dconf = callPackage ./core/dconf { }; + dconf-editor = callPackage ./core/dconf-editor { }; + + empathy = callPackage ./core/empathy { }; + + epiphany = callPackage ./core/epiphany { }; + + evince = callPackage ./core/evince { }; # ToDo: dbus would prevent compilation, enable tests + + evolution-data-server = callPackage ./core/evolution-data-server { }; + + gdm = callPackage ./core/gdm { }; + + gjs = callPackage ./core/gjs { }; + + gnome-backgrounds = callPackage ./core/gnome-backgrounds { }; + + gnome-bluetooth = callPackage ./core/gnome-bluetooth { }; + + gnome-color-manager = callPackage ./core/gnome-color-manager { }; + + gnome-contacts = callPackage ./core/gnome-contacts { }; + + gnome-control-center = callPackage ./core/gnome-control-center { }; + + gnome-calculator = callPackage ./core/gnome-calculator { }; + + gnome-common = callPackage ./core/gnome-common { }; + + gnome-desktop = callPackage ./core/gnome-desktop { }; + + gnome-dictionary = callPackage ./core/gnome-dictionary { }; + + gnome-disk-utility = callPackage ./core/gnome-disk-utility { }; + + gnome-font-viewer = callPackage ./core/gnome-font-viewer { }; + + gnome-keyring = callPackage ./core/gnome-keyring { }; + + libgnome-keyring = callPackage ./core/libgnome-keyring { }; + + gnome-online-miners = callPackage ./core/gnome-online-miners { }; + + gnome-remote-desktop = callPackage ./core/gnome-remote-desktop { }; + + gnome-session = callPackage ./core/gnome-session { }; + + gnome-shell = callPackage ./core/gnome-shell { }; + + gnome-shell-extensions = callPackage ./core/gnome-shell-extensions { }; + + gnome-screenshot = callPackage ./core/gnome-screenshot { }; + + gnome-settings-daemon = callPackage ./core/gnome-settings-daemon { }; + + gnome-software = callPackage ./core/gnome-software { }; + + gnome-system-monitor = callPackage ./core/gnome-system-monitor { }; + + gnome-terminal = callPackage ./core/gnome-terminal { }; + + gnome-themes-extra = callPackage ./core/gnome-themes-extra { }; + + gnome-user-docs = callPackage ./core/gnome-user-docs { }; + + gnome-user-share = callPackage ./core/gnome-user-share { }; + + gucharmap = callPackage ./core/gucharmap { }; + + gvfs = pkgs.gvfs.override { gnomeSupport = true; }; + + eog = callPackage ./core/eog { }; + + mutter = callPackage ./core/mutter { }; + + # Needed for elementary's gala and greeter until they get around to adapting to all the API breaking changes in libmutter-3 + # A more detailed explaination can be seen here https://decathorpe.com/2018/09/04/call-for-help-pantheon-on-fedora-29.html + # See Also: https://github.com/elementary/gala/issues/303 + mutter328 = callPackage ./core/mutter/3.28.nix { }; + + nautilus = callPackage ./core/nautilus { }; + + networkmanager-openvpn = pkgs.networkmanager-openvpn.override { + withGnome = true; + }; + + networkmanager-vpnc = pkgs.networkmanager-vpnc.override { + withGnome = true; + }; + + networkmanager-openconnect = pkgs.networkmanager-openconnect.override { + withGnome = true; + }; + + networkmanager-fortisslvpn = pkgs.networkmanager-fortisslvpn.override { + withGnome = true; + }; + + networkmanager-l2tp = pkgs.networkmanager-l2tp.override { + withGnome = true; + }; + + networkmanager-iodine = pkgs.networkmanager-iodine.override { + withGnome = true; + }; + + networkmanagerapplet = pkgs.networkmanagerapplet.override { + withGnome = true; + }; + + rygel = callPackage ./core/rygel { }; + + simple-scan = callPackage ./core/simple-scan { }; + + sushi = callPackage ./core/sushi { }; + + totem = callPackage ./core/totem { }; + + vino = callPackage ./core/vino { }; + + yelp = callPackage ./core/yelp { }; + + yelp-xsl = callPackage ./core/yelp-xsl { }; + + yelp-tools = callPackage ./core/yelp-tools { }; + + zenity = callPackage ./core/zenity { }; + + +#### Apps (http://ftp.acc.umu.se/pub/GNOME/apps/) + + accerciser = callPackage ./apps/accerciser { }; + + cheese = callPackage ./apps/cheese { }; + + evolution = callPackage ./apps/evolution { }; + + file-roller = callPackage ./apps/file-roller { }; + + gedit = callPackage ./apps/gedit { }; + + ghex = callPackage ./apps/ghex { }; + + glade = callPackage ./apps/glade { }; + + gnome-books = callPackage ./apps/gnome-books { }; + + gnome-boxes = callPackage ./apps/gnome-boxes { }; + + gnome-calendar = callPackage ./apps/gnome-calendar { }; + + gnome-characters = callPackage ./apps/gnome-characters { }; + + gnome-clocks = callPackage ./apps/gnome-clocks { }; + + gnome-documents = callPackage ./apps/gnome-documents { }; + + gnome-getting-started-docs = callPackage ./apps/gnome-getting-started-docs { }; + + gnome-logs = callPackage ./apps/gnome-logs { }; + + gnome-maps = callPackage ./apps/gnome-maps { }; + + gnome-music = callPackage ./apps/gnome-music { }; + + gnome-nettool = callPackage ./apps/gnome-nettool { }; + + gnome-notes = callPackage ./apps/gnome-notes { }; + + gnome-power-manager = callPackage ./apps/gnome-power-manager { }; + + gnome-sound-recorder = callPackage ./apps/gnome-sound-recorder { }; + + gnome-todo = callPackage ./apps/gnome-todo {}; + + gnome-weather = callPackage ./apps/gnome-weather { }; + + nautilus-sendto = callPackage ./apps/nautilus-sendto { }; + + polari = callPackage ./apps/polari { }; + + seahorse = callPackage ./apps/seahorse { }; + + vinagre = callPackage ./apps/vinagre { }; + +#### Dev http://ftp.gnome.org/pub/GNOME/devtools/ + + anjuta = callPackage ./devtools/anjuta { }; + + devhelp = callPackage ./devtools/devhelp { }; + + gnome-devel-docs = callPackage ./devtools/gnome-devel-docs { }; + +#### Games + + aisleriot = callPackage ./games/aisleriot { }; + + atomix = callPackage ./games/atomix { }; + + five-or-more = callPackage ./games/five-or-more { }; + + four-in-a-row = callPackage ./games/four-in-a-row { }; + + gnome-chess = callPackage ./games/gnome-chess { }; + + gnome-klotski = callPackage ./games/gnome-klotski { }; + + gnome-mahjongg = callPackage ./games/gnome-mahjongg { }; + + gnome-mines = callPackage ./games/gnome-mines { }; + + gnome-nibbles = callPackage ./games/gnome-nibbles { }; + + gnome-robots = callPackage ./games/gnome-robots { }; + + gnome-sudoku = callPackage ./games/gnome-sudoku { }; + + gnome-taquin = callPackage ./games/gnome-taquin { }; + + gnome-tetravex = callPackage ./games/gnome-tetravex { }; + + hitori = callPackage ./games/hitori { }; + + iagno = callPackage ./games/iagno { }; + + lightsoff = callPackage ./games/lightsoff { }; + + swell-foop = callPackage ./games/swell-foop { }; + + tali = callPackage ./games/tali { }; + + quadrapassel = callPackage ./games/quadrapassel { }; + +#### Misc -- other packages on http://ftp.gnome.org/pub/GNOME/sources/ + + geary = callPackage ./misc/geary { }; + + gitg = callPackage ./misc/gitg { }; + + libgnome-games-support = callPackage ./misc/libgnome-games-support { }; + + gnome-applets = callPackage ./misc/gnome-applets { }; + + gnome-flashback = callPackage ./misc/gnome-flashback { }; + + gnome-panel = callPackage ./misc/gnome-panel { }; + + gnome-screensaver = callPackage ./misc/gnome-screensaver { }; + + gnome-tweaks = callPackage ./misc/gnome-tweaks { }; + + gpaste = callPackage ./misc/gpaste { }; + + metacity = callPackage ./misc/metacity { }; + + nautilus-python = callPackage ./misc/nautilus-python { }; + + gtkhtml = callPackage ./misc/gtkhtml { enchant = pkgs.enchant1; }; + + pomodoro = callPackage ./misc/pomodoro { }; + + gnome-autoar = callPackage ./misc/gnome-autoar { }; + + gnome-packagekit = callPackage ./misc/gnome-packagekit { }; +} // lib.optionalAttrs (config.allowAliases or true) { +#### Legacy aliases + + bijiben = gnome-notes; # added 2018-09-26 + evolution_data_server = evolution-data-server; # added 2018-02-25 + geocode_glib = pkgs.geocode-glib; # added 2018-02-25 + glib_networking = pkgs.glib-networking; # added 2018-02-25 + gnome_common = gnome-common; # added 2018-02-25 + gnome_control_center = gnome-control-center; # added 2018-02-25 + gnome_desktop = gnome-desktop; # added 2018-02-25 + gnome_keyring = gnome-keyring; # added 2018-02-25 + gnome_online_accounts = gnome-online-accounts; # added 2018-02-25 + gnome_session = gnome-session; # added 2018-02-25 + gnome_settings_daemon = gnome-settings-daemon; # added 2018-02-25 + gnome_shell = gnome-shell; # added 2018-02-25 + gnome_terminal = gnome-terminal; # added 2018-02-25 + gnome-themes-standard = gnome-themes-extra; # added 2018-03-14 + gnome_themes_standard = gnome-themes-standard; # added 2018-02-25 + gnome-tweak-tool = gnome-tweaks; # added 2018-03-21 + gsettings_desktop_schemas = gsettings-desktop-schemas; # added 2018-02-25 + libgames-support = libgnome-games-support; # added 2018-03-14 + libgnome_keyring = libgnome-keyring; # added 2018-02-25 + inherit (pkgs) rarian; # added 2018-04-25 + networkmanager_fortisslvpn = networkmanager-fortisslvpn; # added 2018-02-25 + networkmanager_iodine = networkmanager-iodine; # added 2018-02-25 + networkmanager_l2tp = networkmanager-l2tp; # added 2018-02-25 + networkmanager_openconnect = networkmanager-openconnect; # added 2018-02-25 + networkmanager_openvpn = networkmanager-openvpn; # added 2018-02-25 + networkmanager_vpnc = networkmanager-vpnc; # added 2018-02-25 + yelp_xsl = yelp-xsl; # added 2018-02-25 + yelp_tools = yelp-tools; # added 2018-02-25 + + # added 2019-02-08 + inherit (pkgs) atk glib gobject-introspection gspell webkitgtk gtk3 gtkmm3 + libgtop libgudev libhttpseverywhere librsvg libsecret gdk_pixbuf gtksourceview gtksourceviewmm gtksourceview4 + easytag meld orca rhythmbox shotwell gnome-usage + clutter clutter-gst clutter-gtk cogl gtk-vnc libdazzle libgda libgit2-glib libgxps libgdata libgepub libcroco libpeas libgee geocode-glib libgweather librest libzapojit libmediaart gfbgraph gexiv2 folks totem-pl-parser gcr gsound libgnomekbd vte vte_290 vte-ng gnome-menus gdl; + inherit (pkgs) gsettings-desktop-schemas; # added 2019-04-16 + inherit (pkgs) gnome-video-effects; # added 2019-08-19 + inherit (pkgs) gnome-online-accounts grilo grilo-plugins tracker tracker-miners gnome-photos; # added 2019-08-23 + inherit (pkgs) glib-networking; # added 2019-09-02 + inherit (pkgs) nemiver; # added 2019-09-09 + + defaultIconTheme = adwaita-icon-theme; + gtk = gtk3; + gtkmm = gtkmm3; + rest = librest; + + pidgin-im-gnome-shell-extension = pkgs.gnomeExtensions.pidgin-im-integration; # added 2019-08-01 + + # added 2019-08-25 + corePackages = throw "deprecated 2019-08-25: please use `services.gnome3.core-shell.enable`"; + optionalPackages = throw "deprecated 2019-08-25: please use `services.gnome3.core-utilities.enable`"; + gamesPackages = throw "deprecated 2019-08-25: please use `services.gnome3.games.enable`"; +}) diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/anjuta/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/anjuta/default.nix new file mode 100644 index 00000000000..573259b7e7d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/anjuta/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, flex, bison, libxml2, intltool, + gdl, libgda, gtksourceview, gsettings-desktop-schemas, + itstool, python3, ncurses, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "anjuta"; + version = "3.28.0"; + + src = fetchurl { + url = "mirror://gnome/sources/anjuta/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0ya7ajai9rx9g597sr5wawr6l5pb2s34bbjdsbnx0lkrhnjv11xh"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "anjuta"; attrPath = "gnome3.anjuta"; }; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ + pkgconfig intltool itstool python3 makeWrapper + # Required by python3 + ncurses + ]; + buildInputs = [ + flex bison gtk3 libxml2 gnome3.gjs gdl + libgda gtksourceview + gsettings-desktop-schemas + ]; + + preFixup = '' + wrapProgram $out/bin/anjuta \ + --prefix XDG_DATA_DIRS : \ + "$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + description = "Software development studio"; + homepage = http://anjuta.org/; + license = licenses.gpl2; + maintainers = with maintainers; []; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/devhelp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/devhelp/default.nix new file mode 100644 index 00000000000..23a58011e02 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/devhelp/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, gtk3, wrapGAppsHook +, glib, amtk, appstream-glib, gobject-introspection, python3 +, webkitgtk, gettext, itstool, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "devhelp"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/devhelp/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "06sa83zggk29wcg75fl3gqh0rmi7cd3gsbk09a2z23r7vpy7xanq"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext itstool wrapGAppsHook appstream-glib gobject-introspection python3 ]; + buildInputs = [ + glib gtk3 webkitgtk amtk + gnome3.adwaita-icon-theme gsettings-desktop-schemas + ]; + + doCheck = true; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "devhelp"; + attrPath = "gnome3.devhelp"; + }; + }; + + meta = with stdenv.lib; { + description = "API documentation browser for GNOME"; + homepage = https://wiki.gnome.org/Apps/Devhelp; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/devtools/gnome-devel-docs/default.nix b/nixpkgs/pkgs/desktops/gnome-3/devtools/gnome-devel-docs/default.nix new file mode 100644 index 00000000000..81f63941729 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/devtools/gnome-devel-docs/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + pname = "gnome-devel-docs"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-devel-docs/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0xqpgf975rws60qxilq635pblbpgwspyykgzxnb4awd9zrs5lbx0"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-devel-docs"; attrPath = "gnome3.gnome-devel-docs"; }; + }; + + buildInputs = [ intltool itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = https://github.com/GNOME/gnome-devel-docs; + description = "Developer documentation for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.fdl12; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/appindicator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/appindicator/default.nix new file mode 100644 index 00000000000..6f289fd74d9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/appindicator/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-appindicator"; + version = "29"; + + src = fetchFromGitHub { + owner = "Ubuntu"; + repo = "gnome-shell-extension-appindicator"; + rev = "v${version}"; + sha256 = "02cr6rhi3dfk49jcjm6vh7yx117bv5wqyvd34cyv1kzwzsla8v2i"; + }; + + # This package has a Makefile, but it's used for building a zip for + # publication to extensions.gnome.org. Disable the build phase so + # installing doesn't build an unnecessary release. + dontBuild = true; + + uuid = "appindicatorsupport@rgcjonas.gmail.com"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp *.js $out/share/gnome-shell/extensions/${uuid} + cp -r interfaces-xml $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "AppIndicator/KStatusNotifierItem support for GNOME Shell"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ jonafato ]; + platforms = gnome3.gnome-shell.meta.platforms; + homepage = https://github.com/Ubuntu/gnome-shell-extension-appindicator; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/default.nix new file mode 100644 index 00000000000..b38f0aeba91 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitLab, glib, gettext, substituteAll, gnome-menus }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-arc-menu"; + version = "31"; + + src = fetchFromGitLab { + owner = "LinxGem33"; + repo = "Arc-Menu"; + rev = "v${version}-stable"; + sha256 = "124jgdy6mw76nrkq3f0y7qkhdm39wg273zifdvwbgpvirwzxbia1"; + }; + + patches = [ + (substituteAll { + src = ./fix_gmenu.patch; + gmenu_path = "${gnome-menus}/lib/girepository-1.0"; + }) + ]; + + buildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALL_BASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "Gnome shell extension designed to replace the standard menu found in Gnome 3"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ dkabot ]; + homepage = https://gitlab.com/LinxGem33/Arc-Menu; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch new file mode 100644 index 00000000000..7f6b8489ea8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/arc-menu/fix_gmenu.patch @@ -0,0 +1,12 @@ +--- a/extension.js ++++ b/extension.js +@@ -29,6 +29,8 @@ + * https://github.com/The-Panacea-Projects/Gnomenu + */ + ++ ++imports.gi.GIRepository.Repository.prepend_search_path('@gmenu_path@'); + + // Import Libraries + const Main = imports.ui.main; + diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/battery-status/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/battery-status/default.nix new file mode 100644 index 00000000000..b7bde83915c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/battery-status/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-battery-status"; + version = "6"; + + src = fetchFromGitHub { + owner = "milliburn"; + repo = "gnome-shell-extension-battery_status"; + rev = "v${version}"; + sha256 = "1w83h863mzffjnmk322xq90qf3y9dzay1w9yw5r0qnbsq1ljl8p4"; + }; + + uuid = "battery_status@milliburn.github.com"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions/ + ''; + + meta = with stdenv.lib; { + description = "Configurable lightweight battery charge indicator and autohider"; + license = licenses.gpl2; + broken = true; # not compatable with latest GNOME + maintainers = with maintainers; [ jonafato ]; + homepage = https://github.com/milliburn/gnome-shell-extension-battery_status; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/caffeine/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/caffeine/default.nix new file mode 100644 index 00000000000..95a68505c7c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/caffeine/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, glib, gettext, bash }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-caffeine"; + version = "unstable-2019-04-02"; + + src = fetchFromGitHub { + owner = "eonpatapon"; + repo = "gnome-shell-extension-caffeine"; + rev = "a6b37dee108cddf50a0f0a19f0101854a75bf173"; + sha256 = "1j3q12j36v97551sjb0c8qc8zr7a7gmxibygczryfdfmwjzp6icl"; + }; + + uuid = "caffeine@patapon.info"; + + nativeBuildInputs = [ + glib gettext + ]; + + buildPhase = '' + ${bash}/bin/bash ./update-locale.sh + glib-compile-schemas --strict --targetdir=caffeine@patapon.info/schemas/ caffeine@patapon.info/schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "Fill the cup to inhibit auto suspend and screensaver"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = https://github.com/eonpatapon/gnome-shell-extension-caffeine; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix new file mode 100644 index 00000000000..f04999a449c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix @@ -0,0 +1,44 @@ +{stdenv, fetchurl, cmake, ninja, jq, python3, gnome3, wrapGAppsHook}: + +let + version = "10.1"; + + inherit (python3.pkgs) python pygobject3 requests; +in stdenv.mkDerivation rec { + pname = "chrome-gnome-shell"; + inherit version; + + src = fetchurl { + url = "mirror://gnome/sources/chrome-gnome-shell/${version}/${pname}-${version}.tar.xz"; + sha256 = "0f54xyamm383ypbh0ndkza0pif6ljddg2f947p265fkqj3p4zban"; + }; + + nativeBuildInputs = [ cmake ninja jq wrapGAppsHook ]; + buildInputs = [ gnome3.gnome-shell python pygobject3 requests ]; + + preConfigure = '' + substituteInPlace CMakeLists.txt --replace "/etc" "$out/etc" + ''; + # cmake setup hook changes /etc/opt into /var/empty + dontFixCmake = true; + + cmakeFlags = [ "-DBUILD_EXTENSION=OFF" ]; + wrapPrefixVariables = [ "PYTHONPATH" ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "chrome-gnome-shell"; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME Shell integration for Chrome"; + homepage = https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome; + longDescription = '' + To use the integration, install the <link xlink:href="https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation">browser extension</link>, and then set <option>services.gnome3.chrome-gnome-shell.enable</option> to <literal>true</literal>. + ''; + license = licenses.gpl3; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/clipboard-indicator/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/clipboard-indicator/default.nix new file mode 100644 index 00000000000..0faadbcd2b6 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/clipboard-indicator/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-clipboard-indicator"; + version = "30"; + + src = fetchFromGitHub { + owner = "Tudmotu"; + repo = "gnome-shell-extension-clipboard-indicator"; + rev = "v${version}"; + sha256 = "1fmgmxv2y678bj0kmymkgnnglcpqk8ww053izlq46xg7s27jjdf6"; + }; + + uuid = "clipboard-indicator@tudmotu.com"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r * $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Adds a clipboard indicator to the top panel and saves clipboard history"; + license = licenses.mit; + maintainers = with maintainers; [ jonafato ]; + platforms = platforms.linux; + homepage = https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-dock/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-dock/default.nix new file mode 100644 index 00000000000..e80149e5005 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-dock/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-dash-to-dock"; + version = "66"; + + src = fetchFromGitHub { + owner = "micheleg"; + repo = "dash-to-dock"; + rev = "extensions.gnome.org-v" + version; + sha256 = "04krl6rxlp1qc97psraf2kwin7h0mx4c7pnfpi7vhplmvasrwkfh"; + }; + + nativeBuildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "A dock for the Gnome Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = https://micheleg.github.io/dash-to-dock/; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-panel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-panel/default.nix new file mode 100644 index 00000000000..f7f189e23bd --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/dash-to-panel/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-dash-to-panel"; + version = "23"; + + src = fetchFromGitHub { + owner = "home-sweet-gnome"; + repo = "dash-to-panel"; + rev = "v${version}"; + sha256 = "12smkz3clcvgicr0pdc0fk6igf82nw4hzih1ywv9q43xkqh9w1i6"; + }; + + buildInputs = [ + glib gettext + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "An icon taskbar for Gnome Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ mounium ]; + homepage = https://github.com/jderose9/dash-to-panel; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix new file mode 100644 index 00000000000..cff0db665bb --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/default.nix @@ -0,0 +1,91 @@ +{ stdenv, fetchFromGitHub, substituteAll, python3, openssl, folks, gsound +, meson, ninja, libxml2, pkgconfig, gobject-introspection, wrapGAppsHook +, glib, gtk3, at-spi2-core, upower, openssh, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-gsconnect"; + version = "23"; + + src = fetchFromGitHub { + owner = "andyholmes"; + repo = "gnome-shell-extension-gsconnect"; + rev = "v${version}"; + sha256 = "011asrhkly9zhvnng2mh9v06yw39fx244pmqz5yk9rd9m4c32xid"; + }; + + patches = [ + # Make typelibs available in the extension + (substituteAll { + src = ./fix-paths.patch; + gapplication = "${glib.bin}/bin/gapplication"; + mutter_gsettings_path = glib.getSchemaPath gnome3.mutter; + }) + ]; + + nativeBuildInputs = [ + meson ninja pkgconfig + gobject-introspection # for locating typelibs + wrapGAppsHook # for wrapping daemons + libxml2 # xmllint + ]; + + buildInputs = [ + (python3.withPackages (pkgs: [ python3.pkgs.pygobject3 ])) # for folks.py + glib # libgobject + gtk3 + at-spi2-core # atspi + folks # libfolks + gnome3.nautilus # TODO: this contaminates the package with nautilus and gnome-autoar typelibs but it is only needed for the extension + gnome3.nautilus-python + gsound + upower + gnome3.caribou + gnome3.gjs # for running daemon + gnome3.evolution-data-server # folks.py requires org.gnome.Evolution.DefaultSources gsettings; TODO: hardcode the schema path to the library (similarly to https://github.com/NixOS/nixpkgs/issues/47226) + ]; + + mesonFlags = [ + "-Dgnome_shell_libdir=${gnome3.gnome-shell}/lib" + "-Dgsettings_schemadir=${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"}" + "-Dchrome_nmhdir=${placeholder "out"}/etc/opt/chrome/native-messaging-hosts" + "-Dchromium_nmhdir=${placeholder "out"}/etc/chromium/native-messaging-hosts" + "-Dopenssl_path=${openssl}/bin/openssl" + "-Dsshadd_path=${openssh}/bin/ssh-add" + "-Dsshkeygen_path=${openssh}/bin/ssh-keygen" + "-Dpost_install=true" + ]; + + postPatch = '' + patchShebangs meson/nmh.sh + patchShebangs meson/post-install.sh + + # TODO: do not include every typelib everywhere + # for example, we definitely do not need nautilus + for file in src/extension.js src/prefs.js; do + substituteInPlace "$file" \ + --subst-var-by typelibPath "$GI_TYPELIB_PATH" + done + ''; + + preFixup = '' + # TODO: figure out why folks GIR does not contain shared-library attribute + # https://github.com/NixOS/nixpkgs/issues/47226 + gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ folks ]}") + ''; + + postFixup = '' + # Let’s wrap the daemons + for file in $out/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/{{daemon,nativeMessagingHost}.js,components/folks.py}; do + echo "Wrapping program ''${file}" + wrapProgram "''${file}" "''${gappsWrapperArgs[@]}" + done + ''; + + meta = with stdenv.lib; { + description = "KDE Connect implementation for Gnome Shell"; + homepage = https://github.com/andyholmes/gnome-shell-extension-gsconnect/wiki; + license = licenses.gpl2; + maintainers = with maintainers; [ etu ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/fix-paths.patch new file mode 100644 index 00000000000..b32d0af3272 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/gsconnect/fix-paths.patch @@ -0,0 +1,44 @@ +--- a/data/org.gnome.Shell.Extensions.GSConnect.desktop ++++ b/data/org.gnome.Shell.Extensions.GSConnect.desktop +@@ -1,7 +1,7 @@ + [Desktop Entry] + Type=Application + Name=GSConnect +-Exec=gapplication launch org.gnome.Shell.Extensions.GSConnect %U ++Exec=@gapplication@ launch org.gnome.Shell.Extensions.GSConnect %U + Terminal=false + NoDisplay=true + Icon=org.gnome.Shell.Extensions.GSConnect +--- a/src/extension.js ++++ b/src/extension.js +@@ -1,5 +1,7 @@ + 'use strict'; + ++'@typelibPath@'.split(':').forEach(path => imports.gi.GIRepository.Repository.prepend_search_path(path)); ++ + const Gio = imports.gi.Gio; + const GLib = imports.gi.GLib; + const Gtk = imports.gi.Gtk; +--- a/src/prefs.js ++++ b/src/prefs.js +@@ -1,5 +1,7 @@ + 'use strict'; + ++'@typelibPath@'.split(':').forEach(path => imports.gi.GIRepository.Repository.prepend_search_path(path)); ++ + const Gio = imports.gi.Gio; + const GLib = imports.gi.GLib; + const Gtk = imports.gi.Gtk; +--- a/src/service/__init__.js ++++ b/src/service/__init__.js +@@ -600,7 +600,9 @@ + /** + * Convenience functions for saving/restoring window geometry + */ +-const _mutter = new Gio.Settings({schema_id: 'org.gnome.mutter'}); ++const _schema_source = Gio.SettingsSchemaSource.new_from_directory('@mutter_gsettings_path@', Gio.SettingsSchemaSource.get_default(), true); ++const _schema = _schema_source.lookup('org.gnome.mutter', false); ++const _mutter = new Gio.Settings({settings_schema: _schema}); + + Gtk.Window.prototype.restore_geometry = function() { + let [width, height] = this.settings.get_value('window-size').deep_unpack(); diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/icon-hider/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/icon-hider/default.nix new file mode 100644 index 00000000000..8214300a531 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/icon-hider/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-icon-hider"; + version = "23"; + + src = fetchFromGitHub { + owner = "ikalnytskyi"; + repo = "gnome-shell-extension-icon-hider"; + rev = "v${version}"; + sha256 = "18c8zkdrmdbghqqz7b450vhgpykgz25mgigwn2nggcb2lxmvm9ks"; + }; + + uuid = "icon-hider@kalnitsky.org"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "Icon Hider is a GNOME Shell extension for managing status area items"; + license = licenses.bsd3; + maintainers = with maintainers; [ jonafato ]; + platforms = gnome3.gnome-shell.meta.platforms; + homepage = https://github.com/ikalnytskyi/gnome-shell-extension-icon-hider; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/impatience.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/impatience.nix new file mode 100644 index 00000000000..b36f3489b57 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/impatience.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-impatience"; + version = "0.4.5"; + + src = fetchFromGitHub { + owner = "timbertson"; + repo = "gnome-shell-impatience"; + rev = "version-${version}"; + sha256 = "0kvdhlz41fjyqdgcfw6mrr9nali6wg2qwji3dvykzfi0aypljzpx"; + }; + + buildInputs = [ + glib + ]; + + buildPhase = '' + make schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r impatience $out/share/gnome-shell/extensions/${uuid} + ''; + + uuid = "impatience@gfxmonk.net"; + + meta = with stdenv.lib; { + description = "Speed up builtin gnome-shell animations"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ aneeshusa timbertson tiramiseb ]; + homepage = http://gfxmonk.net/dist/0install/gnome-shell-impatience.xml; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/mediaplayer/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/mediaplayer/default.nix new file mode 100644 index 00000000000..10175719e46 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/mediaplayer/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchFromGitHub, glib, meson, gettext, ninja, python3 }: + +stdenv.mkDerivation { + pname = "gnome-shell-extensions-mediaplayer"; + version = "unstable-2019-03-21"; + + src = fetchFromGitHub { + owner = "JasonLG1979"; + repo = "gnome-shell-extensions-mediaplayer"; + rev = "b382c98481fa421501684e2ff3eafc53971ef22b"; + sha256 = "01z2dml8dvl5sljw62g7x19mz02dz1g4gkmyp0h5bx49djcw1nnh"; + }; + + nativeBuildInputs = [ + meson + ninja + python3 + ]; + buildInputs = [ + glib + gettext + ]; + + postPatch = '' + rm build + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + meta = with stdenv.lib; { + description = "Control MPRIS Version 2 Capable Media Players"; + license = licenses.gpl2Plus; + homepage = https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer/; + maintainers = with maintainers; [ tiramiseb ]; + }; +} + diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/default.nix new file mode 100644 index 00000000000..f9f72bd77f0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, substituteAll, glib, gettext, xorg }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-no-title-bar"; + version = "9"; + + src = fetchFromGitHub { + owner = "franglais125"; + repo = "no-title-bar"; + rev = "v${version}"; + sha256 = "02zm61fg40r005fn2rvgrbsz2hbcsmp2hkhyilqbmpilw35y0nbq"; + }; + + nativeBuildInputs = [ + glib gettext + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + xprop = "${xorg.xprop}/bin/xprop"; + xwininfo = "${xorg.xwininfo}/bin/xwininfo"; + }) + ]; + + makeFlags = [ "INSTALLBASE=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "Integrates maximized windows with the top panel"; + homepage = https://github.com/franglais125/no-title-bar; + license = licenses.gpl2; + broken = true; # https://github.com/franglais125/no-title-bar/issues/114 + maintainers = with maintainers; [ jonafato svsdep ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/fix-paths.patch new file mode 100644 index 00000000000..9a53d63860d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/no-title-bar/fix-paths.patch @@ -0,0 +1,56 @@ +--- a/decoration.js ++++ b/decoration.js +@@ -181,7 +181,7 @@ + let act = win.get_compositor_private(); + let xwindow = act && act['x-window']; + if (xwindow) { +- let xwininfo = GLib.spawn_command_line_sync('xwininfo -children -id 0x%x'.format(xwindow)); ++ let xwininfo = GLib.spawn_command_line_sync('@xwininfo@ -children -id 0x%x'.format(xwindow)); + if (xwininfo[0]) { + let str = xwininfo[1].toString(); + +@@ -207,7 +207,7 @@ + // Try enumerating all available windows and match the title. Note that this + // may be necessary if the title contains special characters and `x-window` + // is not available. +- let result = GLib.spawn_command_line_sync('xprop -root _NET_CLIENT_LIST'); ++ let result = GLib.spawn_command_line_sync('@xprop@ -root _NET_CLIENT_LIST'); + if (result[0]) { + let str = result[1].toString(); + +@@ -218,7 +218,7 @@ + + // For each window ID, check if the title matches the desired title. + for (var i = 0; i < windowList.length; ++i) { +- let cmd = 'xprop -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE'; ++ let cmd = '@xprop@ -id "' + windowList[i] + '" _NET_WM_NAME _NO_TITLE_BAR_ORIGINAL_STATE'; + let result = GLib.spawn_command_line_sync(cmd); + + if (result[0]) { +@@ -258,7 +258,7 @@ + } + + let id = this._guessWindowXID(win); +- let cmd = 'xprop -id ' + id; ++ let cmd = '@xprop@ -id ' + id; + + let xprops = GLib.spawn_command_line_sync(cmd); + if (!xprops[0]) { +@@ -277,7 +277,7 @@ + m = str.match(/^_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED(\(CARDINAL\))? = ([0-9]+)$/m); + if (m) { + let state = !!parseInt(m[2]); +- cmd = ['xprop', '-id', id, ++ cmd = ['@xprop@', '-id', id, + '-f', '_NO_TITLE_BAR_ORIGINAL_STATE', '32c', + '-set', '_NO_TITLE_BAR_ORIGINAL_STATE', + (state ? '0x1' : '0x0')]; +@@ -358,7 +358,7 @@ + let winXID = this._guessWindowXID(win); + if (winXID == null) + return; +- let cmd = ['xprop', '-id', winXID, ++ let cmd = ['@xprop@', '-id', winXID, + '-f', '_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED', '32c', + '-set', '_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED', + (hide ? '0x1' : '0x0')]; diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/nohotcorner/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/nohotcorner/default.nix new file mode 100644 index 00000000000..e2b5288e886 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/nohotcorner/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-nohotcorner"; + version = "19.0"; + + src = fetchFromGitHub { + owner = "HROMANO"; + repo = "nohotcorner"; + rev = "v${version}"; + sha256 = "059n4gyz7d686hknaifyjax8gygrda1xab5m15a09p98jdrdfdhi"; + }; + + # Taken from the extension download link at + # https://extensions.gnome.org/extension/118/no-topleft-hot-corner/ + uuid = "nohotcorner@azuri.free.fr"; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp extension.js $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Disables the top left hot corner"; + license = licenses.gpl2; + maintainers = with maintainers; [ jonafato ]; + homepage = https://github.com/HROMANO/nohotcorner; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/pidgin-im-integration/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/pidgin-im-integration/default.nix new file mode 100644 index 00000000000..6f1cc3df409 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/pidgin-im-integration/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-pidgin-im-integration"; + version = "32"; + + src = fetchFromGitHub { + owner = "muffinmad"; + repo = "pidgin-im-gnome-shell-extension"; + rev = "v${version}"; + sha256 = "1jyg8r0s1v83sgg6y0jbsj2v37mglh8rvd8vi27fxnjq9xmg8kpc"; + }; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + share_dir="$prefix/share" + extensions_dir="$share_dir/gnome-shell/extensions/pidgin@muffinmad" + mkdir -p "$extensions_dir" + mv *.js metadata.json dbus.xml schemas locale "$extensions_dir" + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/muffinmad/pidgin-im-gnome-shell-extension; + description = "Make Pidgin IM conversations appear in the Gnome Shell message tray"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/remove-dropdown-arrows/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/remove-dropdown-arrows/default.nix new file mode 100644 index 00000000000..d9ea670db09 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/remove-dropdown-arrows/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-remove-dropdown-arrows"; + version = "11"; + + src = fetchFromGitHub { + owner = "mpdeimos"; + repo = "gnome-shell-remove-dropdown-arrows"; + rev = "version/${version}"; + sha256 = "1g99r9bpjdhab3xj74wkl40gdnaf2w51kswcr8mi6bq72n4wjxwh"; + }; + + # This package has a Makefile, but it's used for publishing and linting, not + # for building. Disable the build phase so installing doesn't attempt to + # publish the extension. + dontBuild = true; + + uuid = "remove-dropdown-arrows@mpdeimos.com"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp extension.js $out/share/gnome-shell/extensions/${uuid} + cp metadata.json $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "Remove dropdown arrows from GNOME Shell Menus"; + license = licenses.gpl3; + maintainers = with maintainers; [ jonafato ]; + homepage = https://github.com/mpdeimos/gnome-shell-remove-dropdown-arrows; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/sound-output-device-chooser/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/sound-output-device-chooser/default.nix new file mode 100644 index 00000000000..33c127f449b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/sound-output-device-chooser/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-sound-output-device-chooser"; + version = "unstable-2019-04-01"; + + src = fetchFromGitHub { + owner = "kgshank"; + repo = "gse-sound-output-device-chooser"; + rev = "37098909a50bafe2f2538819f988cb2327ed7c60"; + sha256 = "09sbby8zi9xn21lbdry57bp1vwgd5c73anvqpw9css3x2ryda5li"; + }; + + dontBuild = true; + + uuid = "sound-output-device-chooser@kgshank.net"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "GNOME Shell extension adding audio device chooser to panel"; + license = licenses.gpl3; + maintainers = with maintainers; [ jtojnar ]; + homepage = https://github.com/kgshank/gse-sound-output-device-chooser; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix new file mode 100644 index 00000000000..13b2d6a1db4 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix @@ -0,0 +1,45 @@ +{ stdenv, substituteAll, fetchFromGitHub, glib, glib-networking, libgtop }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-system-monitor"; + version = "38"; + + src = fetchFromGitHub { + owner = "paradoxxxzero"; + repo = "gnome-shell-system-monitor-applet"; + rev = "v${version}"; + sha256 = "1sdj2kxb418mgq44a6lf6jic33wlfbnn3ja61igmx0jj1530iknv"; + }; + + buildInputs = [ + glib + glib-networking + libgtop + ]; + + patches = [ + (substituteAll { + src = ./paths_and_nonexisting_dirs.patch; + gtop_path = "${libgtop}/lib/girepository-1.0"; + glib_net_path = "${glib-networking}/lib/girepository-1.0"; + }) + ]; + + buildPhase = '' + glib-compile-schemas --targetdir=${uuid}/schemas ${uuid}/schemas + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + uuid = "system-monitor@paradoxxx.zero.gmail.com"; + + meta = with stdenv.lib; { + description = "Display system informations in gnome shell status bar"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ aneeshusa tiramiseb ]; + homepage = https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/paths_and_nonexisting_dirs.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/paths_and_nonexisting_dirs.patch new file mode 100644 index 00000000000..82e3d7c541b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/system-monitor/paths_and_nonexisting_dirs.patch @@ -0,0 +1,23 @@ +diff --git a/system-monitor@paradoxxx.zero.gmail.com/extension.js b/system-monitor@paradoxxx.zero.gmail.com/extension.js +index b4b7f15..d139135 100644 +--- a/system-monitor@paradoxxx.zero.gmail.com/extension.js ++++ b/system-monitor@paradoxxx.zero.gmail.com/extension.js +@@ -18,6 +18,9 @@ + + // Author: Florian Mounier aka paradoxxxzero + ++imports.gi.GIRepository.Repository.prepend_search_path('@gtop_path@'); ++imports.gi.GIRepository.Repository.prepend_search_path('@glib_net_path@'); ++ + /* Ugly. This is here so that we don't crash old libnm-glib based shells unnecessarily + * by loading the new libnm.so. Should go away eventually */ + const libnm_glib = imports.gi.GIRepository.Repository.get_default().is_registered("NMClient", "1.0"); +@@ -386,7 +389,7 @@ const smMountsMonitor = new Lang.Class({ + connected: false, + _init: function () { + this._volumeMonitor = Gio.VolumeMonitor.get(); +- let sys_mounts = ['/home', '/tmp', '/boot', '/usr', '/usr/local']; ++ let sys_mounts = ['/home', '/tmp', '/boot']; + this.base_mounts = ['/']; + sys_mounts.forEach(Lang.bind(this, function (sMount) { + if (this.is_sys_mount(sMount + '/')) { diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/default.nix new file mode 100644 index 00000000000..90be6aed1d7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/default.nix @@ -0,0 +1,42 @@ +{ stdenv, substituteAll, fetchFromGitHub, taskwarrior, gettext, runtimeShell }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-taskwhisperer"; + version = "12"; + + src = fetchFromGitHub { + owner = "cinatic"; + repo = "taskwhisperer"; + rev = "v${version}"; + sha256 = "187p6p498dd258avsfqqsm322g58y75pc2wbhb4jpmm9insqm1bj"; + }; + + nativeBuildInputs = [ + gettext + ]; + + buildInputs = [ + taskwarrior + ]; + + uuid = "taskwhisperer-extension@infinicode.de"; + + makeFlags = [ + "INSTALLBASE=${placeholder "out"}/share/gnome-shell/extensions" + ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + task = "${taskwarrior}/bin/task"; + shell = runtimeShell; + }) + ]; + + meta = with stdenv.lib; { + description = "GNOME Shell TaskWarrior GUI"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ jonafato ]; + homepage = https://github.com/cinatic/taskwhisperer; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/fix-paths.patch new file mode 100644 index 00000000000..2ea54f4b089 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/taskwhisperer/fix-paths.patch @@ -0,0 +1,99 @@ +diff --git a/taskwhisperer-extension@infinicode.de/extra/create.sh b/taskwhisperer-extension@infinicode.de/extra/create.sh +index a69e369..35d5ea1 100755 +--- a/taskwhisperer-extension@infinicode.de/extra/create.sh ++++ b/taskwhisperer-extension@infinicode.de/extra/create.sh +@@ -1 +1 @@ +-bash -c "task add $1" ++bash -c "@task@ add $1" +diff --git a/taskwhisperer-extension@infinicode.de/extra/modify.sh b/taskwhisperer-extension@infinicode.de/extra/modify.sh +index 7964a26..8edd21b 100755 +--- a/taskwhisperer-extension@infinicode.de/extra/modify.sh ++++ b/taskwhisperer-extension@infinicode.de/extra/modify.sh +@@ -1 +1 @@ +-bash -c "task $1 modify $2" ++bash -c "@task@ $1 modify $2" +diff --git a/taskwhisperer-extension@infinicode.de/taskService.js b/taskwhisperer-extension@infinicode.de/taskService.js +index ead7a12..aa36db4 100644 +--- a/taskwhisperer-extension@infinicode.de/taskService.js ++++ b/taskwhisperer-extension@infinicode.de/taskService.js +@@ -182,7 +182,7 @@ const TaskService = class TaskService { + + let project = projectName ? "project:" + projectName : ""; + +- let command = ['task', 'rc.json.array=on', status, project, 'export']; ++ let command = ['@task@', 'rc.json.array=on', status, project, 'export']; + let reader = new SpawnReader.SpawnReader(); + + let buffer = ""; +@@ -220,7 +220,7 @@ const TaskService = class TaskService { + break; + } + +- let shellProc = Gio.Subprocess.new(['task', status, 'projects'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', status, 'projects'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -261,7 +261,7 @@ const TaskService = class TaskService { + return; + } + +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'done'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'done'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -290,7 +290,7 @@ const TaskService = class TaskService { + return; + } + +- let shellProc = Gio.Subprocess.new(['task', 'modify', taskID.toString(), 'status:pending'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', 'modify', taskID.toString(), 'status:pending'], Gio.SubprocessFlags.STDOUT_PIPE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -318,7 +318,7 @@ const TaskService = class TaskService { + if (!taskID) { + return; + } +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'start'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'start'], Gio.SubprocessFlags.STDOUT_PIPE); + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; + shellProc.wait_finish(result); +@@ -344,7 +344,7 @@ const TaskService = class TaskService { + if (!taskID) { + return; + } +- let shellProc = Gio.Subprocess.new(['task', taskID.toString(), 'stop'], Gio.SubprocessFlags.STDOUT_PIPE); ++ let shellProc = Gio.Subprocess.new(['@task@', taskID.toString(), 'stop'], Gio.SubprocessFlags.STDOUT_PIPE); + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; + shellProc.wait_finish(result); +@@ -374,7 +374,7 @@ const TaskService = class TaskService { + // FIXME: Gio.Subprocess: due to only passing string vector is allowed, it's not possible to directly pass the + // input of the user to subprocess (why & how, if you can answer then please send msg to fh@infinicode.de) + // bypassing problem with own shell script +- let shellProc = Gio.Subprocess.new(['/bin/sh', EXTENSIONDIR + '/extra/modify.sh', taskID.toString(), params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); ++ let shellProc = Gio.Subprocess.new(['@shell@', EXTENSIONDIR + '/extra/modify.sh', taskID.toString(), params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -403,7 +403,7 @@ const TaskService = class TaskService { + // FIXME: Gio.Subprocess: due to only passing string vector is allowed, it's not possible to directly pass the + // input of the user to subprocess (why & how, if you can answer then please send msg to fh@infinicode.de) + // bypassing problem with own shell script +- let shellProc = Gio.Subprocess.new(['/bin/sh', EXTENSIONDIR + '/extra/create.sh', params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); ++ let shellProc = Gio.Subprocess.new(['@shell@', EXTENSIONDIR + '/extra/create.sh', params], Gio.SubprocessFlags.STDOUT_PIPE + Gio.SubprocessFlags.STDERR_MERGE); + + shellProc.wait_async(null, function (obj, result) { + let shellProcExited = true; +@@ -432,7 +432,7 @@ const TaskService = class TaskService { + let shellProc; + + try { +- shellProc = Gio.Subprocess.new(['task', 'sync'], Gio.SubprocessFlags.STDOUT_PIPE); ++ shellProc = Gio.Subprocess.new(['@task@', 'sync'], Gio.SubprocessFlags.STDOUT_PIPE); + } catch (err) { + onError(err); + return; diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/tilingnome/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/tilingnome/default.nix new file mode 100644 index 00000000000..293918bd2b1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/tilingnome/default.nix @@ -0,0 +1,35 @@ +{ stdenv, lib, fetchFromGitHub, glib, gnome3 }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-tilingnome"; + version = "unstable-2019-01-18"; + + src = fetchFromGitHub { + owner = "rliang"; + repo = pname; + rev = "bd4fb8c19f7a6282b38724b30e62645143390226"; + sha256 = "1y4s4n88gdkpvgd3v3dg0181ccyhlixbvkx3bwyvdxyyyxbqibid"; + }; + + nativeBuildInputs = [ glib ]; + + buildPhase = '' + glib-compile-schemas . + ''; + + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r * $out/share/gnome-shell/extensions/${uuid}/ + ''; + + uuid = "tilingnome@rliang.github.com"; + + meta = with stdenv.lib; { + description = "Tiling window management for GNOME Shell"; + license = licenses.gpl2; + maintainers = with maintainers; [ benley ]; + homepage = https://github.com/rliang/gnome-shell-extension-tilingnome; + platforms = gnome3.gnome-shell.meta.platforms; + broken = lib.versionAtLeast gnome3.gnome-shell.version "3.31"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/timepp/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/timepp/default.nix new file mode 100644 index 00000000000..f841ef2403d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/timepp/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-timepp"; + version = "unstable-2019-03-30"; + + src = fetchFromGitHub { + owner = "zagortenay333"; + repo = "timepp__gnome"; + rev = "f90fb5573b37ac89fb57bf62e07d6d3bdb6a2c63"; + sha256 = "0p6rsbm6lf61vzly775qkwc2rcjjl38bkqdxnv4sccqmw2wwclnp"; + }; + + uuid = "timepp@zagortenay333"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions/${uuid} + cp -r . $out/share/gnome-shell/extensions/${uuid} + ''; + + meta = with stdenv.lib; { + description = "A todo.txt manager, time tracker, timer, stopwatch, pomodoro, and alarms gnome-shell extension."; + homepage = https://github.com/zagortenay333/timepp__gnome; + license = licenses.gpl3; + maintainers = with maintainers; [ svsdep ]; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/topicons-plus/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/topicons-plus/default.nix new file mode 100644 index 00000000000..f0f6279fe2e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/topicons-plus/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchFromGitHub, glib, gettext }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-topicons-plus"; + version = "22"; + + src = fetchFromGitHub { + owner = "phocean"; + repo = "TopIcons-plus"; + rev = "v${version}"; + sha256 = "196s1gdir52gbc444pzrb5l7gn5xr5vqk5ajqaiqryqlmp3i8vil"; + }; + + buildInputs = [ glib ]; + + nativeBuildInputs = [ gettext ]; + + makeFlags = [ "INSTALL_PATH=$(out)/share/gnome-shell/extensions" ]; + + meta = with stdenv.lib; { + description = "Brings all icons back to the top panel, so that it's easier to keep track of apps running in the backround"; + license = licenses.gpl2; + maintainers = with maintainers; [ eperuffo ]; + homepage = https://github.com/phocean/TopIcons-plus; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/volume-mixer.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/volume-mixer.nix new file mode 100644 index 00000000000..072d31b84fe --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/volume-mixer.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-volume-mixer"; + version = "844ed80ad448855d8f6218847183a80474b523c7"; + + src = fetchFromGitHub { + owner = "aleho"; + repo = "gnome-shell-volume-mixer"; + rev = version; + sha256 = "1vcj2spbymhdi1nazvhldvcfgad23r3h7f0ihh4nianbxn7hjs9w"; + }; + + buildInputs = [ + glib + ]; + + buildPhase = '' + glib-compile-schemas --targetdir=${uuid}/schemas ${uuid}/schemas + ''; + + installPhase = '' + cp -r ${uuid} $out + ''; + + uuid = "shell-volume-mixer@derhofbauer.at"; + + meta = with stdenv.lib; { + description = "GNOME Shell Extension allowing separate configuration of PulseAudio devices"; + license = licenses.gpl2; + maintainers = with maintainers; [ aneeshusa ]; + homepage = https://github.com/aleho/gnome-shell-volume-mixer; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/window-corner-preview/default.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/window-corner-preview/default.nix new file mode 100644 index 00000000000..7d5de1062b1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/window-corner-preview/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-window-corner-preview"; + version = "unstable-2019-04-03"; + + src = fetchFromGitHub { + owner = "medenagan"; + repo = "window-corner-preview"; + rev = "a95bb1389d94474efab7509aac592fb58fff6006"; + sha256 = "03v18j9l0fb64xrg3swf1vcgl0kpgwjlp8ddn068bpvghrsvgfah"; + }; + + dontBuild = true; + + uuid = "window-corner-preview@fabiomereu.it"; + installPhase = '' + mkdir -p $out/share/gnome-shell/extensions + cp -r ${uuid} $out/share/gnome-shell/extensions + ''; + + meta = with stdenv.lib; { + description = "GNOME Shell extension showing a video preview on the corner of the screen"; + license = licenses.mit; + maintainers = with maintainers; [ jtojnar ]; + homepage = https://github.com/medenagan/window-corner-preview; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/extensions/workspace-grid.nix b/nixpkgs/pkgs/desktops/gnome-3/extensions/workspace-grid.nix new file mode 100644 index 00000000000..811e9911f62 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/extensions/workspace-grid.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchFromGitHub, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-workspace-grid"; + version = "0f3a430e7d04bb5465a17c1225aab0f574426d6b"; + + src = fetchFromGitHub { + owner = "zakkak"; + repo = "workspace-grid-gnome-shell-extension"; + rev = version; + sha256 = "0503b7lmydrbblfvf9b56pv5hpmykzgyc6v8y99rckg58h2jhs69"; + }; + + buildInputs = [ + glib + ]; + + installPhase = '' + cp -r ${uuid} $out + ''; + + uuid = "workspace-grid@mathematical.coffee.gmail.com"; + + meta = with stdenv.lib; { + description = "Arranges workspaces in a configurable grid"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ aneeshusa ]; + homepage = https://github.com/zakkak/workspace-grid-gnome-shell-extension; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/find-latest-version.py b/nixpkgs/pkgs/desktops/gnome-3/find-latest-version.py new file mode 100644 index 00000000000..b0359f79969 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/find-latest-version.py @@ -0,0 +1,60 @@ +import argparse +import json +import requests +import sys + +def version_to_list(version): + return list(map(int, version.split('.'))) + +def odd_unstable(version_str, selected): + version = version_to_list(version_str) + if len(version) < 2: + return True + + even = version[1] % 2 == 0 + prerelease = (version[1] >= 90 and version[1] < 100) or (version[1] >= 900 and version[1] < 1000) + stable = even and not prerelease + if selected == 'stable': + return stable + else: + return True + +def no_policy(version, selected): + return True + +version_policies = { + 'odd-unstable': odd_unstable, + 'none': no_policy, +} + +def make_version_policy(version_predicate, selected): + return lambda version: version_predicate(version, selected) + +parser = argparse.ArgumentParser(description='Find latest version for a GNOME package by crawling their release server.') +parser.add_argument('package-name', help='Name of the directory in https://ftp.gnome.org/pub/GNOME/sources/ containing the package.') +parser.add_argument('version-policy', help='Policy determining which versions are considered stable. For most GNOME packages, odd minor versions are unstable but there are exceptions.', choices=version_policies.keys(), nargs='?', default='odd-unstable') +parser.add_argument('requested-release', help='Most of the time, we will want to update to stable version but sometimes it is useful to test.', choices=['stable', 'unstable'], nargs='?', default='stable') + + +if __name__ == '__main__': + args = parser.parse_args() + + package_name = getattr(args, 'package-name') + requested_release = getattr(args, 'requested-release') + version_predicate = version_policies[getattr(args, 'version-policy')] + version_policy = make_version_policy(version_predicate, requested_release) + + # The structure of cache.json: https://gitlab.gnome.org/Infrastructure/sysadmin-bin/blob/master/ftpadmin#L762 + cache = json.loads(requests.get('https://ftp.gnome.org/pub/GNOME/sources/{}/cache.json'.format(package_name)).text) + if type(cache) != list or cache[0] != 4: + print('Unknown format of cache.json file.', file=sys.stderr) + sys.exit(1) + + versions = cache[2][package_name] + versions = sorted(filter(version_policy, versions), key=version_to_list) + + if len(versions) == 0: + print('No versions matched.', file=sys.stderr) + sys.exit(1) + + print(versions[-1]) diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/aisleriot/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/aisleriot/default.nix new file mode 100644 index 00000000000..3e274c35cdd --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/aisleriot/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, intltool, itstool, gtk3 +, wrapGAppsHook, librsvg, libxml2, desktop-file-utils +, guile_2_0, libcanberra-gtk3 }: + +stdenv.mkDerivation rec { + pname = "aisleriot"; + version = "3.22.8"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "15pm39679ymxki07sb5nvhycz4z53zwbvascyp5wm4864bn98815"; + }; + + configureFlags = [ + "--with-card-theme-formats=svg" + "--with-platform=gtk-only" # until they remove GConf + ]; + + nativeBuildInputs = [ pkgconfig intltool itstool wrapGAppsHook libxml2 desktop-file-utils ]; + buildInputs = [ gtk3 librsvg guile_2_0 libcanberra-gtk3 ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Aisleriot; + description = "A collection of patience games written in guile scheme"; + maintainers = gnome3.maintainers; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/atomix/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/atomix/default.nix new file mode 100644 index 00000000000..c9395166c52 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/atomix/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, wrapGAppsHook, python3 +, gettext, gnome3, glib, gtk3, libgnome-games-support, gdk-pixbuf }: + +let + pname = "atomix"; + version = "3.32.1"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "19wpm7mn6r7x6jz1r0kkqg3xa69iycvgb7g7i8wi0d3cx0rsgjkl"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig gettext wrapGAppsHook python3 ]; + buildInputs = [ glib gtk3 gdk-pixbuf libgnome-games-support gnome3.adwaita-icon-theme ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Puzzle game where you move atoms to build a molecule"; + homepage = https://wiki.gnome.org/Apps/Atomix; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/five-or-more/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/five-or-more/default.nix new file mode 100644 index 00000000000..b4c6eaaec1b --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/five-or-more/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libgnome-games-support, gettext, itstool, libxml2, python3, vala }: + +stdenv.mkDerivation rec { + pname = "five-or-more"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/five-or-more/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0v52i22ygv6y4zqs8nyb1qmacmj9whhqrw7qss6vn7by4nsikhrn"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxml2 python3 wrapGAppsHook + vala + ]; + buildInputs = [ + gtk3 librsvg libgnome-games-support gnome3.adwaita-icon-theme + ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "five-or-more"; + attrPath = "gnome3.five-or-more"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Five_or_more; + description = "Remove colored balls from the board by forming lines"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix new file mode 100644 index 00000000000..5b233c48385 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/four-in-a-row/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, gettext, meson, libcanberra-gtk3, librsvg, itstool, vala +, python3, ninja, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "four-in-a-row"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/four-in-a-row/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0h4wmbkdp7x3gp9sbxmvla316m8n6iy4f5sq0ksldj0z7ghlx9zl"; + }; + + nativeBuildInputs = [ + pkgconfig wrapGAppsHook gettext meson itstool vala + ninja python3 desktop-file-utils + ]; + buildInputs = [ gtk3 libcanberra-gtk3 librsvg gnome3.adwaita-icon-theme ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "four-in-a-row"; + attrPath = "gnome3.four-in-a-row"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Four-in-a-row; + description = "Make lines of the same color to win"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-chess/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-chess/default.nix new file mode 100644 index 00000000000..d7001e1c527 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-chess/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, meson, ninja, vala, pkgconfig, wrapGAppsHook, gobject-introspection +, gettext, itstool, libxml2, python3, gnome3, glib, gtk3, librsvg }: + +stdenv.mkDerivation rec { + pname = "gnome-chess"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-chess/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0hzb6s4wmfy1fysagc5hmn1ijvrwyd2cg7iz41mpn7gfdjyak639"; + }; + + nativeBuildInputs = [ meson ninja vala pkgconfig gettext itstool libxml2 python3 wrapGAppsHook gobject-introspection ]; + buildInputs = [ glib gtk3 librsvg gnome3.adwaita-icon-theme ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-chess"; + attrPath = "gnome3.gnome-chess"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Chess; + description = "Play the classic two-player boardgame of chess"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-klotski/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-klotski/default.nix new file mode 100644 index 00000000000..904edd7e51a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-klotski/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, pkgconfig, vala, gnome3, gtk3, wrapGAppsHook, appstream-glib, desktop-file-utils +, glib, librsvg, libxml2, gettext, itstool, libgee, libgnome-games-support +, meson, ninja, python3 +}: + +let + pname = "gnome-klotski"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1p4s15gxj6gasix22z9vlx2yrx196fvcxr6v6qrl569idfgjbi72"; + }; + + nativeBuildInputs = [ + pkgconfig vala meson ninja python3 wrapGAppsHook + gettext itstool libxml2 appstream-glib desktop-file-utils + gnome3.adwaita-icon-theme + ]; + buildInputs = [ glib gtk3 librsvg libgee libgnome-games-support ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Klotski; + description = "Slide blocks to solve the puzzle"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mahjongg/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mahjongg/default.nix new file mode 100644 index 00000000000..9d173945cdd --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mahjongg/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, gettext, itstool, libxml2 +, meson, ninja, python3, vala, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "gnome-mahjongg"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-mahjongg/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "12kamxnxbh26k4iykhbs873mx25a2wrjnhr013lfkwbyl52kg12j"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-mahjongg"; attrPath = "gnome3.gnome-mahjongg"; }; + }; + + nativeBuildInputs = [ + meson ninja vala python3 desktop-file-utils + pkgconfig gnome3.adwaita-icon-theme + libxml2 itstool gettext wrapGAppsHook + ]; + buildInputs = [ + gtk3 librsvg + ]; + + postPatch = '' + chmod +x data/meson_post_install.py + patchShebangs data/meson_post_install.py + ''; + + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Mahjongg; + description = "Disassemble a pile of tiles by removing matching pairs"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mines/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mines/default.nix new file mode 100644 index 00000000000..1ac7e51357e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-mines/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, meson, ninja, vala, gobject-introspection, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, gettext, itstool, python3, libxml2, libgnome-games-support, libgee, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "gnome-mines"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-mines/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1nv966wkp2rqxzcdb76bwlbzpjqadcaqzrnkxpzwnvjjr167yx8g"; + }; + + # gobject-introspection for finding vapi files + nativeBuildInputs = [ + meson ninja vala gobject-introspection pkgconfig gettext itstool python3 + libxml2 wrapGAppsHook desktop-file-utils + ]; + buildInputs = [ gtk3 librsvg gnome3.adwaita-icon-theme libgnome-games-support libgee ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-mines"; + attrPath = "gnome3.gnome-mines"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Mines; + description = "Clear hidden mines from a minefield"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-nibbles/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-nibbles/default.nix new file mode 100644 index 00000000000..7b069922169 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-nibbles/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libcanberra-gtk3, clutter-gtk, intltool, itstool +, libxml2, libgee, libgnome-games-support }: + +stdenv.mkDerivation rec { + pname = "gnome-nibbles"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-nibbles/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0g627pzbfywiy2rsh4aidgbln9s4j5m8pryw4cgr5ygc4z8l6l9p"; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook intltool itstool libxml2 ]; + buildInputs = [ + gtk3 librsvg libcanberra-gtk3 clutter-gtk gnome3.adwaita-icon-theme + libgee libgnome-games-support + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-nibbles"; + attrPath = "gnome3.gnome-nibbles"; + }; + }; + + meta = with stdenv.lib; { + description = "Guide a worm around a maze"; + homepage = https://wiki.gnome.org/Apps/Nibbles; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-robots/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-robots/default.nix new file mode 100644 index 00000000000..46723867f8a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-robots/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libcanberra-gtk3, gettext, itstool, libxml2, libgnome-games-support +, libgee, meson, ninja, python3, desktop-file-utils , hicolor-icon-theme, adwaita-icon-theme }: + +stdenv.mkDerivation rec { + pname = "gnome-robots"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-robots/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1xp1sijl5k7wmnbb0hdgh4ajxgp74k7fcnmd5c6rw6lf51wpinyh"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-robots"; attrPath = "gnome3.gnome-robots"; }; + }; + + nativeBuildInputs = [ + pkgconfig meson ninja python3 + libxml2 wrapGAppsHook gettext itstool desktop-file-utils + hicolor-icon-theme # For setup-hook + ]; + buildInputs = [ + gtk3 librsvg libcanberra-gtk3 libgnome-games-support libgee adwaita-icon-theme + ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Robots; + description = "Avoid the robots and make them crash into each other"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-sudoku/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-sudoku/default.nix new file mode 100644 index 00000000000..a555ee31cf3 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-sudoku/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, meson, ninja, vala, pkgconfig, gobject-introspection, gettext, gtk3, gnome3, wrapGAppsHook +, libgee, json-glib, qqwing, itstool, libxml2, python3, desktop-file-utils }: + +stdenv.mkDerivation rec { + pname = "gnome-sudoku"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-sudoku/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1wwdjflw1lbx3cv6gvqcgp5jnjkrq37ld6mjbjj03g3vr90qaf0l"; + }; + + nativeBuildInputs = [ meson ninja vala pkgconfig gobject-introspection gettext itstool libxml2 python3 desktop-file-utils wrapGAppsHook ]; + buildInputs = [ gtk3 libgee json-glib qqwing ]; + + postPatch = '' + chmod +x build-aux/post_install.py + patchShebangs build-aux/post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-sudoku"; + attrPath = "gnome3.gnome-sudoku"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Sudoku; + description = "Test your logic skills in this number grid puzzle"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-taquin/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-taquin/default.nix new file mode 100644 index 00000000000..b6c60362265 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-taquin/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libcanberra-gtk3, gettext, itstool, libxml2 +, meson, ninja, vala, python3, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "gnome-taquin"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-taquin/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1kyxh68gg7clxg22ls4sliisxb2sydwccbxqgfvxjg2fklr6r1lm"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-taquin"; attrPath = "gnome3.gnome-taquin"; }; + }; + + nativeBuildInputs = [ + pkgconfig wrapGAppsHook meson ninja python3 + gettext itstool libxml2 vala desktop-file-utils + ]; + buildInputs = [ + gtk3 librsvg libcanberra-gtk3 + gnome3.adwaita-icon-theme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Taquin; + description = "Move tiles so that they reach their places"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/gnome-tetravex/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-tetravex/default.nix new file mode 100644 index 00000000000..29141530211 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/gnome-tetravex/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libxml2, gettext, itstool, meson, ninja, python3 +, vala, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "gnome-tetravex"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-tetravex/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "18drxp43j2jnywxl6qa7mn1iv33jxr0dpc1l9xza3lnrb0jp0kjl"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-tetravex"; attrPath = "gnome3.gnome-tetravex"; }; + }; + + nativeBuildInputs = [ + wrapGAppsHook itstool libxml2 gnome3.adwaita-icon-theme + pkgconfig gettext meson ninja python3 vala desktop-file-utils + ]; + buildInputs = [ + gtk3 + ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Tetravex; + description = "Complete the puzzle by matching numbered tiles"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/hitori/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/hitori/default.nix new file mode 100644 index 00000000000..8e53a937a5e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/hitori/default.nix @@ -0,0 +1,66 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gnome3 +, glib +, gtk3 +, cairo +, wrapGAppsHook +, libxml2 +, python3 +, gettext +, itstool +, desktop-file-utils +, adwaita-icon-theme +}: + +stdenv.mkDerivation rec { + pname = "hitori"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/hitori/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "15s20db2fq4cy031sw20pmf53hxiak44fgyjy5njqnp2h2sg3806"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + gettext + itstool + desktop-file-utils + libxml2 + python3 + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + cairo + adwaita-icon-theme + ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Hitori; + description = "GTK application to generate and let you play games of Hitori"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/iagno/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/iagno/default.nix new file mode 100644 index 00000000000..114551ed4ee --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/iagno/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk-pixbuf, librsvg, wrapGAppsHook +, itstool, libcanberra-gtk3, libxml2 +, meson, ninja, python3, vala, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "iagno"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/iagno/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1rcqb4gpam16xw87n4q2akkrg94ksrn16ry21pr6bsd7qs7hw17d"; + }; + + nativeBuildInputs = [ + meson ninja python3 vala desktop-file-utils + pkgconfig wrapGAppsHook itstool libxml2 + ]; + buildInputs = [ gtk3 gnome3.adwaita-icon-theme gdk-pixbuf librsvg libcanberra-gtk3 ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "iagno"; + attrPath = "gnome3.iagno"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Iagno; + description = "Computer version of the game Reversi, more popularly called Othello"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/lightsoff/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/lightsoff/default.nix new file mode 100644 index 00000000000..9c582f037a2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/lightsoff/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, vala, pkgconfig, gtk3, gnome3, gdk-pixbuf, librsvg, wrapGAppsHook +, gettext, itstool, clutter, clutter-gtk, libxml2, appstream-glib +, meson, ninja, python3 }: + +stdenv.mkDerivation rec { + pname = "lightsoff"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/lightsoff/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0vc3ibjs9ynnm0gxlhhin7jpnsx22vnn4ygaybxwmv9w2q49cs9f"; + }; + + nativeBuildInputs = [ + vala pkgconfig wrapGAppsHook itstool gettext appstream-glib libxml2 + meson ninja python3 + ]; + buildInputs = [ gtk3 gnome3.adwaita-icon-theme gdk-pixbuf librsvg clutter clutter-gtk ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "lightsoff"; + attrPath = "gnome3.lightsoff"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Lightsoff; + description = "Puzzle game, where the objective is to turn off all of the tiles on the board"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/quadrapassel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/quadrapassel/default.nix new file mode 100644 index 00000000000..78ed0d9fa68 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/quadrapassel/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk-pixbuf +, librsvg, libcanberra-gtk3, libmanette +, gettext, itstool, libxml2, clutter, clutter-gtk, wrapGAppsHook +, meson, ninja, python3, vala, desktop-file-utils +}: + +let + pname = "quadrapassel"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/quadrapassel/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"; + }; + + nativeBuildInputs = [ + meson ninja python3 vala desktop-file-utils + pkgconfig gnome3.adwaita-icon-theme + libxml2 itstool gettext wrapGAppsHook + ]; + buildInputs = [ + gtk3 gdk-pixbuf librsvg libmanette + libcanberra-gtk3 clutter libxml2 clutter-gtk + ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Classic falling-block game, Tetris"; + homepage = https://wiki.gnome.org/Apps/Quadrapassel; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/swell-foop/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/swell-foop/default.nix new file mode 100644 index 00000000000..a944e0c568a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/swell-foop/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, vala, glib, gtk3, gnome3, desktop-file-utils +, clutter, clutter-gtk, gettext, itstool, libxml2, wrapGAppsHook, python3 }: + +let + pname = "swell-foop"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0jpci3c1wyzbvsq86j30rcl166skhi2wf12001amfgh0dmmwipci"; + }; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + nativeBuildInputs = [ meson ninja vala pkgconfig wrapGAppsHook python3 itstool gettext libxml2 desktop-file-utils ]; + buildInputs = [ glib gtk3 gnome3.adwaita-icon-theme clutter clutter-gtk ]; + + postPatch = '' + chmod +x meson_post_install.py # patchShebangs requires executable file + patchShebangs meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Swell%20Foop; + description = "Puzzle game, previously known as Same GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/games/tali/default.nix b/nixpkgs/pkgs/desktops/gnome-3/games/tali/default.nix new file mode 100644 index 00000000000..f196ada3850 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/games/tali/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk-pixbuf +, librsvg, gettext, itstool, libxml2, wrapGAppsHook +, meson, ninja, python3, desktop-file-utils +}: + +stdenv.mkDerivation rec { + pname = "tali"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/tali/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0na7sswfh63wj44aibcnqdsbb24yfngcwgi07lv8rky6rry0kqgz"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "tali"; attrPath = "gnome3.tali"; }; + }; + + nativeBuildInputs = [ + meson ninja python3 desktop-file-utils + pkgconfig gnome3.adwaita-icon-theme + libxml2 itstool gettext wrapGAppsHook + ]; + buildInputs = [ gtk3 gdk-pixbuf librsvg ]; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Tali; + description = "Sort of poker with dice and less money"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/installer.nix b/nixpkgs/pkgs/desktops/gnome-3/installer.nix new file mode 100644 index 00000000000..4999e1f3343 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/installer.nix @@ -0,0 +1,15 @@ +{ isoBaseName ? "nixos-graphical-gnome", system ? builtins.currentSystem +, extraModules ? [] }: + +let + + module = ../../../../nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix; + + config = (import ../../../../nixos/lib/eval-config.nix { + inherit system; + modules = [ module { isoImage.isoBaseName = isoBaseName; } ] ++ extraModules; + }).config; + +in + config.system.build.isoImage + diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix new file mode 100644 index 00000000000..8babe77e412 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/geary/default.nix @@ -0,0 +1,70 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, vala, enchant2, wrapGAppsHook, meson, ninja +, desktop-file-utils, gnome-online-accounts, gsettings-desktop-schemas, adwaita-icon-theme +, libnotify, libcanberra-gtk3, libsecret, gmime, isocodes, libxml2, gettext +, sqlite, gcr, json-glib, itstool, libgee, gnome3, webkitgtk, python3 +, xvfb_run, dbus, shared-mime-info, libunwind, libunity, folks, glib-networking }: + +stdenv.mkDerivation rec { + pname = "geary"; + version = "3.32.2"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0sg53zq81v28hdqiy5d048skwfgsa8ck0z7ywsagdh7iaqin68gq"; + }; + + nativeBuildInputs = [ + desktop-file-utils gettext itstool libxml2 meson ninja + pkgconfig vala wrapGAppsHook python3 + ]; + + buildInputs = [ + adwaita-icon-theme enchant2 gcr gmime gnome-online-accounts + gsettings-desktop-schemas gtk3 isocodes json-glib libcanberra-gtk3 + libgee libnotify libsecret sqlite webkitgtk glib-networking + libunwind libunity folks + ]; + + checkInputs = [ xvfb_run dbus ]; + + mesonFlags = [ + "-Dcontractor=true" # install the contractor file (Pantheon specific) + ]; + + postPatch = '' + chmod +x build-aux/post_install.py + patchShebangs build-aux/post_install.py + + chmod +x desktop/geary-attach + ''; + + doCheck = true; + + checkPhase = '' + NO_AT_BRIDGE=1 \ + XDG_DATA_DIRS=:$XDG_DATA_DIRS:${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${shared-mime-info}/share \ + xvfb-run -s '-screen 0 800x600x24' dbus-run-session \ + --config-file=${dbus.daemon}/share/dbus-1/session.conf \ + meson test -v --no-stdsplit + ''; + + preFixup = '' + # Add geary to path for geary-attach + gappsWrapperArgs+=(--prefix PATH : "$out/bin") + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Geary; + description = "Mail client for GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gitg/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gitg/default.nix new file mode 100644 index 00000000000..94418849b98 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gitg/default.nix @@ -0,0 +1,99 @@ +{ stdenv +, fetchurl +, fetchpatch +, vala +, gettext +, pkgconfig +, gtk3 +, glib +, json-glib +, wrapGAppsHook +, libpeas +, bash +, gobject-introspection +, libsoup +, gtksourceview +, gsettings-desktop-schemas +, adwaita-icon-theme +, gnome3 +, gtkspell3 +, shared-mime-info +, libgee +, libgit2-glib +, libsecret +, meson +, ninja +, python3 +, hicolor-icon-theme +, libdazzle +}: + +stdenv.mkDerivation rec { + pname = "gitg"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0npg4kqpwl992fgjd2cn3fh84aiwpdp9kd8z7rw2xaj2iazsm914"; + }; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + + substituteInPlace tests/libgitg/test-commit.vala --replace "/bin/bash" "${bash}/bin/bash" + ''; + + doCheck = true; + + enableParallelBuilding = true; + + buildInputs = [ + adwaita-icon-theme + glib + gsettings-desktop-schemas + gtk3 + gtksourceview + gtkspell3 + json-glib + libdazzle + libgee + libgit2-glib + libpeas + libsecret + libsoup + ]; + + nativeBuildInputs = [ + gobject-introspection + hicolor-icon-theme + gettext + meson + ninja + pkgconfig + python3 + vala + wrapGAppsHook + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Thumbnailers + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Gitg; + description = "GNOME GUI client to view git repositories"; + maintainers = with maintainers; [ domenkozar ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-applets/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-applets/default.nix new file mode 100644 index 00000000000..25e1347f1c9 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-applets/default.nix @@ -0,0 +1,88 @@ +{ stdenv +, fetchurl +, intltool +, itstool +, libxml2 +, libxslt +, pkgconfig +, gnome-panel +, gtk3 +, glib +, libwnck3 +, libgtop +, libnotify +, upower +, dbus-glib +, wirelesstools +, linuxPackages +, adwaita-icon-theme +, libgweather +, gucharmap +, gnome-settings-daemon +, tracker +, polkit +, gnome3 +}: + +let + pname = "gnome-applets"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "10kd19ymxl2z65121g90mx96m6vcn2a8a50g6a56prrdjsgbgia1"; + }; + + nativeBuildInputs = [ + intltool + itstool + pkgconfig + libxml2 + libxslt + ]; + + buildInputs = [ + gnome-panel + gtk3 + glib + libxml2 + libwnck3 + libgtop + libnotify + upower + dbus-glib + adwaita-icon-theme + libgweather + gucharmap + gnome-settings-daemon + tracker + polkit + wirelesstools + linuxPackages.cpupower + ]; + + enableParallelBuilding = true; + + doCheck = true; + + configureFlags = [ + "--with-libpanel-applet-dir=${placeholder "out"}/share/gnome-panel/applets" + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Applets for use with the GNOME panel"; + homepage = https://wiki.gnome.org/Projects/GnomeApplets; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-autoar/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-autoar/default.nix new file mode 100644 index 00000000000..c8d26988391 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-autoar/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, gnome3 +, gtk3, glib, gobject-introspection, libarchive +}: + +stdenv.mkDerivation rec { + pname = "gnome-autoar"; + version = "0.2.3"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-autoar/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "02i4zgqqqj56h7bcys6dz7n78m4nj2x4dv1ggjmnrk98n06xpsax"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gnome-autoar"; attrPath = "gnome3.gnome-autoar"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk3 glib ]; + propagatedBuildInputs = [ libarchive gobject-introspection ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.lgpl21; + description = "Library to integrate compressed files management with GNOME"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix new file mode 100644 index 00000000000..3cade7ccdf8 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-flashback/default.nix @@ -0,0 +1,158 @@ +{ stdenv +, autoreconfHook +, fetchurl +, gettext +, glib +, gnome-bluetooth +, gnome-desktop +, gnome-panel +, gnome-session +, gnome3 +, gsettings-desktop-schemas +, gtk3 +, ibus +, libcanberra-gtk3 +, libpulseaudio +, libxkbfile +, libxml2 +, pkgconfig +, polkit +, upower +, wrapGAppsHook +, writeTextFile +, writeShellScriptBin +, xkeyboard_config +}: + +let + pname = "gnome-flashback"; + version = "3.32.0"; + requiredComponents = wmName: "RequiredComponents=${wmName};gnome-flashback-init;gnome-flashback;gnome-panel;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Clipboard;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Mouse;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings;"; + gnome-flashback = stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0jfzr7vdmnxpxqqa38ni1p3c508xhlnxqpmmqshk3rvrf0afqn62"; + }; + + # make .desktop Execs absolute + postPatch = '' + patch -p0 <<END_PATCH + +++ data/applications/gnome-flashback-init.desktop.in + @@ -4 +4 @@ + -Exec=gnome-flashback --initialize + +Exec=$out/bin/gnome-flashback --initialize + +++ data/applications/gnome-flashback.desktop.in + @@ -4 +4 @@ + -Exec=gnome-flashback + +Exec=$out/bin/gnome-flashback + END_PATCH + ''; + + postInstall = '' + # Check that our expected RequiredComponents match the stock session files, but then don't install them. + # They can be installed using mkSessionForWm. + grep '${requiredComponents "metacity"}' $out/share/gnome-session/sessions/gnome-flashback-metacity.session || (echo "RequiredComponents have changed, please update gnome-flashback/default.nix."; false) + + rm -r $out/share/gnome-session + rm -r $out/share/xsessions + rm -r $out/libexec + ''; + + nativeBuildInputs = [ + autoreconfHook + gettext + libxml2 + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + glib + gnome-bluetooth + gnome-desktop + gsettings-desktop-schemas + gtk3 + ibus + libcanberra-gtk3 + libpulseaudio + libxkbfile + polkit + upower + xkeyboard_config + ]; + + doCheck = true; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + + mkSessionForWm = { wmName, wmLabel, wmCommand }: + let + wmApplication = writeTextFile { + name = "gnome-flashback-${wmName}-wm"; + destination = "/share/applications/${wmName}.desktop"; + text = '' + [Desktop Entry] + Type=Application + Encoding=UTF-8 + Name=${wmLabel} + Exec=${wmCommand} + NoDisplay=true + X-GNOME-WMName=${wmLabel} + X-GNOME-Autostart-Phase=WindowManager + X-GNOME-Provides=windowmanager + X-GNOME-Autostart-Notify=false + ''; + }; + + gnomeSession = writeTextFile { + name = "gnome-flashback-${wmName}-gnome-session"; + destination = "/share/gnome-session/sessions/gnome-flashback-${wmName}.session"; + text = '' + [GNOME Session] + Name=GNOME Flashback (${wmLabel}) + ${requiredComponents wmName} + ''; + }; + + executable = writeShellScriptBin "gnome-flashback-${wmName}" '' + if [ -z $XDG_CURRENT_DESKTOP ]; then + export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME" + fi + + export XDG_DATA_DIRS=${wmApplication}/share:${gnomeSession}/share:${gnome-flashback}/share:${gnome-panel}/share:$XDG_DATA_DIRS + + exec ${gnome-session}/bin/gnome-session --session=gnome-flashback-${wmName} "$@" + ''; + + in writeTextFile { + name = "gnome-flashback-${wmName}-xsession"; + destination = "/share/xsessions/gnome-flashback-${wmName}.desktop"; + text = '' + [Desktop Entry] + Name=GNOME Flashback (${wmLabel}) + Comment=This session logs you into GNOME Flashback with ${wmLabel} + Exec=${executable}/bin/gnome-flashback-${wmName} + TryExec=${wmCommand} + Type=Application + DesktopNames=GNOME-Flashback;GNOME; + ''; + }; + }; + + meta = with stdenv.lib; { + description = "GNOME 2.x-like session for GNOME 3"; + homepage = https://wiki.gnome.org/Projects/GnomeFlashback; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; + }; + in gnome-flashback diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix new file mode 100644 index 00000000000..ea9a79de40e --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-packagekit/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, pkgconfig, meson, ninja, gettext, gnome3, packagekit, polkit +, gtk3, systemd, wrapGAppsHook, desktop-file-utils, hicolor-icon-theme }: + +stdenv.mkDerivation rec { + pname = "gnome-packagekit"; + version = "3.32.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-packagekit/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "08rhsisdvx7pnx3rrg5v7c09jbw4grglkdj979gwl4a31j24zjsd"; + }; + + nativeBuildInputs = [ + pkgconfig meson ninja gettext wrapGAppsHook desktop-file-utils + hicolor-icon-theme # for setup-hook + ]; + + buildInputs = [ gtk3 packagekit systemd polkit ]; + + postPatch = '' + patchShebangs meson_post_install.sh + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-packagekit"; + attrPath = "gnome3.gnome-packagekit"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://www.freedesktop.org/software/PackageKit/; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + description = "Tools for installing software on the GNOME desktop using PackageKit"; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-panel/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-panel/default.nix new file mode 100644 index 00000000000..3031b2c1d78 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-panel/default.nix @@ -0,0 +1,100 @@ +{ stdenv +, fetchurl +, autoreconfHook +, dconf +, evolution-data-server +, gdm +, gettext +, glib +, gnome-desktop +, gnome-flashback +, gnome-menus +, gnome3 +, gtk3 +, itstool +, libgweather +, libsoup +, libwnck3 +, libxml2 +, pkgconfig +, polkit +, systemd +, wrapGAppsHook }: + +let + pname = "gnome-panel"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + outputs = [ "out" "dev" "man" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0a9zi1jb0b42zd6wx3251cnns9v1w0cbwasmrx9hsj1dsb9pjq3a"; + }; + + # make .desktop Exec absolute + postPatch = '' + patch -p0 <<END_PATCH + +++ gnome-panel/gnome-panel.desktop.in + @@ -7 +7 @@ + -Exec=gnome-panel + +Exec=$out/bin/gnome-panel + END_PATCH + ''; + + preFixup = '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${gnome-menus}/share:${gnome-flashback}/share" + --prefix XDG_CONFIG_DIRS : "${gnome-menus}/etc/xdg:${gnome-flashback}/etc/xdg" + ) + ''; + + nativeBuildInputs = [ + autoreconfHook + gettext + itstool + libxml2 + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + dconf + evolution-data-server + gdm + glib + gnome-desktop + gnome-menus + gtk3 + libgweather + libsoup + libwnck3 + polkit + systemd + ]; + + configureFlags = [ + "--enable-eds" + ]; + + enableParallelBuilding = true; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Component of Gnome Flashback that provides panels and default applets for the desktop"; + homepage = https://wiki.gnome.org/Projects/GnomePanel; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/default.nix new file mode 100644 index 00000000000..b1e9cde906c --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/default.nix @@ -0,0 +1,94 @@ +{ stdenv +, fetchgit +, autoreconfHook +, dbus-glib +, glib +, gnome-common +, gnome-desktop +, gnome3 +, gtk3 +, pkgconfig +, intltool +, pam +, systemd +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "gnome-screensaver"; + version = "3.6.1"; + + # the original package is deprecated and the Ubuntu version has a number of useful patches + src = fetchgit { + url = "https://git.launchpad.net/ubuntu/+source/gnome-screensaver"; + rev = "4f7b666131dec060a5aac9117f395ac522a627b4"; + sha256 = "15xqgcpm825cy3rm8pj00qlblq66svmh06lcw8qi74a3g0xcir87"; + }; + + # from debian/patches/series + patches = map (patch: "debian/patches/${patch}") [ + "00git_logind_check.patch" + "01_no_autostart.patch" + "03_fix_ltsp-fading.patch" + "05_dbus_service.patch" + "10_legacy_scrsvr_inhibit.patch" + "13_nvidia_gamma_fade_fallback.patch" + "14_no_fade_on_user_switch.patch" + "15_dont_crash_on_no_fade.patch" + "16_dont_crash_in_kvm.patch" + "17_remove_top_panel.patch" + "18_unity_dialog_layout.patch" + "24_use_user_settings.patch" + "25_fix_lock_command.patch" + "27_lightdm_switch_user.patch" + "28_blocking_return.patch" + "29_handle_expired_creds.patch" + # these two patches are ubuntu-specific + # "30_ubuntu-lock-on-suspend_gsetting.patch" + # "31_lock_screen_on_suspend.patch" + "32_input_sources_switcher.patch" + "move-not-nuke.patch" + "allow-replacement" + "libsystemd.patch" + "0001-gs-lock-plug-Disconnect-signal-handler-from-right-ob.patch" + "33_budgie_support.patch" + ] ++ [ ./fix-dbus-service-dir.patch ]; + + nativeBuildInputs = [ + autoreconfHook + intltool + wrapGAppsHook + gnome-common + pkgconfig + ]; + + buildInputs = [ + glib + gtk3 + gnome-desktop + dbus-glib + pam + systemd + ]; + + configureFlags = [ "--enable-locking" "--with-systemd=yes" ]; + + enableParallelBuilding = true; + + doCheck = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Component of Gnome Flashback that provides screen locking"; + homepage = https://wiki.gnome.org/Projects/GnomeScreensaver; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/fix-dbus-service-dir.patch b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/fix-dbus-service-dir.patch new file mode 100644 index 00000000000..81e037ee690 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-screensaver/fix-dbus-service-dir.patch @@ -0,0 +1,11 @@ +--- a/configure.ac 2019-01-20 20:28:01.309231507 +0100 ++++ b/configure.ac 2019-01-20 20:31:54.927978927 +0100 +@@ -137,7 +137,7 @@ + + # Find out where the session service file goes + # The sad sed hack is recomended by section 27.10 of the automake manual. +-DBUS_SESSION_SERVICE_DIR=`pkg-config --variable session_bus_services_dir dbus-1 | sed -e 's,/usr/share,${datarootdir},g'` ++DBUS_SESSION_SERVICE_DIR=`pkg-config --variable session_bus_services_dir dbus-1 --define-variable 'datadir=${datadir}'` + AC_SUBST(DBUS_SESSION_SERVICE_DIR) + + dnl ---------------------------------------------------------------------------
\ No newline at end of file diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-tweaks/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-tweaks/default.nix new file mode 100644 index 00000000000..7a54114d2db --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gnome-tweaks/default.nix @@ -0,0 +1,54 @@ +{ stdenv, meson, ninja, gettext, fetchurl +, pkgconfig, gtk3, glib, libsoup, gsettings-desktop-schemas +, itstool, libxml2, python3Packages +, gnome3, gdk-pixbuf, libnotify, gobject-introspection, wrapGAppsHook }: + +let + pname = "gnome-tweaks"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "037r35cw34ifcs676fq9n2v4mh1nkqx0qk474bznf18mr6r62h55"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext itstool libxml2 wrapGAppsHook python3Packages.python + ]; + buildInputs = [ + gtk3 glib gsettings-desktop-schemas + gdk-pixbuf gnome3.adwaita-icon-theme + libnotify gnome3.gnome-shell python3Packages.pygobject3 + libsoup gnome3.gnome-settings-daemon gnome3.nautilus + gnome3.mutter gnome3.gnome-desktop gobject-introspection + gnome3.nautilus + # Makes it possible to select user themes through the `user-theme` extension + gnome3.gnome-shell-extensions + ]; + + postPatch = '' + patchShebangs meson-postinstall.py + ''; + + preFixup = '' + gappsWrapperArgs+=( + --prefix PYTHONPATH : "$out/${python3Packages.python.sitePackages}:$PYTHONPATH") + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/action/show/Apps/GnomeTweakTool; + description = "A tool to customize advanced GNOME 3 options"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/default.nix new file mode 100644 index 00000000000..46ca01c1a1a --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/default.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchurl, autoreconfHook, pkgconfig, vala, glib, gjs, mutter +, pango, gtk3, gnome3, dbus, clutter, appstream-glib, wrapGAppsHook, gobject-introspection }: + +stdenv.mkDerivation rec { + version = "3.32.0"; + pname = "gpaste"; + + src = fetchurl { + url = "https://github.com/Keruspe/GPaste/archive/v${version}.tar.gz"; + sha256 = "1fvpl9vqmrr1w22hm0ybabn9pjfii5qj9ghnc2jzihgrn2h486v6"; + }; + + patches = [ + ./fix-paths.patch + ]; + + # TODO: switch to substituteAll with placeholder + # https://github.com/NixOS/nix/issues/1846 + postPatch = '' + substituteInPlace src/gnome-shell/extension.js \ + --subst-var-by typelibPath "${placeholder "out"}/lib/girepository-1.0" + substituteInPlace src/gnome-shell/prefs.js \ + --subst-var-by typelibPath "${placeholder "out"}/lib/girepository-1.0" + substituteInPlace src/libgpaste/settings/gpaste-settings.c \ + --subst-var-by gschemasCompiled ${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"} + ''; + + nativeBuildInputs = [ + autoreconfHook pkgconfig vala appstream-glib wrapGAppsHook + ]; + buildInputs = [ + glib gjs mutter gtk3 dbus + clutter pango gobject-introspection + ]; + + configureFlags = [ + "--with-controlcenterdir=${placeholder "out"}/share/gnome-control-center/keybindings" + "--with-dbusservicesdir=${placeholder "out"}/share/dbus-1/services" + "--with-systemduserunitdir=${placeholder "out"}/etc/systemd/user" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://github.com/Keruspe/GPaste; + description = "Clipboard management system with GNOME3 integration"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch new file mode 100644 index 00000000000..c8a3fad2272 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch @@ -0,0 +1,37 @@ +--- a/src/gnome-shell/extension.js ++++ b/src/gnome-shell/extension.js +@@ -6,6 +6,8 @@ + + const Config = imports.misc.config; + ++imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@'); ++ + imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION; + imports.gi.versions.GLib = '2.0'; + imports.gi.versions.GPaste = '1.0'; +--- a/src/gnome-shell/prefs.js ++++ b/src/gnome-shell/prefs.js +@@ -6,6 +6,8 @@ + + const Gettext = imports.gettext; + ++imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@'); ++ + const { GPaste } = imports.gi; + + const ExtensionUtils = imports.misc.extensionUtils; +--- a/src/libgpaste/settings/gpaste-settings.c ++++ b/src/libgpaste/settings/gpaste-settings.c +@@ -1013,7 +1013,11 @@ + } + else + { +- return g_settings_new (G_PASTE_SETTINGS_NAME); ++ // library used by introspection requires schemas but we cannot set XDG_DATA_DIRS for the library ++ GSettingsSchemaSource *schema_source = g_settings_schema_source_new_from_directory ("@gschemasCompiled@", NULL, FALSE, NULL); ++ g_autoptr (GSettingsSchema) schema = g_settings_schema_source_lookup (schema_source, G_PASTE_SETTINGS_NAME, FALSE); ++ g_settings_schema_source_unref (schema_source); ++ return g_settings_new_full (schema, NULL, NULL); + } + } + diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/gtkhtml/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/gtkhtml/default.nix new file mode 100644 index 00000000000..a607a6eb6a0 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/gtkhtml/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, intltool +, gnome3, enchant, isocodes, gsettings-desktop-schemas }: + +stdenv.mkDerivation rec { + pname = "gtkhtml"; + version = "4.10.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gtkhtml/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "ca3b6424fb2c7ac5d9cb8fdafb69318fa2e825c9cf6ed17d1e38d9b29e5606c3"; + }; + + passthru = { + updateScript = gnome3.updateScript { packageName = "gtkhtml"; attrPath = "gnome3.gtkhtml"; }; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk3 intltool gnome3.adwaita-icon-theme + gsettings-desktop-schemas ]; + + propagatedBuildInputs = [ enchant isocodes ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/libgnome-games-support/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/libgnome-games-support/default.nix new file mode 100644 index 00000000000..3776a9adbf2 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/libgnome-games-support/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, pkgconfig, glib, gtk3, libgee, intltool, gnome3 +, libintl }: + +let + pname = "libgnome-games-support"; + version = "1.4.3"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0g6a1vvhrbs0pfnzjfg3lgqvppwkydn6j3dn713zhrjhma9pljkh"; + }; + + nativeBuildInputs = [ pkgconfig intltool ]; + buildInputs = [ libintl ]; + propagatedBuildInputs = [ + # Required by libgnome-games-support-1.pc + glib gtk3 libgee + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Small library intended for internal use by GNOME Games, but it may be used by others"; + homepage = https://wiki.gnome.org/Apps/Games; + license = licenses.lgpl3; + maintainers = gnome3.maintainers; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/default.nix new file mode 100644 index 00000000000..8b1d2b05df1 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/default.nix @@ -0,0 +1,70 @@ +{ stdenv +, fetchurl +, gettext +, glib +, gnome3 +, gsettings-desktop-schemas +, gtk3 +, libcanberra-gtk3 +, libgtop +, libstartup_notification +, libxml2 +, pkgconfig +, substituteAll +, wrapGAppsHook +, zenity }: + +let + pname = "metacity"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "177dmb1smizfgkddk49n2kr90graj9r6xw5hg3aq0y2qqg6v4rcg"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit zenity; + }) + ]; + + nativeBuildInputs = [ + gettext + libxml2 + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + glib + gsettings-desktop-schemas + gtk3 + libcanberra-gtk3 + libgtop + libstartup_notification + zenity + ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + doCheck = true; + + meta = with stdenv.lib; { + description = "Window manager used in Gnome Flashback"; + homepage = https://wiki.gnome.org/Projects/Metacity; + license = licenses.gpl2; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/fix-paths.patch b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/fix-paths.patch new file mode 100644 index 00000000000..ff3a244e67d --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/metacity/fix-paths.patch @@ -0,0 +1,11 @@ +--- a/src/core/util.c ++++ b/src/core/util.c +@@ -424,7 +424,7 @@ + g_slist_length (columns)*2 + + g_slist_length (entries))); + +- argvl[i++] = "zenity"; ++ argvl[i++] = "@zenity@/bin/zenity"; + argvl[i++] = type; + argvl[i++] = "--display"; + argvl[i++] = display; diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/nautilus-python/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/nautilus-python/default.nix new file mode 100644 index 00000000000..4c2a551b1c7 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/nautilus-python/default.nix @@ -0,0 +1,62 @@ +{ stdenv +, fetchurl +, pkgconfig +, which +, gtk-doc +, docbook_xsl +, docbook_xml_dtd_412 +, python3 +, ncurses +, nautilus +, gtk3 +, gnome3 +}: + +stdenv.mkDerivation rec { + pname = "nautilus-python"; + version = "1.2.3"; + + outputs = [ "out" "dev" "doc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "161050sx3sdxqcpjkjcpf6wl4kx0jydihga7mcvrj9c2f8ly0g07"; + }; + + nativeBuildInputs = [ + pkgconfig + which + gtk-doc + docbook_xsl + docbook_xml_dtd_412 + ]; + + buildInputs = [ + python3 + ncurses # required by python3 + python3.pkgs.pygobject3 + nautilus + gtk3 # required by libnautilus-extension + ]; + + makeFlags = [ + "PYTHON_LIB_LOC=${python3}/lib" + ]; + + PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0"; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + attrPath = "gnome3.${pname}"; + }; + }; + + meta = with stdenv.lib; { + description = "Python bindings for the Nautilus Extension API"; + homepage = https://wiki.gnome.org/Projects/NautilusPython; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/misc/pomodoro/default.nix b/nixpkgs/pkgs/desktops/gnome-3/misc/pomodoro/default.nix new file mode 100644 index 00000000000..fcbceab24ea --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/misc/pomodoro/default.nix @@ -0,0 +1,73 @@ +{ stdenv +, fetchFromGitHub +, autoconf-archive +, appstream-glib +, pkgconfig +, wrapGAppsHook +, libcanberra +, gst_all_1 +, vala +, gtk3 +, gom +, sqlite +, libxml2 +, autoreconfHook +, glib +, gobject-introspection +, libpeas +, gnome-shell +, gsettings-desktop-schemas +, adwaita-icon-theme +, gettext +}: + +stdenv.mkDerivation rec { + pname = "gnome-shell-pomodoro"; + version = "0.15.1"; + + src = fetchFromGitHub { + owner = "codito"; + repo = "gnome-pomodoro"; + rev = version; + sha256 = "0nmgd122gsfka0p50mila88iwrzckq2r36a3h20lswn5qkn321i1"; + }; + + nativeBuildInputs = [ + appstream-glib + autoconf-archive + autoreconfHook + gettext + gobject-introspection + libxml2 + pkgconfig + vala + wrapGAppsHook + ]; + + buildInputs = [ + adwaita-icon-theme + glib + gnome-shell + gom + gsettings-desktop-schemas + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gstreamer + gtk3 + libcanberra + libpeas + sqlite + ]; + + meta = with stdenv.lib; { + homepage = https://gnomepomodoro.org/; + description = "Time management utility for GNOME based on the pomodoro technique"; + longDescription = '' + This GNOME utility helps to manage time according to Pomodoro Technique. + It intends to improve productivity and focus by taking short breaks. + ''; + maintainers = with maintainers; [ worldofpeace ]; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/desktops/gnome-3/update.nix b/nixpkgs/pkgs/desktops/gnome-3/update.nix new file mode 100644 index 00000000000..f42b6723950 --- /dev/null +++ b/nixpkgs/pkgs/desktops/gnome-3/update.nix @@ -0,0 +1,16 @@ +{ stdenv, lib, writeScript, python3, common-updater-scripts }: +{ packageName, attrPath ? packageName, versionPolicy ? "odd-unstable" }: + +let + python = python3.withPackages (p: [ p.requests ]); + updateScript = writeScript "gnome-update-script" '' + #!${stdenv.shell} + set -o errexit + package_name="$1" + attr_path="$2" + version_policy="$3" + PATH=${lib.makeBinPath [ common-updater-scripts python ]} + latest_tag=$(python "${./find-latest-version.py}" "$package_name" "$version_policy" "stable") + update-source-version "$attr_path" "$latest_tag" + ''; +in [ updateScript packageName attrPath versionPolicy ] |