summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorTor Hedin Brønner <torhedinbronner@gmail.com>2018-07-31 11:01:38 +0200
committerJan Tojnar <jtojnar@gmail.com>2018-08-01 19:14:33 +0200
commitee34f2537a9e969ca0f4066db6a859ff210bebdd (patch)
tree821d160ddfe9744846caaa77cba0ecc87932034e /nixos/modules
parente8e0edd95ce05d2317c18f9054e7b9ba4b76ec6f (diff)
downloadnixlib-ee34f2537a9e969ca0f4066db6a859ff210bebdd.tar
nixlib-ee34f2537a9e969ca0f4066db6a859ff210bebdd.tar.gz
nixlib-ee34f2537a9e969ca0f4066db6a859ff210bebdd.tar.bz2
nixlib-ee34f2537a9e969ca0f4066db6a859ff210bebdd.tar.lz
nixlib-ee34f2537a9e969ca0f4066db6a859ff210bebdd.tar.xz
nixlib-ee34f2537a9e969ca0f4066db6a859ff210bebdd.tar.zst
nixlib-ee34f2537a9e969ca0f4066db6a859ff210bebdd.zip
nixos/gnome3: Add back `sessionPath`
Implement through `services.xserver.displayManager.sessionCommands`.
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/services/desktops/gnome3/gpaste.nix1
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix26
2 files changed, 26 insertions, 1 deletions
diff --git a/nixos/modules/services/desktops/gnome3/gpaste.nix b/nixos/modules/services/desktops/gnome3/gpaste.nix
index 512aac35a17a..5a8258775e0a 100644
--- a/nixos/modules/services/desktops/gnome3/gpaste.nix
+++ b/nixos/modules/services/desktops/gnome3/gpaste.nix
@@ -21,6 +21,7 @@ with lib;
   config = mkIf config.services.gnome3.gpaste.enable {
     environment.systemPackages = [ pkgs.gnome3.gpaste ];
     services.dbus.packages = [ pkgs.gnome3.gpaste ];
+    services.xserver.desktopManager.gnome3.sessionPath = [ pkgs.gnome3.gpaste ];
     systemd.packages = [ pkgs.gnome3.gpaste ];
   };
 }
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index b1c7e5a7aac0..f27d8886187e 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -54,6 +54,14 @@ in {
         description = "Enable Gnome 3 desktop manager.";
       };
 
+      sessionPath = mkOption {
+        default = [];
+        example = literalExample "[ pkgs.gnome3.gpaste ]";
+        description = "Additional list of packages to be added to the session search path.
+                       Useful for gnome shell extensions or gsettings-conditionated autostart.";
+        apply = list: list ++ [ pkgs.gnome3.gnome-shell pkgs.gnome3.gnome-shell-extensions ];
+      };
+
       extraGSettingsOverrides = mkOption {
         default = "";
         type = types.lines;
@@ -120,6 +128,22 @@ in {
 
     services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ];
 
+    services.xserver.displayManager.sessionCommands = ''
+      if test "$XDG_CURRENT_DESKTOP" = "GNOME"; then
+          ${concatMapStrings (p: ''
+            if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
+              export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
+            fi
+
+            if [ -d "${p}/lib/girepository-1.0" ]; then
+              export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
+              export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
+            fi
+          '') cfg.sessionPath}
+      fi
+    '';
+
+
     # Override default mimeapps
     environment.variables.XDG_DATA_DIRS = [ "${mimeAppsList}/share" ];
 
@@ -133,7 +157,7 @@ in {
     environment.variables.GIO_EXTRA_MODULES = [ "${lib.getLib pkgs.gnome3.dconf}/lib/gio/modules"
                                                 "${pkgs.gnome3.glib-networking.out}/lib/gio/modules"
                                                 "${pkgs.gnome3.gvfs}/lib/gio/modules" ];
-    environment.systemPackages = pkgs.gnome3.corePackages
+    environment.systemPackages = pkgs.gnome3.corePackages ++ cfg.sessionPath
       ++ (removePackagesByName pkgs.gnome3.optionalPackages config.environment.gnome3.excludePackages) ++ [
       pkgs.xdg-user-dirs # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
     ];