about summary refs log tree commit diff
path: root/nixos/modules/services
diff options
context:
space:
mode:
authorDomen Kožar <domen@dev.si>2014-04-16 18:08:00 +0200
committerDomen Kožar <domen@dev.si>2014-04-16 18:08:00 +0200
commit3a9f28ee0860ea42bd0b2d66fdd04342191c2b0d (patch)
tree412e26232a581ad3ec95c9d967eaf1b3d9323867 /nixos/modules/services
parent3b3f7d2595662d748e63ba08ea591ca04b53ae32 (diff)
parent92a831a4ecfdc58106564ff7f69f13a7dd29a079 (diff)
downloadnixlib-3a9f28ee0860ea42bd0b2d66fdd04342191c2b0d.tar
nixlib-3a9f28ee0860ea42bd0b2d66fdd04342191c2b0d.tar.gz
nixlib-3a9f28ee0860ea42bd0b2d66fdd04342191c2b0d.tar.bz2
nixlib-3a9f28ee0860ea42bd0b2d66fdd04342191c2b0d.tar.lz
nixlib-3a9f28ee0860ea42bd0b2d66fdd04342191c2b0d.tar.xz
nixlib-3a9f28ee0860ea42bd0b2d66fdd04342191c2b0d.tar.zst
nixlib-3a9f28ee0860ea42bd0b2d66fdd04342191c2b0d.zip
Merge pull request #2185 from lethalman/gnome3
tracker, licenses.cc-by-30, gnome-user-docs, upgrade sushi, gnome-keyring service, gnome-user-share, gnome-tweak-tool, gnome-shell-extensions, xdg-user-dirs
Diffstat (limited to 'nixos/modules/services')
-rw-r--r--nixos/modules/services/desktops/gnome3/gnome-keyring.nix40
-rw-r--r--nixos/modules/services/desktops/gnome3/gnome-online-accounts.nix39
-rw-r--r--nixos/modules/services/desktops/gnome3/gnome-user-share.nix42
-rw-r--r--nixos/modules/services/desktops/gnome3/tracker.nix39
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix40
5 files changed, 196 insertions, 4 deletions
diff --git a/nixos/modules/services/desktops/gnome3/gnome-keyring.nix b/nixos/modules/services/desktops/gnome3/gnome-keyring.nix
new file mode 100644
index 000000000000..447fd783f148
--- /dev/null
+++ b/nixos/modules/services/desktops/gnome3/gnome-keyring.nix
@@ -0,0 +1,40 @@
+# GNOME Keyring daemon.
+
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+{
+
+  ###### interface
+
+  options = {
+
+    services.gnome3.gnome-keyring = {
+
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Whether to enable GNOME Keyring daemon, a service designed to
+          take care of the user's security credentials,
+          such as user names and passwordsa search engine.
+        '';
+      };
+
+    };
+
+  };
+
+
+  ###### implementation
+
+  config = mkIf config.services.gnome3.gnome-keyring.enable {
+
+    environment.systemPackages = [ pkgs.gnome3.gnome_keyring ];
+
+    services.dbus.packages = [ pkgs.gnome3.gnome_keyring ];
+
+  };
+
+}
diff --git a/nixos/modules/services/desktops/gnome3/gnome-online-accounts.nix b/nixos/modules/services/desktops/gnome3/gnome-online-accounts.nix
new file mode 100644
index 000000000000..365e19c15bb1
--- /dev/null
+++ b/nixos/modules/services/desktops/gnome3/gnome-online-accounts.nix
@@ -0,0 +1,39 @@
+# GNOME Online Accounts daemon.
+
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+{
+
+  ###### interface
+
+  options = {
+
+    services.gnome3.gnome-online-accounts = {
+
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Whether to enable GNOME Online Accounts daemon, a service that provides
+          a single sign-on framework for the GNOME desktop.
+        '';
+      };
+
+    };
+
+  };
+
+
+  ###### implementation
+
+  config = mkIf config.services.gnome3.gnome-online-accounts.enable {
+
+    environment.systemPackages = [ pkgs.gnome3.gnome_online_accounts ];
+
+    services.dbus.packages = [ pkgs.gnome3.gnome_online_accounts ];
+
+  };
+
+}
diff --git a/nixos/modules/services/desktops/gnome3/gnome-user-share.nix b/nixos/modules/services/desktops/gnome3/gnome-user-share.nix
new file mode 100644
index 000000000000..df796ed77ff4
--- /dev/null
+++ b/nixos/modules/services/desktops/gnome3/gnome-user-share.nix
@@ -0,0 +1,42 @@
+# GNOME User Share daemon.
+
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+{
+
+  ###### interface
+
+  options = {
+
+    services.gnome3.gnome-user-share = {
+
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Whether to enable GNOME User Share, a service that exports the
+          contents of the Public folder in your home directory on the local network.
+        '';
+      };
+
+    };
+
+  };
+
+
+  ###### implementation
+
+  config = mkIf config.services.gnome3.gnome-user-share.enable {
+
+    environment.systemPackages = [ pkgs.gnome3.gnome-user-share ];
+
+    services.xserver.displayManager.sessionCommands = with pkgs.gnome3; ''
+      # Don't let gnome-control-center depend upon gnome-user-share
+      export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${gnome-user-share}/share/gsettings-schemas/${gnome-user-share.name}
+    '';
+
+  };
+
+}
diff --git a/nixos/modules/services/desktops/gnome3/tracker.nix b/nixos/modules/services/desktops/gnome3/tracker.nix
new file mode 100644
index 000000000000..94a22d0c8819
--- /dev/null
+++ b/nixos/modules/services/desktops/gnome3/tracker.nix
@@ -0,0 +1,39 @@
+# Tracker daemon.
+
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+{
+
+  ###### interface
+
+  options = {
+
+    services.gnome3.tracker = {
+
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Whether to enable Tracker services, a search engine,
+          search tool and metadata storage system.
+        '';
+      };
+
+    };
+
+  };
+
+
+  ###### implementation
+
+  config = mkIf config.services.gnome3.tracker.enable {
+
+    environment.systemPackages = [ pkgs.gnome3.tracker ];
+
+    services.dbus.packages = [ pkgs.gnome3.tracker ];
+
+  };
+
+}
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index c93cd9055302..f5a2702904df 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -5,6 +5,16 @@ with lib;
 let
   cfg = config.services.xserver.desktopManager.gnome3;
   gnome3 = pkgs.gnome3;
+
+  # Remove packages of ys from xs, based on their names
+  removePackagesByName = xs: ys:
+    let
+      pkgName = drv: (builtins.parseDrvName drv.name).name;
+	  ysNames = map pkgName ys;
+      res = (filter (x: !(builtins.elem (pkgName x) ysNames)) xs);
+    in
+      filter (x: !(builtins.elem (pkgName x) ysNames)) xs;
+
 in {
 
   options = {
@@ -32,8 +42,12 @@ in {
     services.accounts-daemon.enable = true;
     services.gnome3.at-spi2-core.enable = true;
     services.gnome3.evolution-data-server.enable = true;
-    services.gnome3.sushi.enable = true;
-    services.telepathy.enable = true;
+    services.gnome3.gnome-keyring.enable = true;
+    services.gnome3.gnome-online-accounts.enable = mkDefault true;
+    services.gnome3.gnome-user-share.enable = mkDefault true;
+    services.gnome3.sushi.enable = mkDefault true;
+    services.gnome3.tracker.enable = mkDefault true;
+    services.telepathy.enable = mkDefault true;
     networking.networkmanager.enable = true;
     services.upower.enable = config.powerManagement.enable;
 
@@ -50,6 +64,12 @@ in {
 
           export XDG_MENU_PREFIX=gnome
 
+          # Don't let epiphany depend upon gnome-shell
+          export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${pkgs.gnome3.gnome_shell}/share/gsettings-schemas/${pkgs.gnome3.gnome_shell.name}
+
+          # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
+          ${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
+
           ${gnome3.gnome_session}/bin/gnome-session&
           waitPID=$!
         '';
@@ -58,17 +78,22 @@ in {
     environment.variables.GIO_EXTRA_MODULES = [ "${gnome3.dconf}/lib/gio/modules"
                                                 "${pkgs.glib_networking}/lib/gio/modules" ];
     environment.systemPackages =
-      [ gnome3.dconf
+      [ pkgs.desktop_file_utils
         pkgs.glib_networking
+        pkgs.gtk3 # for gtk-update-icon-cache
         pkgs.ibus
+        pkgs.shared_mime_info # for update-mime-database
+        gnome3.dconf
         gnome3.gnome-backgrounds
         gnome3.gnome_control_center
         gnome3.gnome_icon_theme
+        gnome3.gnome-menus
         gnome3.gnome_settings_daemon
         gnome3.gnome_shell
         gnome3.gnome_themes_standard
-      ] ++ (lists.difference [
+      ] ++ (removePackagesByName [
         gnome3.baobab
+        gnome3.empathy
         gnome3.eog
         gnome3.epiphany
         gnome3.evince
@@ -81,12 +106,19 @@ in {
         gnome3.gnome-contacts
         gnome3.gnome-font-viewer
         gnome3.gnome-screenshot
+        gnome3.gnome-shell-extensions
         gnome3.gnome-system-log
         gnome3.gnome-system-monitor
         gnome3.gnome_terminal
+        gnome3.gnome-user-docs
 
         gnome3.file-roller
+        gnome3.gnome-tweak-tool
       ] config.environment.gnome3.excludePackages);
+
+    # Needed for themes and backgrounds
+    environment.pathsToLink = [ "/share" ];
+
   };