summary refs log tree commit diff
path: root/pkgs/applications/networking/browsers/chromium/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/browsers/chromium/default.nix')
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix25
1 files changed, 22 insertions, 3 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index cfc8951eef10..30a16d824d01 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -1,4 +1,5 @@
 { newScope, stdenv, makeWrapper, makeDesktopItem, ed
+, glib, gtk2, gtk3, gnome2, gnome3, gsettings_desktop_schemas
 
 # package customization
 , channel ? "stable"
@@ -62,10 +63,26 @@ let
 
   sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName;
 
+  version = chromium.browser.version;
+
+  inherit (stdenv.lib) versionAtLeast;
+
+  gtk = if (versionAtLeast version "59.0.0.0") then gtk3 else gtk2;
+  gnome = if (versionAtLeast version "59.0.0.0") then gnome3 else gnome2;
+
 in stdenv.mkDerivation {
-  name = "chromium${suffix}-${chromium.browser.version}";
+  name = "chromium${suffix}-${version}";
+  inherit version;
 
-  buildInputs = [ makeWrapper ed ];
+  buildInputs = [
+    makeWrapper ed
+
+    # needed for GSETTINGS_SCHEMAS_PATH
+    gsettings_desktop_schemas glib gtk
+
+    # needed for XDG_ICON_DIRS
+    gnome.defaultIconTheme
+  ];
 
   outputs = ["out" "sandbox"];
 
@@ -92,6 +109,8 @@ in stdenv.mkDerivation {
     # libredirect causes chromium to deadlock on startup
     export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | tr ':' '\n' | grep -v /lib/libredirect\\\\.so$ | tr '\n' ':')"
 
+    export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS
+
     .
     w
     EOF
@@ -107,7 +126,7 @@ in stdenv.mkDerivation {
     cp -v "${desktopItem}/share/applications/"* "$out/share/applications"
   '';
 
-  inherit (chromium.browser) meta packageName version;
+  inherit (chromium.browser) meta packageName;
 
   passthru = {
     inherit (chromium) upstream-info browser;