diff options
Diffstat (limited to 'pkgs/desktops/gnome/apps/polari')
-rw-r--r-- | pkgs/desktops/gnome/apps/polari/default.nix | 54 | ||||
-rw-r--r-- | pkgs/desktops/gnome/apps/polari/make-thumbnailer-wrappable.patch | 24 |
2 files changed, 78 insertions, 0 deletions
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 { |