summary refs log tree commit diff
diff options
context:
space:
mode:
authorLuca Bruno <lucabru@src.gnome.org>2014-04-09 00:02:20 +0200
committerLuca Bruno <lucabru@src.gnome.org>2014-04-09 00:36:53 +0200
commita3115707dd1563cfdab75ae716a33aeba4c651ce (patch)
treed0aef79d8e467c8157d7c446a3baa27df6ae9aeb
parentba200a2c3cfe1e122eec30e588f37430a50feff7 (diff)
downloadnixpkgs-a3115707dd1563cfdab75ae716a33aeba4c651ce.tar
nixpkgs-a3115707dd1563cfdab75ae716a33aeba4c651ce.tar.gz
nixpkgs-a3115707dd1563cfdab75ae716a33aeba4c651ce.tar.bz2
nixpkgs-a3115707dd1563cfdab75ae716a33aeba4c651ce.tar.lz
nixpkgs-a3115707dd1563cfdab75ae716a33aeba4c651ce.tar.xz
nixpkgs-a3115707dd1563cfdab75ae716a33aeba4c651ce.tar.zst
nixpkgs-a3115707dd1563cfdab75ae716a33aeba4c651ce.zip
Add environment.gnome3.excludePackages
Give the user a full desktop, and the possibility to exclude
non-base packages from the default list of packages.
-rw-r--r--lib/lists.nix3
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix43
2 files changed, 33 insertions, 13 deletions
diff --git a/lib/lists.nix b/lib/lists.nix
index 71a89702796..6c7773304de 100644
--- a/lib/lists.nix
+++ b/lib/lists.nix
@@ -226,4 +226,7 @@ in rec {
   deepSeqList = xs: y: if any (x: deepSeq x false) xs then y else y;
 
   crossLists = f: foldl (fs: args: concatMap (f: map f args) fs) [f];
+
+  # List difference, xs - ys. Removes elements of ys from xs.
+  difference = xs: ys: filter (y: !(builtins.elem y ys)) xs;
 }
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index 0a4afcd81a3..bebda772352 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -15,6 +15,13 @@ in {
       description = "Enable Gnome 3 desktop manager.";
     };
 
+    environment.gnome3.excludePackages = mkOption {
+      default = [];
+      example = "[ pkgs.gnome3.totem ]";
+      type = types.listOf types.package;
+      description = "Which packages gnome should exclude from the default environment";
+    };
+
   };
 
   config = mkIf cfg.enable {
@@ -51,25 +58,35 @@ in {
     environment.variables.GIO_EXTRA_MODULES = [ "${gnome3.dconf}/lib/gio/modules"
                                                 "${pkgs.glib_networking}/lib/gio/modules" ];
     environment.systemPackages =
-      [ gnome3.evince
+      [ gnome3.dconf
+        pkgs.glib_networking
+        pkgs.ibus
+        gnome3.gnome-backgrounds
+        gnome3.gnome_control_center
+        gnome3.gnome_icon_theme
+        gnome3.gnome_settings_daemon
+        gnome3.gnome_shell
+        gnome3.gnome_themes_standard
+      ] ++ (lists.difference [
+        gnome3.baobab
         gnome3.eog
-        gnome3.dconf
-        gnome3.vino
         gnome3.epiphany
-        gnome3.baobab
+        gnome3.evince
         gnome3.gucharmap
         gnome3.nautilus
+        gnome3.totem
+        gnome3.vino
         gnome3.yelp
-        pkgs.glib_networking
-        pkgs.ibus
-        gnome3.gnome-backgrounds
-        gnome3.gnome_shell
-        gnome3.gnome_settings_daemon
+        gnome3.gnome-calculator
+        gnome3.gnome-contacts
+        gnome3.gnome-font-viewer
+        gnome3.gnome-screenshot
+        gnome3.gnome-system-log
+        gnome3.gnome-system-monitor
         gnome3.gnome_terminal
-        gnome3.gnome_icon_theme
-        gnome3.gnome_themes_standard
-        gnome3.gnome_control_center
-      ];
+
+        gnome3.file-roller
+      ] config.environment.gnome3.excludePackages);
   };