Merge pull request #28882 from jtojnar/chrome-gnome-shell

chrome-gnome-shell: refactor
This commit is contained in:
Jan Tojnar 2018-01-19 13:40:42 +01:00 committed by GitHub
commit d2d1a2dfba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 59 additions and 25 deletions

View File

@ -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

View File

@ -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 ];
};
}

View File

@ -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 ])

View File

@ -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";
inherit (python3.pkgs) python pygobject3 requests;
in stdenv.mkDerivation rec {
name = "chrome-gnome-shell-${version}";
src = fetchurl {
url = "mirror://gnome/sources/chrome-gnome-shell/${version}/${name}.tar.xz";
sha256 = "0j6lzlp3jvkpnkk8s99y3m14xiq94rjwjzy2pbfqgv084ahzmz8i";
};
buildInputs = [ gnome3.gnome_shell makeWrapper jq dbus gobjectIntrospection
python python27Packages.requests python27Packages.pygobject3 wrapGAppsHook];
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"
'';
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;
};
}