about summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorLuca Bruno <lucabru@src.gnome.org>2014-08-14 21:03:42 +0200
committerLuca Bruno <lucabru@src.gnome.org>2014-08-14 21:16:40 +0200
commit3d0dc6a143324f0055af8e224fc1272949eee297 (patch)
tree08b55ac9540ec757b13dc40195792edd6d8426bc /nixos
parent7050914ed2a5f0cf7f31cd402aa307847825a439 (diff)
downloadnixlib-3d0dc6a143324f0055af8e224fc1272949eee297.tar
nixlib-3d0dc6a143324f0055af8e224fc1272949eee297.tar.gz
nixlib-3d0dc6a143324f0055af8e224fc1272949eee297.tar.bz2
nixlib-3d0dc6a143324f0055af8e224fc1272949eee297.tar.lz
nixlib-3d0dc6a143324f0055af8e224fc1272949eee297.tar.xz
nixlib-3d0dc6a143324f0055af8e224fc1272949eee297.tar.zst
nixlib-3d0dc6a143324f0055af8e224fc1272949eee297.zip
gnome3: add services.xserver.desktopManager.gnome3.sessionPath
Used to add GI_TYPELIB_PATH and LD_LIBRARY_PATH for gnome shell extensions
or other libraries and services.

Not a great solution but may be the start for further work. Let's make
some cool packages work for now.
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix25
1 files changed, 21 insertions, 4 deletions
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index df50ca8c905c..06bcb6dbb8be 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -35,6 +35,14 @@ in {
       description = "Enable Gnome 3 desktop manager.";
     };
 
+    services.xserver.desktopManager.gnome3.sessionPath = mkOption {
+      default = [];
+      example = "[ 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 ++ [ gnome3.gnome_shell ]; 
+    };
+
     environment.gnome3.packageSet = mkOption {
       default = pkgs.gnome3;
       example = literalExample "pkgs.gnome3_12";
@@ -86,10 +94,19 @@ in {
 
           export XDG_MENU_PREFIX=gnome
 
-          # Don't let epiphany depend upon gnome-shell
-          # Don't let gnome-session depend upon vino (for .desktop autostart condition)
+          ${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}
+
           # Override default mimeapps
-          export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${gnome3.gnome_shell}/share/gsettings-schemas/${gnome3.gnome_shell.name}:${gnome3.vino}/share/gsettings-schemas/${gnome3.vino.name}:${mimeAppsList}/share
+          export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${mimeAppsList}/share
 
           # Let gnome-control-center find gnome-shell search providers
           export GNOME_SEARCH_PROVIDERS_DIR=${config.system.path}/share/gnome-shell/search-providers/
@@ -123,7 +140,7 @@ in {
         gnome3.gnome_settings_daemon
         gnome3.gnome_shell
         gnome3.gnome_themes_standard
-      ] ++ (removePackagesByName [
+      ] ++ cfg.sessionPath ++ (removePackagesByName [
         gnome3.baobab
         gnome3.empathy
         gnome3.eog