summary refs log tree commit diff
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2018-01-19 13:40:42 +0100
committerGitHub <noreply@github.com>2018-01-19 13:40:42 +0100
commitd2d1a2dfbabaf723ebc2102a3c7baa5138303bc2 (patch)
tree13824f58f2d356b1a8fc58fd79b7f70c77387d76
parent899714ae964c3e446c2de081bf007ef238c9f3d6 (diff)
parent062cafab8cffa984f6e8b1a287d6a66c83238801 (diff)
downloadnixlib-d2d1a2dfbabaf723ebc2102a3c7baa5138303bc2.tar
nixlib-d2d1a2dfbabaf723ebc2102a3c7baa5138303bc2.tar.gz
nixlib-d2d1a2dfbabaf723ebc2102a3c7baa5138303bc2.tar.bz2
nixlib-d2d1a2dfbabaf723ebc2102a3c7baa5138303bc2.tar.lz
nixlib-d2d1a2dfbabaf723ebc2102a3c7baa5138303bc2.tar.xz
nixlib-d2d1a2dfbabaf723ebc2102a3c7baa5138303bc2.tar.zst
nixlib-d2d1a2dfbabaf723ebc2102a3c7baa5138303bc2.zip
Merge pull request #28882 from jtojnar/chrome-gnome-shell
chrome-gnome-shell: refactor
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/desktops/gnome3/chrome-gnome-shell.nix27
-rw-r--r--pkgs/applications/networking/browsers/firefox/wrapper.nix3
-rw-r--r--pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix51
4 files changed, 58 insertions, 24 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index a8718bd77871..bb3abc256fc1 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -200,6 +200,7 @@
   ./services/desktops/dleyna-server.nix
   ./services/desktops/geoclue2.nix
   ./services/desktops/gnome3/at-spi2-core.nix
+  ./services/desktops/gnome3/chrome-gnome-shell.nix
   ./services/desktops/gnome3/evolution-data-server.nix
   ./services/desktops/gnome3/gnome-disks.nix
   ./services/desktops/gnome3/gnome-documents.nix
diff --git a/nixos/modules/services/desktops/gnome3/chrome-gnome-shell.nix b/nixos/modules/services/desktops/gnome3/chrome-gnome-shell.nix
new file mode 100644
index 000000000000..2740a22c7ca0
--- /dev/null
+++ b/nixos/modules/services/desktops/gnome3/chrome-gnome-shell.nix
@@ -0,0 +1,27 @@
+# Chrome GNOME Shell native host connector.
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+  ###### interface
+  options = {
+    services.gnome3.chrome-gnome-shell.enable = mkEnableOption ''
+      Chrome GNOME Shell native host connector, a DBus service
+      allowing to install GNOME Shell extensions from a web browser.
+    '';
+  };
+
+
+  ###### implementation
+  config = mkIf config.services.gnome3.chrome-gnome-shell.enable {
+    environment.etc = {
+      "chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/etc/chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
+      "opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/etc/opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
+    };
+
+    environment.systemPackages = [ pkgs.chrome-gnome-shell ];
+
+    services.dbus.packages = [ pkgs.chrome-gnome-shell ];
+  };
+}
diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix
index dd4cb439c1fa..010f60881b5b 100644
--- a/pkgs/applications/networking/browsers/firefox/wrapper.nix
+++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -8,7 +8,7 @@
 , google_talk_plugin, fribid, gnome3/*.gnome_shell*/
 , esteidfirefoxplugin
 , vlc_npapi
-, browserpass
+, browserpass, chrome-gnome-shell
 , libudev
 , kerberos
 }:
@@ -63,6 +63,7 @@ let
       nativeMessagingHosts =
         ([ ]
           ++ lib.optional (cfg.enableBrowserpass or false) browserpass
+          ++ lib.optional (cfg.enableGnomeExtensions or false) chrome-gnome-shell
           ++ extraNativeMessagingHosts
         );
       libs = (if ffmpegSupport then [ ffmpeg ] else with gst_all; [ gstreamer gst-plugins-base ])
diff --git a/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix b/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix
index bda356cf4c37..11d891b67434 100644
--- a/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix
+++ b/pkgs/desktops/gnome-3/extensions/chrome-gnome-shell/default.nix
@@ -1,31 +1,36 @@
-{stdenv, lib, python, dbus, fetchgit, cmake, coreutils, jq, gobjectIntrospection, python27Packages, makeWrapper, gnome3, wrapGAppsHook}:
+{stdenv, fetchurl, cmake, ninja, jq, python3, gnome3, wrapGAppsHook}:
 
-stdenv.mkDerivation rec {
-name="chrome-gnome-shell";
-  src = fetchgit {
-    url = "git://git.gnome.org/chrome-gnome-shell";
-    rev = "7d99523e90805cb65027cc2f5f1191a957dcf276";
-    sha256 = "0qc34dbhsz5yf4z5bx6py08h561rcxw9928drgk9256g3vnygnbc";
-  };
+let
+  version = "9";
 
- buildInputs = [ gnome3.gnome_shell makeWrapper jq dbus gobjectIntrospection
- python python27Packages.requests python27Packages.pygobject3 wrapGAppsHook];
+  inherit (python3.pkgs) python pygobject3 requests;
+in stdenv.mkDerivation rec {
+  name = "chrome-gnome-shell-${version}";
 
- preConfigure = ''
-   mkdir build usr etc
-   cd build
-   ${cmake}/bin/cmake -DCMAKE_INSTALL_PREFIX=$out/usr -DBUILD_EXTENSION=OFF ../
-   substituteInPlace cmake_install.cmake --replace "/etc" "$out/etc"
- '';
+  src = fetchurl {
+    url = "mirror://gnome/sources/chrome-gnome-shell/${version}/${name}.tar.xz";
+    sha256 = "0j6lzlp3jvkpnkk8s99y3m14xiq94rjwjzy2pbfqgv084ahzmz8i";
+  };
 
- postInstall = ''
-    rm $out/etc/opt/chrome/policies/managed/chrome-gnome-shell.json
-    rm $out/etc/chromium/policies/managed/chrome-gnome-shell.json
-    wrapProgram $out/usr/bin/chrome-gnome-shell \
-      --prefix PATH : '"${dbus}/bin"' \
-      --prefix PATH : '"${gnome3.gnome_shell}/bin"' \
-      --prefix PYTHONPATH : "$PYTHONPATH"
+  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" ];
+
+  meta = with stdenv.lib; {
+    description = "GNOME Shell integration for Chrome";
+    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>. For Firefox based browsers, you will also need to build the wrappers with <option>nixpkgs.config.firefox.enableGnomeExtensions</option> set to <literal>true</literal>.
+    '';
+    license = licenses.gpl3;
+    maintainers = gnome3.maintainers;
+    platforms = platforms.linux;
+  };
 }