diff options
Diffstat (limited to 'pkgs/desktops/gnome/apps')
26 files changed, 2036 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome/apps/accerciser/default.nix b/pkgs/desktops/gnome/apps/accerciser/default.nix new file mode 100644 index 0000000000000..d81b846619417 --- /dev/null +++ b/pkgs/desktops/gnome/apps/accerciser/default.nix @@ -0,0 +1,74 @@ +{ lib +, fetchurl +, pkg-config +, gnome +, gtk3 +, wrapGAppsHook +, gobject-introspection +, itstool +, libxml2 +, python3 +, at-spi2-core +, dbus +, gettext +, libwnck3 +, adwaita-icon-theme +}: + +python3.pkgs.buildPythonApplication rec { + pname = "accerciser"; + version = "3.38.0"; + + format = "other"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0fd9vv2abd2if2qj4nlfy7mpd7rc4sx18zhmxd5ijlnfhkpggbp5"; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection # For setup hook + itstool + libxml2 + pkg-config + dbus + wrapGAppsHook + ]; + + buildInputs = [ + adwaita-icon-theme + at-spi2-core + gtk3 + libwnck3 + ]; + + propagatedBuildInputs = with python3.pkgs; [ + ipython + pyatspi + pycairo + pygobject3 + setuptools + xlib + ]; + + # Strict deps breaks accerciser + # and https://github.com/NixOS/nixpkgs/issues/56943 + strictDeps = false; + + passthru = { + updateScript = gnome.updateScript { + packageName = "accerciser"; + attrPath = "gnome.accerciser"; + versionPolicy = "odd-unstable"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Accerciser"; + description = "Interactive Python accessibility explorer"; + maintainers = teams.gnome.members; + license = licenses.bsd3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/cheese/default.nix b/pkgs/desktops/gnome/apps/cheese/default.nix new file mode 100644 index 0000000000000..d0a9d6aaabb12 --- /dev/null +++ b/pkgs/desktops/gnome/apps/cheese/default.nix @@ -0,0 +1,121 @@ +{ lib +, stdenv +, gettext +, fetchurl +, fetchpatch +, wrapGAppsHook +, gnome-video-effects +, libcanberra-gtk3 +, pkg-config +, gtk3 +, glib +, clutter-gtk +, clutter-gst +, gst_all_1 +, itstool +, vala +, docbook_xml_dtd_43 +, docbook-xsl-nons +, appstream-glib +, libxslt +, gtk-doc +, adwaita-icon-theme +, librsvg +, totem +, gdk-pixbuf +, gnome +, gnome-desktop +, libxml2 +, meson +, ninja +, dbus +, python3 +}: + +stdenv.mkDerivation rec { + pname = "cheese"; + version = "3.38.0"; + + outputs = [ "out" "man" "devdoc" ]; + + src = fetchurl { + url = "mirror://gnome/sources/cheese/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0vyim2avlgq3a48rgdfz5g21kqk11mfb53b2l883340v88mp7ll8"; + }; + + patches = [ + # Fix build with latest Vala or GLib + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/cheese/commit/7cf6268e54620bbbe5e6e61800c50fb0cb4bea57.patch"; + sha256 = "WJgGNrpZLTahe7Sxr8HdTl+4Mf4VcmJb6DdiInlDcT4="; + }) + ]; + + nativeBuildInputs = [ + appstream-glib + docbook_xml_dtd_43 + docbook-xsl-nons + gettext + gtk-doc + itstool + libxml2 + libxslt # for xsltproc + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + glib # for glib-compile-schemas + ]; + + buildInputs = [ + adwaita-icon-theme + clutter-gst + clutter-gtk + dbus + gdk-pixbuf + glib + gnome-desktop + gnome-video-effects + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gstreamer + gtk3 + libcanberra-gtk3 + librsvg + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + 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" + ) + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = "cheese"; + attrPath = "gnome.cheese"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Cheese"; + description = "Take photos and videos with your webcam, with fun graphical effects"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/file-roller/default.nix b/pkgs/desktops/gnome/apps/file-roller/default.nix new file mode 100644 index 0000000000000..6af1994fb0609 --- /dev/null +++ b/pkgs/desktops/gnome/apps/file-roller/default.nix @@ -0,0 +1,48 @@ +{ lib, stdenv, fetchurl, glib, gtk3, meson, ninja, pkg-config, gnome, gettext, itstool, libxml2, libarchive +, file, json-glib, python3, wrapGAppsHook, desktop-file-utils, libnotify, nautilus, glibcLocales +, unzip, cpio }: + +stdenv.mkDerivation rec { + pname = "file-roller"; + version = "3.40.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "039w1dcpa5ypmv6sm634alk9vbcdkyvy595vkh5gn032jsiqca2a"; + }; + + LANG = "en_US.UTF-8"; # postinstall.py + + nativeBuildInputs = [ meson ninja gettext itstool pkg-config libxml2 python3 wrapGAppsHook glibcLocales desktop-file-utils ]; + + buildInputs = [ glib gtk3 json-glib libarchive file gnome.adwaita-icon-theme libnotify nautilus cpio ]; + + 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 + ''; + + postFixup = '' + # Workaround because of https://gitlab.gnome.org/GNOME/file-roller/issues/40 + wrapProgram "$out/bin/file-roller" \ + --prefix PATH : ${lib.makeBinPath [ unzip ]} + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = "file-roller"; + attrPath = "gnome.file-roller"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/FileRoller"; + description = "Archive manager for the GNOME desktop environment"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/pkgs/desktops/gnome/apps/gedit/default.nix b/pkgs/desktops/gnome/apps/gedit/default.nix new file mode 100644 index 0000000000000..a8479e9cdcad6 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gedit/default.nix @@ -0,0 +1,81 @@ +{ lib, stdenv +, meson +, fetchurl +, python3 +, pkg-config +, gtk3 +, glib +, adwaita-icon-theme +, libpeas +, gtksourceview4 +, gsettings-desktop-schemas +, wrapGAppsHook +, ninja +, libsoup +, tepl +, gnome +, gspell +, perl +, itstool +, desktop-file-utils +, vala +}: + +stdenv.mkDerivation rec { + pname = "gedit"; + version = "40.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gedit/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "149ngl9qw6h59546lir1pa7hvw23ppsnqlj9mfqphmmn5jl99qsm"; + }; + + nativeBuildInputs = [ + desktop-file-utils + itstool + meson + ninja + perl + pkg-config + python3 + vala + wrapGAppsHook + ]; + + buildInputs = [ + adwaita-icon-theme + glib + gsettings-desktop-schemas + gspell + gtk3 + gtksourceview4 + libpeas + libsoup + tepl + ]; + + 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 = gnome.updateScript { + packageName = "gedit"; + attrPath = "gnome.gedit"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Gedit"; + description = "Official text editor of the GNOME desktop environment"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.unix; + }; +} diff --git a/pkgs/desktops/gnome/apps/ghex/default.nix b/pkgs/desktops/gnome/apps/ghex/default.nix new file mode 100644 index 0000000000000..500e60feb75c9 --- /dev/null +++ b/pkgs/desktops/gnome/apps/ghex/default.nix @@ -0,0 +1,84 @@ +{ lib, stdenv +, fetchurl +, fetchpatch +, pkg-config +, meson +, ninja +, python3 +, gnome +, 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/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1h1pjrr9wynclfykizqd78dbi785wjz6b63p31k87kjvzy8w3nf2"; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + itstool + meson + ninja + pkg-config + 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 = gnome.updateScript { + packageName = "ghex"; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Ghex"; + description = "Hex editor for GNOME desktop environment"; + platforms = platforms.unix; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-books/default.nix b/pkgs/desktops/gnome/apps/gnome-books/default.nix new file mode 100644 index 0000000000000..0e8b322cf5ed7 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-books/default.nix @@ -0,0 +1,86 @@ +{ lib, stdenv +, meson +, ninja +, gettext +, fetchurl +, evince +, gjs +, pkg-config +, gtk3 +, glib +, tracker +, tracker-miners +, libxslt +, webkitgtk +, gnome-desktop +, libgepub +, gnome +, gdk-pixbuf +, gsettings-desktop-schemas +, adwaita-icon-theme +, docbook-xsl-nons +, docbook_xml_dtd_42 +, desktop-file-utils +, python3 +, gobject-introspection +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "gnome-books"; + version = "40.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "0c41l8m2di8h39bmk2fnhpwglwp6qhljmwqqbihzp4ay9976zrc5"; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + gettext + libxslt + desktop-file-utils + docbook-xsl-nons + 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 = gnome.updateScript { + packageName = "gnome-books"; + attrPath = "gnome.gnome-books"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Books"; + description = "An e-book manager application for GNOME"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome/apps/gnome-boxes/default.nix new file mode 100644 index 0000000000000..605275be7ded7 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-boxes/default.nix @@ -0,0 +1,145 @@ +{ lib, stdenv +, fetchurl +, meson +, ninja +, wrapGAppsHook +, pkg-config +, gettext +, itstool +, libvirt-glib +, glib +, gobject-introspection +, libxml2 +, gtk3 +, gtksourceview4 +, gtk-vnc +, freerdp +, libvirt +, spice-gtk +, python3 +, appstream-glib +, spice-protocol +, libhandy +, libsoup +, libosinfo +, systemd +, tracker +, tracker-miners +, vala +, libcap +, yajl +, gmp +, gdbm +, cyrus_sasl +, gnome +, librsvg +, desktop-file-utils +, mtools +, cdrkit +, libcdio +, libusb1 +, libarchive +, acl +, libgudev +, libsecret +, libcap_ng +, numactl +, libapparmor +, json-glib +, webkitgtk +, vte +, glib-networking +}: + +stdenv.mkDerivation rec { + pname = "gnome-boxes"; + version = "40.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "seKPLH+3a/T7uGLQ1S6BG5TL6f8W8GdAiWRWhpCILvg="; + }; + + doCheck = true; + + nativeBuildInputs = [ + appstream-glib # for appstream-util + desktop-file-utils + gettext + gobject-introspection + itstool + meson + ninja + pkg-config + python3 + vala + wrapGAppsHook + ]; + + # Required for USB redirection PolicyKit rules file + propagatedUserEnvPkgs = [ + spice-gtk + ]; + + buildInputs = [ + acl + cyrus_sasl + freerdp + gdbm + glib + glib-networking + gmp + gnome.adwaita-icon-theme + gtk-vnc + gtk3 + gtksourceview4 + json-glib + libapparmor + libarchive + libcap + libcap_ng + libgudev + libhandy + libosinfo + librsvg + libsecret + libsoup + libusb1 + libvirt + libvirt-glib + libxml2 + numactl + spice-gtk + spice-protocol + systemd + tracker + tracker-miners + vte + webkitgtk + yajl + ]; + + preFixup = '' + gappsWrapperArgs+=(--prefix PATH : "${lib.makeBinPath [ mtools cdrkit libcdio ]}") + ''; + + postPatch = '' + chmod +x build-aux/post_install.py # patchShebangs requires executable file + patchShebangs build-aux/post_install.py + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + description = "Simple GNOME 3 application to access remote or virtual systems"; + homepage = "https://wiki.gnome.org/Apps/Boxes"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = teams.gnome.members; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-calendar/default.nix b/pkgs/desktops/gnome/apps/gnome-calendar/default.nix new file mode 100644 index 0000000000000..3e80575a33db2 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-calendar/default.nix @@ -0,0 +1,84 @@ +{ lib, stdenv +, fetchurl +, meson +, ninja +, pkg-config +, wrapGAppsHook +, libdazzle +, libgweather +, geoclue2 +, geocode-glib +, python3 +, gettext +, libxml2 +, gnome +, gtk3 +, evolution-data-server +, libsoup +, glib +, gnome-online-accounts +, gsettings-desktop-schemas +, libhandy +, adwaita-icon-theme +}: + +stdenv.mkDerivation rec { + pname = "gnome-calendar"; + version = "40.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "0d74hng9jdmwdcjgj4xfrcink2gwkbp1k1mad4wanaf7q31c6f38"; + }; + + patches = [ + # https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/84 + # A refactor has caused the PR patch to drift enough to need rebasing + ./gtk_image_reset_crash.patch + ]; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + gettext + libxml2 + wrapGAppsHook + python3 + ]; + + buildInputs = [ + gtk3 + evolution-data-server + libsoup + glib + gnome-online-accounts + libdazzle + libgweather + geoclue2 + geocode-glib + gsettings-desktop-schemas + adwaita-icon-theme + libhandy + ]; + + postPatch = '' + chmod +x build-aux/meson/meson_post_install.py # patchShebangs requires executable file + patchShebangs build-aux/meson/meson_post_install.py + ''; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Calendar"; + description = "Simple and beautiful calendar application for GNOME"; + maintainers = teams.gnome.members; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-calendar/gtk_image_reset_crash.patch b/pkgs/desktops/gnome/apps/gnome-calendar/gtk_image_reset_crash.patch new file mode 100644 index 0000000000000..5065295b57b77 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-calendar/gtk_image_reset_crash.patch @@ -0,0 +1,17 @@ +diff --git a/src/gui/views/gcal-year-view.c b/src/gui/views/gcal-year-view.c +index ac32a8f9..532425c1 100644 +--- a/src/gui/views/gcal-year-view.c ++++ b/src/gui/views/gcal-year-view.c +@@ -2158,7 +2158,11 @@ update_weather (GcalYearView *self) + if (!updated) + { + gtk_label_set_text (self->temp_label, ""); +- gtk_image_clear (self->weather_icon); ++ /* FIXME: This should never be NULL, but it somehow is. ++ * https://gitlab.gnome.org/GNOME/gnome-calendar/issues/299 ++ */ ++ if (self->weather_icon != NULL) ++ gtk_image_clear (self->weather_icon); + } + } + diff --git a/pkgs/desktops/gnome/apps/gnome-characters/default.nix b/pkgs/desktops/gnome/apps/gnome-characters/default.nix new file mode 100644 index 0000000000000..5cbd58d602a9b --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-characters/default.nix @@ -0,0 +1,88 @@ +{ lib +, stdenv +, fetchurl +, meson +, ninja +, pkg-config +, gettext +, gnome +, glib +, gtk3 +, pango +, wrapGAppsHook +, python3 +, gobject-introspection +, gjs +, libunistring +, libhandy +, gsettings-desktop-schemas +, adwaita-icon-theme +, gnome-desktop +}: + +stdenv.mkDerivation rec { + pname = "gnome-characters"; + version = "40.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-characters/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "0z2xa4w921bzpzj6gv88pvbrijcnnwni6jxynwz0ybaravyzaqha"; + }; + + nativeBuildInputs = [ + gettext + gobject-introspection + meson + ninja + pkg-config + python3 + wrapGAppsHook + ]; + + + buildInputs = [ + adwaita-icon-theme + gjs + glib + gnome-desktop # for typelib + gsettings-desktop-schemas + gtk3 + libunistring + libhandy + 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 + + wrapGApp "$file" + done + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Characters"; + description = "Simple utility application to find and insert unusual characters"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-clocks/default.nix b/pkgs/desktops/gnome/apps/gnome-clocks/default.nix new file mode 100644 index 0000000000000..d9a749a24b093 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-clocks/default.nix @@ -0,0 +1,87 @@ +{ lib, stdenv +, fetchurl +, meson +, ninja +, gettext +, pkg-config +, 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 +, gnome +, gdk-pixbuf +, geoclue2 +, libgweather +, libhandy +}: + +stdenv.mkDerivation rec { + pname = "gnome-clocks"; + version = "40.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-clocks/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "02d3jg46sn8d9gd4dsaly22gg5vkbz2gpq4pmwpvncb4rsqk7sn2"; + }; + + nativeBuildInputs = [ + vala + meson + ninja + pkg-config + 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 + libhandy + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Fallback sound theme + --prefix XDG_DATA_DIRS : "${sound-theme-freedesktop}/share" + ) + ''; + + doCheck = true; + + passthru = { + updateScript = gnome.updateScript { + packageName = "gnome-clocks"; + attrPath = "gnome.gnome-clocks"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Clocks"; + description = "Clock application designed for GNOME 3"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-connections/default.nix b/pkgs/desktops/gnome/apps/gnome-connections/default.nix new file mode 100644 index 0000000000000..abdf751baeb1d --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-connections/default.nix @@ -0,0 +1,75 @@ +{ lib, stdenv +, fetchurl +, gnome +, meson +, ninja +, vala +, pkg-config +, glib +, gtk3 +, python3 +, libxml2 +, gtk-vnc +, gettext +, desktop-file-utils +, appstream-glib +, gobject-introspection +, freerdp +, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + pname = "gnome-connections"; + version = "3.38.1"; + + src = fetchurl { + url = "mirror://gnome/sources/connections/${lib.versions.majorMinor version}/connections-${version}.tar.xz"; + hash = "sha256-5c7uBFkh9Vsw6bWWUDjNTMDrrFqI5JEgYlsWpfyuTpA="; + }; + + nativeBuildInputs = [ + desktop-file-utils + gettext + glib # glib-compile-resources + meson + appstream-glib + ninja + pkg-config + python3 + vala + wrapGAppsHook + + # for gtk-frdp subproject + gobject-introspection + ]; + + buildInputs = [ + glib + gtk-vnc + gtk3 + libxml2 + + # for gtk-frdp subproject + freerdp + ]; + + postPatch = '' + chmod +x build-aux/meson/postinstall.py + patchShebangs build-aux/meson/postinstall.py + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = "connections"; + attrPath = "gnome-connections"; + }; + }; + + meta = with lib; { + homepage = "https://gitlab.gnome.org/GNOME/connections"; + description = "A remote desktop client for the GNOME desktop environment"; + maintainers = teams.gnome.members; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-documents/default.nix b/pkgs/desktops/gnome/apps/gnome-documents/default.nix new file mode 100644 index 0000000000000..3f7ac34696bfe --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-documents/default.nix @@ -0,0 +1,127 @@ +{ lib, stdenv +, meson +, ninja +, gettext +, fetchurl +, fetchpatch +, evince +, gjs +, pkg-config +, gtk3 +, glib +, tracker +, tracker-miners +, itstool +, libxslt +, webkitgtk +, libgdata +, gnome-desktop +, libzapojit +, libgepub +, gnome +, gdk-pixbuf +, libsoup +, docbook_xsl +, docbook_xml_dtd_42 +, gobject-introspection +, inkscape +, poppler_utils +, desktop-file-utils +, wrapGAppsHook +, python3 +, appstream-glib +, gsettings-desktop-schemas +}: + +stdenv.mkDerivation rec { + pname = "gnome-documents"; + version = "3.34.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-documents/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1qph567mapg3s1a26k7b8y57g9bklhj2mh8xm758z9zkms20xafq"; + }; + + patches = [ + # Fix inkscape 1.0 usage + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gnome-documents/commit/0f55a18c40a61e6ae4ec4652604775f139892350.diff"; + sha256 = "1yrisq69dl1dn7639drlbza20a5ic6xg04ksr9iq4sxdx3xj3d8s"; + }) + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + gettext + itstool + libxslt + desktop-file-utils + docbook_xsl + docbook_xml_dtd_42 + wrapGAppsHook + python3 + appstream-glib + + # building getting started + inkscape + poppler_utils + ]; + + buildInputs = [ + gtk3 + glib + gsettings-desktop-schemas + gdk-pixbuf + gnome.adwaita-icon-theme + evince + libsoup + webkitgtk + gjs + gobject-introspection + tracker + tracker-miners + libgdata + gnome-desktop + libzapojit + libgepub + ]; + + doCheck = true; + + mesonFlags = [ + "-Dgetting_started=true" + ]; + + 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" + ''; + + preConfigure = + # To silence inkscape warnings regarding profile directory + '' + export INKSCAPE_PROFILE_DIR="$(mktemp -d)" + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + broken = true; # Tracker 3 not supported and it cannot start Tracker 2. + homepage = "https://wiki.gnome.org/Apps/Documents"; + description = "Document manager application designed to work with GNOME 3"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-logs/default.nix b/pkgs/desktops/gnome/apps/gnome-logs/default.nix new file mode 100644 index 0000000000000..da06eb4404c11 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-logs/default.nix @@ -0,0 +1,86 @@ +{ lib, stdenv +, fetchurl +, fetchpatch +, meson +, ninja +, pkg-config +, gnome +, glib +, gtk3 +, wrapGAppsHook +, gettext +, itstool +, libxml2 +, libxslt +, docbook_xsl +, docbook_xml_dtd_43 +, systemd +, python3 +, gsettings-desktop-schemas +}: + +stdenv.mkDerivation rec { + pname = "gnome-logs"; + version = "3.36.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-logs/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0w1nfdxbv3f0wnhmdy21ydvr4swfc108hypda561p7l9lrhnnxj4"; + }; + + patches = [ + # https://gitlab.gnome.org/GNOME/gnome-logs/-/issues/52 + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gnome-logs/-/commit/b42defceefc775220b525f665a3b662ab9593b81.patch"; + sha256 = "1s0zscmhwy7r0xff17wh8ik8x9xw1vrkipw5vl5i770bxnljps8n"; + }) + ]; + + nativeBuildInputs = [ + python3 + meson + ninja + pkg-config + wrapGAppsHook + gettext + itstool + libxml2 + libxslt + docbook_xsl + docbook_xml_dtd_43 + ]; + + buildInputs = [ + glib + gtk3 + systemd + gsettings-desktop-schemas + gnome.adwaita-icon-theme + ]; + + mesonFlags = [ + "-Dman=true" + ]; + + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + doCheck = true; + + passthru = { + updateScript = gnome.updateScript { + packageName = "gnome-logs"; + attrPath = "gnome.gnome-logs"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Logs"; + description = "A log viewer for the systemd journal"; + maintainers = teams.gnome.members; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-maps/default.nix b/pkgs/desktops/gnome/apps/gnome-maps/default.nix new file mode 100644 index 0000000000000..2818215a4ff9c --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-maps/default.nix @@ -0,0 +1,104 @@ +{ lib, stdenv +, fetchurl +, meson +, ninja +, gettext +, python3 +, pkg-config +, gnome +, gtk3 +, gobject-introspection +, gdk-pixbuf +, librsvg +, libgweather +, geoclue2 +, wrapGAppsHook +, folks +, libchamplain +, gfbgraph +, libsoup +, gsettings-desktop-schemas +, webkitgtk +, gjs +, libgee +, libhandy +, geocode-glib +, evolution-data-server +, gnome-online-accounts +}: + +stdenv.mkDerivation rec { + pname = "gnome-maps"; + version = "40.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "sha256-mAXUwFs6NpV0bTdisoFr/+bZ19VuF7y7nZ1B3C0CYxo="; + }; + + doCheck = true; + + nativeBuildInputs = [ + gettext + meson + ninja + pkg-config + python3 + wrapGAppsHook + ]; + + buildInputs = [ + evolution-data-server + folks + gdk-pixbuf + geoclue2 + geocode-glib + gfbgraph + gjs + gnome-online-accounts + gnome.adwaita-icon-theme + gobject-introspection + gsettings-desktop-schemas + gtk3 + libchamplain + libgee + libgweather + libhandy + librsvg + libsoup + 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" + ''; + + preCheck = '' + # “time.js” included by “timeTest” and “translationsTest” depends on “org.gnome.desktop.interface” schema. + export XDG_DATA_DIRS="${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:$XDG_DATA_DIRS" + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Maps"; + description = "A map application for GNOME 3"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-music/default.nix b/pkgs/desktops/gnome/apps/gnome-music/default.nix new file mode 100644 index 0000000000000..51e3d5a9cdf37 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-music/default.nix @@ -0,0 +1,113 @@ +{ lib +, meson +, ninja +, gettext +, fetchurl +, gdk-pixbuf +, tracker +, libxml2 +, python3 +, libnotify +, wrapGAppsHook +, libmediaart +, gobject-introspection +, gnome-online-accounts +, grilo +, grilo-plugins +, pkg-config +, gtk3 +, pango +, glib +, desktop-file-utils +, appstream-glib +, itstool +, gnome +, gst_all_1 +, libdazzle +, libsoup +, gsettings-desktop-schemas +}: + +python3.pkgs.buildPythonApplication rec { + pname = "gnome-music"; + version = "40.0"; + + format = "other"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "1djqhd4jccvk352hwxjhiwjgbnv1qnpv450f2c6w6581vcn9pq38"; + }; + + nativeBuildInputs = [ + meson + ninja + gettext + itstool + pkg-config + libxml2 + wrapGAppsHook + desktop-file-utils + appstream-glib + gobject-introspection + ]; + + buildInputs = [ + gtk3 + pango + glib + libmediaart + gnome-online-accounts + gobject-introspection + gdk-pixbuf + gnome.adwaita-icon-theme + python3 + grilo + grilo-plugins + libnotify + libdazzle + libsoup + gsettings-desktop-schemas + tracker + ] ++ (with gst_all_1; [ + 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; + + # handle setup hooks better + strictDeps = false; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Music"; + description = "Music player and management application for the GNOME desktop environment"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-nettool/default.nix b/pkgs/desktops/gnome/apps/gnome-nettool/default.nix new file mode 100644 index 0000000000000..ca75b7aae07f4 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-nettool/default.nix @@ -0,0 +1,36 @@ +{ lib, stdenv, fetchurl, pkg-config, gnome, 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}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1c9cvzvyqgfwa5zzyvp7118pkclji62fkbb33g4y9sp5kw6m397h"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ + gtk3 wrapGAppsHook libgtop intltool itstool libxml2 + gnome.adwaita-icon-theme + ]; + + propagatedUserEnvPkgs = [ nmap inetutils ]; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + versionPolicy = "none"; + }; + }; + + meta = with lib; { + homepage = "https://gitlab.gnome.org/GNOME/gnome-nettool"; + description = "A collection of networking tools"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-notes/default.nix b/pkgs/desktops/gnome/apps/gnome-notes/default.nix new file mode 100644 index 0000000000000..6af206069e292 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-notes/default.nix @@ -0,0 +1,87 @@ +{ lib, stdenv +, meson +, ninja +, gettext +, fetchurl +, pkg-config +, wrapGAppsHook +, itstool +, desktop-file-utils +, python3 +, glib +, gtk3 +, evolution-data-server +, gnome-online-accounts +, json-glib +, libuuid +, curl +, libhandy +, webkitgtk +, gnome +, libxml2 +, gsettings-desktop-schemas +, tracker +}: + +stdenv.mkDerivation rec { + pname = "gnome-notes"; + version = "40.1"; + + src = fetchurl { + url = "mirror://gnome/sources/bijiben/${lib.versions.major version}/bijiben-${version}.tar.xz"; + sha256 = "1gvvb2klkzbmyzwkjgmscdiqcl8lyz9b0rxb4igjz079csq6z805"; + }; + + doCheck = true; + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + nativeBuildInputs = [ + meson + ninja + pkg-config + gettext + itstool + libxml2 + desktop-file-utils + python3 + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + json-glib + libuuid + curl + libhandy + webkitgtk + tracker + gnome-online-accounts + gsettings-desktop-schemas + evolution-data-server + gnome.adwaita-icon-theme + ]; + + mesonFlags = [ + "-Dupdate_mimedb=false" + ]; + + passthru = { + updateScript = gnome.updateScript { + packageName = "bijiben"; + attrPath = "gnome.gnome-notes"; + }; + }; + + meta = with lib; { + description = "Note editor designed to remain simple to use"; + homepage = "https://wiki.gnome.org/Apps/Notes"; + license = licenses.gpl3; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-power-manager/default.nix b/pkgs/desktops/gnome/apps/gnome-power-manager/default.nix new file mode 100644 index 0000000000000..0337f70a20e51 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-power-manager/default.nix @@ -0,0 +1,60 @@ +{ lib, stdenv +, gettext +, fetchurl +, pkg-config +, gtk3 +, glib +, meson +, ninja +, upower +, python3 +, desktop-file-utils +, wrapGAppsHook +, gnome }: + +let + pname = "gnome-power-manager"; + version = "3.32.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0drfn3wcc8l4n07qwv6p0rw2dwcd00hwzda282q62l6sasks2b2g"; + }; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + nativeBuildInputs = [ + meson + ninja + pkg-config + wrapGAppsHook + gettext + + # needed by meson_post_install.sh + python3 + glib.dev + desktop-file-utils + ]; + + buildInputs = [ + gtk3 + glib + upower + gnome.adwaita-icon-theme + ]; + + meta = with lib; { + homepage = "https://projects-old.gnome.org/gnome-power-manager/"; + description = "View battery and power statistics provided by UPower"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix b/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix new file mode 100644 index 0000000000000..29f7aa6e9ee4b --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix @@ -0,0 +1,72 @@ +{ lib, stdenv +, fetchurl +, pkg-config +, gettext +, gobject-introspection +, wrapGAppsHook +, gjs +, glib +, gtk3 +, gdk-pixbuf +, gst_all_1 +, gnome +, meson +, ninja +, python3 +, desktop-file-utils +, libhandy +}: + +stdenv.mkDerivation rec { + pname = "gnome-sound-recorder"; + version = "40.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "00b55vsfzx877b7mj744abzjws7zclz71wbvh0axsrbl9l84ranl"; + }; + + nativeBuildInputs = [ + pkg-config + gettext + meson + ninja + gobject-introspection + wrapGAppsHook + python3 + desktop-file-utils + ]; + + buildInputs = [ + gjs + glib + gtk3 + gdk-pixbuf + libhandy + ] ++ (with gst_all_1; [ + gstreamer + gst-plugins-base + gst-plugins-good + gst-plugins-bad # for gstreamer-player-1.0 + ]); + + postPatch = '' + chmod +x build-aux/meson_post_install.py + patchShebangs build-aux/meson_post_install.py + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + description = "A simple and modern sound recorder"; + homepage = "https://wiki.gnome.org/Apps/SoundRecorder"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-todo/default.nix b/pkgs/desktops/gnome/apps/gnome-todo/default.nix new file mode 100644 index 0000000000000..885f21cf3ec80 --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-todo/default.nix @@ -0,0 +1,89 @@ +{ lib, stdenv +, fetchurl +, fetchpatch +, meson +, ninja +, pkg-config +, python3 +, wrapGAppsHook +, gettext +, gnome +, 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}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "08ygqbib72jlf9y0a16k54zz51sncpq2wa18wp81v46q8301ymy7"; + }; + + patches = [ + # fix build with libecal 2.0 + (fetchpatch { + name = "gnome-todo-eds-libecal-2.0.patch"; + url = "https://src.fedoraproject.org/rpms/gnome-todo/raw/bed44b8530f3c79589982e03b430b3a125e9bceb/f/gnome-todo-eds-libecal-2.0.patch"; + sha256 = "1ghrz973skal36j90wm2z13m3panw983r6y0k7z9gpj5lxgz92mq"; + }) + ]; + postPatch = '' + chmod +x meson_post_install.py + patchShebangs meson_post_install.py + ''; + + nativeBuildInputs = [ + meson + ninja + pkg-config + gettext + python3 + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + libpeas + gnome-online-accounts + gsettings-desktop-schemas + gnome.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 = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + description = "Personal task manager for GNOME"; + homepage = "https://wiki.gnome.org/Apps/Todo"; + license = licenses.gpl3Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/gnome-weather/default.nix b/pkgs/desktops/gnome/apps/gnome-weather/default.nix new file mode 100644 index 0000000000000..39c10e82a1c2e --- /dev/null +++ b/pkgs/desktops/gnome/apps/gnome-weather/default.nix @@ -0,0 +1,76 @@ +{ lib +, stdenv +, fetchurl +, pkg-config +, gnome +, gtk3 +, libhandy +, wrapGAppsHook +, gjs +, gobject-introspection +, libgweather +, meson +, ninja +, geoclue2 +, gnome-desktop +, python3 +, gsettings-desktop-schemas +}: + +stdenv.mkDerivation rec { + pname = "gnome-weather"; + version = "40.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-weather/${lib.versions.major version}/${pname}-${version}.tar.xz"; + sha256 = "1vxfcvga5waangq3rzwdrdxyy5sw40vv0l463lc651s0n8xafd9a"; + }; + + nativeBuildInputs = [ + pkg-config + meson + ninja + wrapGAppsHook + python3 + ]; + + buildInputs = [ + gtk3 + libhandy + gjs + gobject-introspection + gnome-desktop + libgweather + gnome.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 = gnome.updateScript { + packageName = "gnome-weather"; + attrPath = "gnome.gnome-weather"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Weather"; + description = "Access current weather conditions and forecasts"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/polari/default.nix b/pkgs/desktops/gnome/apps/polari/default.nix new file mode 100644 index 0000000000000..0675ccb2f82d1 --- /dev/null +++ b/pkgs/desktops/gnome/apps/polari/default.nix @@ -0,0 +1,54 @@ +{ lib, stdenv, itstool, fetchurl, gdk-pixbuf, adwaita-icon-theme +, telepathy-glib, gjs, meson, ninja, gettext, telepathy-idle, libxml2, desktop-file-utils +, pkg-config, gtk3, glib, libsecret, libsoup, webkitgtk, gobject-introspection, appstream-glib +, gnome, wrapGAppsHook, telepathy-logger, gspell, gsettings-desktop-schemas }: + +let + pname = "polari"; + version = "3.38.0"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1l82nmb5qk4h69rsdhzlcmjjdhwh9jzfs4cnw8hy39sg5v9ady1s"; + }; + + patches = [ + # Upstream runs the thumbnailer by passing it to gjs. + # If we wrap it in a shell script, gjs can no longer run it. + # Let’s change the code to run the script directly by making it executable and having gjs in shebang. + ./make-thumbnailer-wrappable.patch + ]; + + propagatedUserEnvPkgs = [ telepathy-idle telepathy-logger ]; + + nativeBuildInputs = [ + meson ninja pkg-config 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 webkitgtk + ]; + + postFixup = '' + wrapGApp "$out/share/polari/thumbnailer.js" + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Polari"; + description = "IRC chat client designed to integrate with the GNOME desktop"; + maintainers = teams.gnome.members; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/polari/make-thumbnailer-wrappable.patch b/pkgs/desktops/gnome/apps/polari/make-thumbnailer-wrappable.patch new file mode 100644 index 0000000000000..0fb09eb154af1 --- /dev/null +++ b/pkgs/desktops/gnome/apps/polari/make-thumbnailer-wrappable.patch @@ -0,0 +1,24 @@ +diff --git a/src/thumbnailer.js b/src/thumbnailer.js +old mode 100644 +new mode 100755 +index e2ad0a5..7ebf08a +--- a/src/thumbnailer.js ++++ b/src/thumbnailer.js +@@ -1,3 +1,4 @@ ++#!/usr/bin/env gjs + imports.gi.versions.Gdk = '3.0'; + imports.gi.versions.Gtk = '3.0'; + +diff --git a/src/urlPreview.js b/src/urlPreview.js +index f17e0be..ccffc32 100644 +--- a/src/urlPreview.js ++++ b/src/urlPreview.js +@@ -44,7 +44,7 @@ class Thumbnailer { + _generateThumbnail(data) { + let { filename, uri } = data; + this._subProc = Gio.Subprocess.new( +- ['gjs', `${pkg.pkgdatadir}/thumbnailer.js`, uri, filename], ++ [`${pkg.pkgdatadir}/thumbnailer.js`, uri, filename], + Gio.SubprocessFlags.NONE); + this._subProc.wait_async(null, (o, res) => { + try { diff --git a/pkgs/desktops/gnome/apps/seahorse/default.nix b/pkgs/desktops/gnome/apps/seahorse/default.nix new file mode 100644 index 0000000000000..d46aed7bbe940 --- /dev/null +++ b/pkgs/desktops/gnome/apps/seahorse/default.nix @@ -0,0 +1,84 @@ +{ lib, stdenv +, fetchurl +, vala +, meson +, ninja +, libpwquality +, pkg-config +, gtk3 +, glib +, wrapGAppsHook +, itstool +, gnupg +, libsoup +, gnome +, gpgme +, python3 +, openldap +, gcr +, libsecret +, avahi +, p11-kit +, openssh +, gsettings-desktop-schemas +, libhandy +}: + +stdenv.mkDerivation rec { + pname = "seahorse"; + version = "40.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; + hash = "sha256-fscFezhousbqBB/aghQKOfXsnlsYi0UJFNRTvC1V0Cw="; + }; + + doCheck = true; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + itstool + wrapGAppsHook + python3 + ]; + + buildInputs = [ + gtk3 + glib + gcr + gsettings-desktop-schemas + gnupg + gnome.adwaita-icon-theme + gpgme + libsecret + avahi + libsoup + p11-kit + openssh + openldap + libpwquality + libhandy + ]; + + postPatch = '' + patchShebangs build-aux/ + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + }; + }; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Apps/Seahorse"; + description = "Application for managing encryption keys and passwords in the GnomeKeyring"; + maintainers = teams.gnome.members; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome/apps/vinagre/default.nix b/pkgs/desktops/gnome/apps/vinagre/default.nix new file mode 100644 index 0000000000000..31e198783e04f --- /dev/null +++ b/pkgs/desktops/gnome/apps/vinagre/default.nix @@ -0,0 +1,34 @@ +{ lib, stdenv, fetchurl, pkg-config, gtk3, gnome, 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/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "cd1cdbacca25c8d1debf847455155ee798c3e67a20903df8b228d4ece5505e82"; + }; + + nativeBuildInputs = [ pkg-config intltool itstool wrapGAppsHook ]; + buildInputs = [ + gtk3 vte libxml2 gtk-vnc libsecret gnome.adwaita-icon-theme librsvg + ]; + + NIX_CFLAGS_COMPILE = "-Wno-format-nonliteral"; + + passthru = { + updateScript = gnome.updateScript { + packageName = "vinagre"; + attrPath = "gnome.vinagre"; + }; + }; + + meta = with lib; { + description = "Remote desktop viewer for GNOME"; + homepage = "https://wiki.gnome.org/Apps/Vinagre"; + license = licenses.gpl2Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +} |