summary refs log tree commit diff
path: root/pkgs/servers
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-02-03 16:54:03 +0100
committerVladimír Čunát <vcunat@gmail.com>2016-02-03 16:57:19 +0100
commitae74c356d94b795eb07dfe9978788b49b70f5959 (patch)
treec13c6894b75f95d3a4dc4627efef508bb03dfba8 /pkgs/servers
parentc9790126312119ce5a2a8ac946d9f086e7ea9f55 (diff)
parent53e0f8b1cdf36574bfede6e62e2ac2739c3ef804 (diff)
downloadnixlib-ae74c356d94b795eb07dfe9978788b49b70f5959.tar
nixlib-ae74c356d94b795eb07dfe9978788b49b70f5959.tar.gz
nixlib-ae74c356d94b795eb07dfe9978788b49b70f5959.tar.bz2
nixlib-ae74c356d94b795eb07dfe9978788b49b70f5959.tar.lz
nixlib-ae74c356d94b795eb07dfe9978788b49b70f5959.tar.xz
nixlib-ae74c356d94b795eb07dfe9978788b49b70f5959.tar.zst
nixlib-ae74c356d94b795eb07dfe9978788b49b70f5959.zip
Merge recent 'staging' into closure-size
Let's get rid of those merge conflicts.
Diffstat (limited to 'pkgs/servers')
-rw-r--r--pkgs/servers/certificate-transparency/default.nix6
-rw-r--r--pkgs/servers/http/couchdb/default.nix7
-rw-r--r--pkgs/servers/http/nginx/default.nix4
-rw-r--r--pkgs/servers/http/nginx/modules.nix9
-rw-r--r--pkgs/servers/http/nginx/unstable.nix4
-rw-r--r--pkgs/servers/mail/dovecot/2.2.x-module_dir.patch20
-rw-r--r--pkgs/servers/mail/dovecot/2.2.x.nix54
-rw-r--r--pkgs/servers/mail/dovecot/plugins/antispam/default.nix34
-rw-r--r--pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix (renamed from pkgs/servers/mail/dovecot-pigeonhole/default.nix)23
-rw-r--r--pkgs/servers/mail/postfix/3.0.nix8
-rw-r--r--pkgs/servers/mail/postfix/post-install-script.patch28
-rw-r--r--pkgs/servers/matrix-synapse/default.nix2
-rw-r--r--pkgs/servers/nosql/mongodb/default.nix34
-rw-r--r--pkgs/servers/nosql/mongodb/valgrind-include.patch25
-rw-r--r--pkgs/servers/p910nd/default.nix7
-rw-r--r--pkgs/servers/rt/default.nix4
-rw-r--r--pkgs/servers/x11/xorg/darwin/0001-XQuartz-GLX-Use-__glXEnableExtension-to-build-extens.patch78
-rw-r--r--pkgs/servers/x11/xorg/darwin/0003-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch165
-rw-r--r--pkgs/servers/x11/xorg/darwin/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch316
-rw-r--r--pkgs/servers/x11/xorg/darwin/function-pointer-test.patch46
20 files changed, 199 insertions, 675 deletions
diff --git a/pkgs/servers/certificate-transparency/default.nix b/pkgs/servers/certificate-transparency/default.nix
index ebfa7427fc00..80fae89c76d8 100644
--- a/pkgs/servers/certificate-transparency/default.nix
+++ b/pkgs/servers/certificate-transparency/default.nix
@@ -3,8 +3,8 @@
 stdenv.mkDerivation rec {
   name = "certificate-transparency-${version}";
 
-  version = "2015-11-27";
-  rev = "dc5a51e55af989ff5871a6647166d00d0de478ab";
+  version = "2016-01-14";
+  rev = "250672b5aef3666edbdfc9a75b95a09e7a57ed08";
 
   meta = with stdenv.lib; {
     homepage = https://www.certificate-transparency.org/;
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     owner = "google";
     repo  = "certificate-transparency";
     rev   = rev;
-    sha256 = "14sgc2kcjjsnrykwcjin21h1f3v4kg83w6jqiq9qdm1ha165yhvx";
+    sha256 = "1gn0bqzkf09jvc2aq3da8fwhl65y7q57msqsh6iczvd6fdmrpfdj";
   };
 
   # need to disable regex support in evhtp or building will fail
diff --git a/pkgs/servers/http/couchdb/default.nix b/pkgs/servers/http/couchdb/default.nix
index 54412d2ab400..8b3edb27c17f 100644
--- a/pkgs/servers/http/couchdb/default.nix
+++ b/pkgs/servers/http/couchdb/default.nix
@@ -41,10 +41,11 @@ stdenv.mkDerivation rec {
     --enable-js-trunk
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A database that uses JSON for documents, JavaScript for MapReduce queries, and regular HTTP for an API";
     homepage = "http://couchdb.apache.org";
-    license = stdenv.lib.licenses.asl20;
-    maintainers = with stdenv.lib.maintainers; [ viric garbas ];
+    license = licenses.asl20;
+    platform = platforms.all;
+    maintainers = with maintainers; [ garbas ];
   };
 }
diff --git a/pkgs/servers/http/nginx/default.nix b/pkgs/servers/http/nginx/default.nix
index a07d00cd2d7d..f7789dff5a9c 100644
--- a/pkgs/servers/http/nginx/default.nix
+++ b/pkgs/servers/http/nginx/default.nix
@@ -6,10 +6,10 @@
 with stdenv.lib;
 
 let
-  version = "1.8.0";
+  version = "1.8.1";
   mainSrc = fetchurl {
     url = "http://nginx.org/download/nginx-${version}.tar.gz";
-    sha256 = "1mgkkmmwkhmpn68sdvbd73ssv6lpqhh864fsyvc1ij4hk4is3k13";
+    sha256 = "1dwpyw4pvhj68vxramqxm8f79pqz9lrm8mvifbn49h3615ikqjwg";
   };
 
 in
diff --git a/pkgs/servers/http/nginx/modules.nix b/pkgs/servers/http/nginx/modules.nix
index d0d587eb0410..efa84f0fa670 100644
--- a/pkgs/servers/http/nginx/modules.nix
+++ b/pkgs/servers/http/nginx/modules.nix
@@ -108,4 +108,13 @@
     };
     inputs = [ pkgs.pam ];
   };
+
+  statsd = {
+    src = fetchFromGitHub {
+      owner = "zebrafishlabs";
+      repo = "nginx-statsd";
+      rev = "b756a12abf110b9e36399ab7ede346d4bb86d691";
+      sha256 = "1psrb5v071idlplvbnaq904nlhqw1zrbw4aawfs278zcdmq67zn8";
+    };
+  };
 }
diff --git a/pkgs/servers/http/nginx/unstable.nix b/pkgs/servers/http/nginx/unstable.nix
index b5d672ae46ce..cfc55c0f55db 100644
--- a/pkgs/servers/http/nginx/unstable.nix
+++ b/pkgs/servers/http/nginx/unstable.nix
@@ -7,10 +7,10 @@
 with stdenv.lib;
 
 let
-  version = "1.9.9";
+  version = "1.9.10";
   mainSrc = fetchurl {
     url = "http://nginx.org/download/nginx-${version}.tar.gz";
-    sha256 = "0wwd0q00pnkw4gjn3izjr63sndp7piyc5k5mbjm369f824mvnrny";
+    sha256 = "1n9icvi9hq7gak21ixlhcyazjx2yjqlbws07i2habc6a8ildf57v";
   };
 
 in
diff --git a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch b/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
index 3ba11d41b1bd..a6edc8d83ee9 100644
--- a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
+++ b/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
@@ -6,7 +6,7 @@ diff -ur dovecot-2.2.12-orig/src/auth/main.c dovecot-2.2.12/src/auth/main.c
  	mod_set.filter_callback = auth_module_filter;
  
 -	modules = module_dir_load(AUTH_MODULE_DIR, NULL, &mod_set);
-+	modules = module_dir_load("/var/lib/dovecot/modules/auth", NULL, &mod_set);
++	modules = module_dir_load("/etc/dovecot/modules/auth", NULL, &mod_set);
  	module_dir_init(modules);
  
  	if (!worker)
@@ -15,7 +15,7 @@ diff -ur dovecot-2.2.12-orig/src/auth/main.c dovecot-2.2.12/src/auth/main.c
  	mod_set.ignore_missing = TRUE;
  
 -	modules = module_dir_load_missing(modules, AUTH_MODULE_DIR, names,
-+	modules = module_dir_load_missing(modules, "/var/lib/dovecot/modules/auth", names,
++	modules = module_dir_load_missing(modules, "/etc/dovecot/modules/auth", names,
  					  &mod_set);
  	module_dir_init(modules);
  }
@@ -27,7 +27,7 @@ diff -ur dovecot-2.2.12-orig/src/config/all-settings.c dovecot-2.2.12/src/config
  
  	.mail_plugins = "",
 -	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/var/lib/dovecot/modules",
++	.mail_plugin_dir = "/etc/dovecot/modules",
  
  	.mail_log_prefix = "%s(%u): ",
  
@@ -36,7 +36,7 @@ diff -ur dovecot-2.2.12-orig/src/config/all-settings.c dovecot-2.2.12/src/config
  	.libexec_dir = PKG_LIBEXECDIR,
  	.mail_plugins = "",
 -	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/var/lib/dovecot/modules",
++	.mail_plugin_dir = "/etc/dovecot/modules",
  	.auth_socket_path = "auth-userdb",
  	.doveadm_socket_path = "doveadm-server",
  	.doveadm_worker_count = 0,
@@ -49,7 +49,7 @@ diff -ur dovecot-2.2.12-orig/src/config/config-parser.c dovecot-2.2.12/src/confi
  	memset(&mod_set, 0, sizeof(mod_set));
  	mod_set.abi_version = DOVECOT_ABI_VERSION;
 -	modules = module_dir_load(CONFIG_MODULE_DIR, NULL, &mod_set);
-+	modules = module_dir_load("/var/lib/dovecot/modules/settings", NULL, &mod_set);
++	modules = module_dir_load("/etc/dovecot/modules/settings", NULL, &mod_set);
  	module_dir_init(modules);
  
  	i_array_init(&new_roots, 64);
@@ -61,7 +61,7 @@ diff -ur dovecot-2.2.12-orig/src/dict/main.c dovecot-2.2.12/src/dict/main.c
  	mod_set.require_init_funcs = TRUE;
  
 -	modules = module_dir_load(DICT_MODULE_DIR, NULL, &mod_set);
-+	modules = module_dir_load("/var/lib/dovecot/modules/dict", NULL, &mod_set);
++	modules = module_dir_load("/etc/dovecot/modules/dict", NULL, &mod_set);
  	module_dir_init(modules);
  
  	/* Register only after loading modules. They may contain SQL drivers,
@@ -73,7 +73,7 @@ diff -ur dovecot-2.2.12-orig/src/doveadm/doveadm-settings.c dovecot-2.2.12/src/d
  	.libexec_dir = PKG_LIBEXECDIR,
  	.mail_plugins = "",
 -	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/var/lib/dovecot/modules",
++	.mail_plugin_dir = "/etc/dovecot/modules",
  	.auth_socket_path = "auth-userdb",
  	.doveadm_socket_path = "doveadm-server",
  	.doveadm_worker_count = 0,
@@ -86,7 +86,7 @@ diff -ur dovecot-2.2.12-orig/src/lib-fs/fs-api.c dovecot-2.2.12/src/lib-fs/fs-ap
  	mod_set.ignore_missing = TRUE;
  
 -	fs_modules = module_dir_load_missing(fs_modules, MODULE_DIR,
-+	fs_modules = module_dir_load_missing(fs_modules, "/var/lib/dovecot/modules",
++	fs_modules = module_dir_load_missing(fs_modules, "/etc/dovecot/modules",
  					     module_name, &mod_set);
  	module_dir_init(fs_modules);
  
@@ -99,7 +99,7 @@ diff -ur dovecot-2.2.12-orig/src/lib-ssl-iostream/iostream-ssl.c dovecot-2.2.12/
  	mod_set.abi_version = DOVECOT_ABI_VERSION;
  	mod_set.setting_name = "<built-in lib-ssl-iostream lookup>";
 -	ssl_module = module_dir_load(MODULE_DIR, plugin_name, &mod_set);
-+	ssl_module = module_dir_load("/var/lib/dovecot/modules", plugin_name, &mod_set);
++	ssl_module = module_dir_load("/etc/dovecot/modules", plugin_name, &mod_set);
  
  	ssl_vfuncs = module_get_symbol(ssl_module, "ssl_vfuncs");
  	if (ssl_vfuncs == NULL) {
@@ -112,7 +112,7 @@ diff -ur dovecot-2.2.12-orig/src/lib-storage/mail-storage-settings.c dovecot-2.2
  
  	.mail_plugins = "",
 -	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/var/lib/dovecot/modules",
++	.mail_plugin_dir = "/etc/dovecot/modules",
  
  	.mail_log_prefix = "%s(%u): ",
  
diff --git a/pkgs/servers/mail/dovecot/2.2.x.nix b/pkgs/servers/mail/dovecot/2.2.x.nix
index 2d38f3f5cef3..ec4c5c935af0 100644
--- a/pkgs/servers/mail/dovecot/2.2.x.nix
+++ b/pkgs/servers/mail/dovecot/2.2.x.nix
@@ -1,23 +1,38 @@
-{ stdenv, fetchurl, perl, systemd, openssl, pam, bzip2, zlib, openldap
-, inotify-tools, clucene_core_2, sqlite }:
+{ stdenv, lib, fetchurl, perl, pkgconfig, systemd, openssl
+, bzip2, zlib, inotify-tools, pam, libcap
+, clucene_core_2, icu, openldap
+# Auth modules
+, withMySQL ? false, libmysql
+, withPgSQL ? false, postgresql
+, withSQLite ? true, sqlite
+}:
 
 stdenv.mkDerivation rec {
-  name = "dovecot-2.2.19";
+  name = "dovecot-2.2.21";
 
-  buildInputs = [ perl openssl bzip2 zlib openldap clucene_core_2 sqlite ]
-    ++ stdenv.lib.optionals (stdenv.isLinux) [ systemd pam inotify-tools ];
+  nativeBuildInputs = [ perl pkgconfig ];
+  buildInputs = [ openssl bzip2 zlib clucene_core_2 icu openldap ]
+    ++ lib.optionals (stdenv.isLinux) [ systemd pam libcap inotify-tools ]
+    ++ lib.optional withMySQL libmysql
+    ++ lib.optional withPgSQL postgresql
+    ++ lib.optional withSQLite sqlite;
 
   src = fetchurl {
     url = "http://dovecot.org/releases/2.2/${name}.tar.gz";
-    sha256 = "17sf5aancad4pg1vx1606k99389wg76blpqzmnmxlz4hklzix7km";
+    sha256 = "080bil83gr2dski4gk2bxykg2g497kqm2hn2z4xkbw71b6g17dvs";
   };
 
   preConfigure = ''
-    substituteInPlace src/config/settings-get.pl --replace \
-      "/usr/bin/env perl" "${perl}/bin/perl"
+    patchShebangs src/config/settings-get.pl
   '';
 
-  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+  # We need this for sysconfdir, see remark below.
+  installFlags = [ "DESTDIR=$(out)" ];
+
+  postInstall = ''
+    cp -r $out/$out/* $out
+    rm -rf $out/$(echo "$out" | cut -d "/" -f2)
+  '' + lib.optionalString stdenv.isDarwin ''
     install_name_tool -change libclucene-shared.1.dylib \
         ${clucene_core_2}/lib/libclucene-shared.1.dylib \
         $out/lib/dovecot/lib21_fts_lucene_plugin.so
@@ -27,10 +42,9 @@ stdenv.mkDerivation rec {
   '';
 
   patches = [
-    # Make dovecot look for plugins in /var/lib/dovecot/modules
-    # so we can symlink plugins from several packages there
-    # The symlinking needs to be done in NixOS, as part of the
-    # dovecot service start-up
+    # Make dovecot look for plugins in /etc/dovecot/modules
+    # so we can symlink plugins from several packages there.
+    # The symlinking needs to be done in NixOS.
     ./2.2.x-module_dir.patch
   ];
 
@@ -38,15 +52,19 @@ stdenv.mkDerivation rec {
     # It will hardcode this for /var/lib/dovecot.
     # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626211
     "--localstatedir=/var"
+    # We need this so utilities default to reading /etc/dovecot/dovecot.conf file.
+    "--sysconfdir=/etc"
     "--with-ldap"
-    "--with-lucene"
     "--with-ssl=openssl"
-    "--with-sqlite"
     "--with-zlib"
     "--with-bzlib"
-  ] ++ stdenv.lib.optionals (stdenv.isLinux) [
-    "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
-  ];
+    "--with-ldap"
+    "--with-lucene"
+    "--with-icu"
+  ] ++ lib.optional (stdenv.isLinux) "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
+    ++ lib.optional withMySQL "--with-mysql"
+    ++ lib.optional withPgSQL "--with-pgsql"
+    ++ lib.optional withSQLite "--with-sqlite";
 
   meta = {
     homepage = "http://dovecot.org/";
diff --git a/pkgs/servers/mail/dovecot/plugins/antispam/default.nix b/pkgs/servers/mail/dovecot/plugins/antispam/default.nix
new file mode 100644
index 000000000000..1a1ba1ad4486
--- /dev/null
+++ b/pkgs/servers/mail/dovecot/plugins/antispam/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchhg, autoconf, automake, dovecot, openssl }:
+
+stdenv.mkDerivation {
+  name = "dovecot-antispam-20130429";
+
+  src = fetchhg {
+    url = "http://hg.dovecot.org/dovecot-antispam-plugin/";
+    rev = "5ebc6aae4d7c";
+    sha256 = "181i79c9sf3a80mgmycfq1f77z7fpn3j2s0qiddrj16h3yklf4gv";
+  };
+
+  buildInputs = [ dovecot openssl ];
+  nativeBuildInputs = [ autoconf automake ];
+
+  preConfigure = ''
+    ./autogen.sh
+    # Ugly hack; any ideas?
+    sed "s,^dovecot_moduledir=.*,dovecot_moduledir=$out/lib/dovecot," ${dovecot}/lib/dovecot/dovecot-config > dovecot-config
+  '';
+
+  configureFlags = [
+    "--with-dovecot=."
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://wiki2.dovecot.org/Plugins/Antispam;
+    description = "An antispam plugin for the Dovecot IMAP server";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ abbradar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/servers/mail/dovecot-pigeonhole/default.nix b/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix
index 3ee73520d7ad..385cf7d35ba8 100644
--- a/pkgs/servers/mail/dovecot-pigeonhole/default.nix
+++ b/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix
@@ -1,15 +1,15 @@
-{stdenv, fetchurl, dovecot22, openssl}:
+{ stdenv, fetchurl, dovecot, openssl }:
 
 stdenv.mkDerivation rec {
   name = "dovecot-pigeonhole-${version}";
-  version = "0.4.3";
+  version = "0.4.10";
 
   src = fetchurl {
     url = "http://pigeonhole.dovecot.org/releases/2.2/dovecot-2.2-pigeonhole-${version}.tar.gz";
-    sha256 = "0mypnkc980s3kd1bmy4f93dliwg6n8jfsac8r51jrpvv0ymz94nn";
-  };  
+    sha256 = "0vvjj1yjr189rn8f41z5rj8gfvk24a8j33q6spb6bd6k1wbfgpz9";
+  };
 
-  buildInputs = [ dovecot22 openssl ];
+  buildInputs = [ dovecot openssl ];
 
   preConfigure = ''
     substituteInPlace src/managesieve/managesieve-settings.c --replace \
@@ -18,18 +18,21 @@ stdenv.mkDerivation rec {
     substituteInPlace src/managesieve-login/managesieve-login-settings.c --replace \
       ".executable = \"managesieve-login\"" \
       ".executable = \"$out/libexec/dovecot/managesieve-login\""
-  ''; 
+  '';
 
-  configureFlags = [ 
-    "--with-dovecot=${dovecot22}/lib/dovecot"
+  configureFlags = [
+    "--with-dovecot=${dovecot}/lib/dovecot"
     "--without-dovecot-install-dirs"
     "--with-moduledir=$(out)/lib/dovecot"
-  ];  
+  ];
+
+  enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
     homepage = http://pigeonhole.dovecot.org/;
     description = "A sieve plugin for the Dovecot IMAP server";
     license = licenses.lgpl21;
     maintainers = [ maintainers.rickynils ];
-  };  
+    platforms = platforms.linux;
+  };
 }
diff --git a/pkgs/servers/mail/postfix/3.0.nix b/pkgs/servers/mail/postfix/3.0.nix
index 73ab8c8116f3..9ea151e597bb 100644
--- a/pkgs/servers/mail/postfix/3.0.nix
+++ b/pkgs/servers/mail/postfix/3.0.nix
@@ -35,10 +35,14 @@ in stdenv.mkDerivation rec {
                 ++ lib.optional withMySQL libmysql
                 ++ lib.optional withSQLite sqlite;
 
-  patches = [ ./postfix-script-shell.patch ./postfix-3.0-no-warnings.patch ];
+  patches = [ ./postfix-script-shell.patch ./postfix-3.0-no-warnings.patch ./post-install-script.patch ];
 
   preBuild = ''
     sed -e '/^PATH=/d' -i postfix-install
+    sed -e "s|@PACKAGE@|$out|" -i conf/post-install
+
+    # post-install need skip permissions check/set on all symlinks following to /nix/store
+    sed -e "s|@NIX_STORE@|$NIX_STORE|" -i conf/post-install
 
     export command_directory=$out/sbin
     export config_directory=/etc/postfix
@@ -63,7 +67,7 @@ in stdenv.mkDerivation rec {
   postInstall = ''
     mkdir -p $out
     mv -v installdir/$out/* $out/
-    mv -v installdir/etc $out/etc
+    cp -rv installdir/etc $out
     sed -e '/^PATH=/d' -i $out/libexec/postfix/post-install
     wrapProgram $out/libexec/postfix/post-install \
       --prefix PATH ":" ${coreutils}/bin:${findutils}/bin:${gnugrep}/bin
diff --git a/pkgs/servers/mail/postfix/post-install-script.patch b/pkgs/servers/mail/postfix/post-install-script.patch
new file mode 100644
index 000000000000..350fbf929b74
--- /dev/null
+++ b/pkgs/servers/mail/postfix/post-install-script.patch
@@ -0,0 +1,28 @@
+--- a/conf/post-install	1970-01-01 03:00:01.000000000 +0300
++++ b/conf/post-install	2016-01-20 13:25:18.382233172 +0200
+@@ -254,6 +254,8 @@
+ }
+ 
+ # Bootstrapping problem.
++meta_directory="@PACKAGE@/etc/postfix"
++command_directory="@PACKAGE@/bin"
+ 
+ if [ -n "$command_directory" ]
+ then
+@@ -528,7 +530,16 @@
+ 	    # Skip uninstalled files.
+ 	    case $path in
+ 	    no|no/*) continue;;
++        # Skip immutable files from package, correct permissions provided by Nix.
++        @PACKAGE@/*) continue;
+ 	    esac
++        # Also skip symlinks following to /nix/store
++        if test -L $path; then
++            case "$(readlink $path)" in
++                @NIX_STORE@/*) continue;
++            esac
++        fi
++
+ 	    # Pick up the flags.
+ 	    case $flags in *u*) upgrade_flag=1;; *) upgrade_flag=;; esac
+ 	    case $flags in *c*) create_flag=1;; *) create_flag=;; esac
diff --git a/pkgs/servers/matrix-synapse/default.nix b/pkgs/servers/matrix-synapse/default.nix
index 66d9e7258f4c..714ff9d002c8 100644
--- a/pkgs/servers/matrix-synapse/default.nix
+++ b/pkgs/servers/matrix-synapse/default.nix
@@ -26,7 +26,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = with pythonPackages; [
     blist canonicaljson daemonize dateutil frozendict pillow pybcrypt pyasn1
     pydenticon pymacaroons-pynacl pynacl pyopenssl pysaml2 pytz requests2
-    service-identity signedjson systemd twisted15 ujson unpaddedbase64 pyyaml
+    service-identity signedjson systemd twisted ujson unpaddedbase64 pyyaml
     matrix-angular-sdk
   ];
 
diff --git a/pkgs/servers/nosql/mongodb/default.nix b/pkgs/servers/nosql/mongodb/default.nix
index 60a37456b4bb..2ea255e4432d 100644
--- a/pkgs/servers/nosql/mongodb/default.nix
+++ b/pkgs/servers/nosql/mongodb/default.nix
@@ -2,17 +2,21 @@
 , zlib, libyamlcpp, sasl, openssl, libpcap, wiredtiger
 }:
 
+# Note:
+# The command line tools are written in Go as part of a different package (mongodb-tools)
+
 with stdenv.lib;
 
-let version = "3.0.7";
+let version = "3.2.1";
     system-libraries = [
       "pcre"
+      #"asio" -- XXX use package?
       #"wiredtiger"
       "boost"
       "snappy"
       "zlib"
-      # "v8"
-      # "stemmer" -- not nice to package yet (no versioning, no makefile, no shared libs)
+      #"valgrind" -- mongodb only requires valgrind.h, which is vendored in the source.
+      #"stemmer"  -- not nice to package yet (no versioning, no makefile, no shared libs).
       "yaml"
     ] ++ optionals stdenv.isLinux [ "tcmalloc" ];
     buildInputs = [
@@ -21,19 +25,17 @@ let version = "3.0.7";
     ]; # ++ optional stdenv.is64bit wiredtiger;
 
     other-args = concatStringsSep " " ([
-      # these are opt-in, lol
-      "--cc-use-shell-environment"
-      "--cxx-use-shell-environment"
-
-      "--c++11=on"
       "--ssl"
       #"--rocksdb" # Don't have this packaged yet
       "--wiredtiger=${if stdenv.is64bit then "on" else "off"}"
-      "--js-engine=v8-3.25"
+      "--js-engine=mozjs"
       "--use-sasl-client"
       "--disable-warnings-as-errors"
-      "--variant-dir=nixos" # Needed so we don't produce argument lists that are too long for gcc / ld
-      "--extrapath=${concatStringsSep "," buildInputs}"
+      "VARIANT_DIR=nixos" # Needed so we don't produce argument lists that are too long for gcc / ld
+      "CC=$CC"
+      "CXX=$CXX"
+      "CCFLAGS=\"${concatStringsSep " " (map (input: "-I${input}/include") buildInputs)}\""
+      "LINKFLAGS=\"${concatStringsSep " " (map (input: "-L${input}/lib") buildInputs)}\""
     ] ++ map (lib: "--use-system-${lib}") system-libraries);
 
 in stdenv.mkDerivation rec {
@@ -41,12 +43,18 @@ in stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://downloads.mongodb.org/src/mongodb-src-r${version}.tar.gz";
-    sha256 = "1rx7faqsq733vdriavdfmvx75nhjq9nm5bgwd3hw1cxzqgkvl99d";
+    sha256 = "059gskly8maj2c9iy46gccx7a9ya522pl5aaxl5vss5bllxilhsh";
   };
 
   nativeBuildInputs = [ scons ];
   inherit buildInputs;
 
+  # When not building with the system valgrind, the build should use the
+  # vendored header file - regardless of whether or not we're using the system
+  # tcmalloc - so we need to lift the include path manipulation out of the
+  # conditional.
+  patches = [ ./valgrind-include.patch ];
+
   postPatch = ''
     # fix environment variable reading
     substituteInPlace SConstruct \
@@ -76,7 +84,7 @@ in stdenv.mkDerivation rec {
     homepage = http://www.mongodb.org;
     license = licenses.agpl3;
 
-    maintainers = with maintainers; [ bluescreen303 offline wkennington ];
+    maintainers = with maintainers; [ bluescreen303 offline wkennington cstrahan ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/servers/nosql/mongodb/valgrind-include.patch b/pkgs/servers/nosql/mongodb/valgrind-include.patch
new file mode 100644
index 000000000000..6b401525c080
--- /dev/null
+++ b/pkgs/servers/nosql/mongodb/valgrind-include.patch
@@ -0,0 +1,25 @@
+diff --git a/src/mongo/util/SConscript b/src/mongo/util/SConscript
+index 6add602..6e232d8 100644
+--- a/src/mongo/util/SConscript
++++ b/src/mongo/util/SConscript
+@@ -241,9 +241,6 @@ if get_option('allocator') == 'tcmalloc':
+         # Add in the include path for our vendored tcmalloc.
+         tcmspEnv.InjectThirdPartyIncludePaths('gperftools')
+ 
+-        # Include valgrind since tcmalloc disables itself while running under valgrind
+-        tcmspEnv.InjectThirdPartyIncludePaths('valgrind')
+-
+         # If our changes to tcmalloc are ever upstreamed, this should become set based on a top
+         # level configure check, though its effects should still be scoped just to these files.
+         tcmspEnv.Append(
+@@ -252,6 +249,10 @@ if get_option('allocator') == 'tcmalloc':
+             ]
+         )
+ 
++    # Include valgrind since tcmalloc disables itself while running under valgrind
++    if not use_system_version_of_library('valgrind'):
++        tcmspEnv.InjectThirdPartyIncludePaths('valgrind')
++
+     tcmspEnv.Library(
+         target='tcmalloc_set_parameter',
+         source=[
diff --git a/pkgs/servers/p910nd/default.nix b/pkgs/servers/p910nd/default.nix
index 150bf196b0dd..0f7cc19339d8 100644
--- a/pkgs/servers/p910nd/default.nix
+++ b/pkgs/servers/p910nd/default.nix
@@ -1,10 +1,8 @@
 { stdenv, fetchurl }:
 
-let
-  version = "0.97";
+stdenv.mkDerivation rec {
   name = "p910nd-${version}";
-in stdenv.mkDerivation {
-  inherit name;
+  version = "0.97";
 
   src = fetchurl {
     sha256 = "0vy2qf386dif1nqznmy3j953mq7c4lk6j2hgyzkbmfi4msiq1jaa";
@@ -27,7 +25,6 @@ in stdenv.mkDerivation {
   '';
 
   meta = with stdenv.lib; {
-    inherit version;
     description = "Small printer daemon passing jobs directly to the printer";
     longDescription = ''
       p910nd is a small printer daemon intended for diskless platforms that
diff --git a/pkgs/servers/rt/default.nix b/pkgs/servers/rt/default.nix
index 7f8c372c3355..253f90e68efa 100644
--- a/pkgs/servers/rt/default.nix
+++ b/pkgs/servers/rt/default.nix
@@ -1,7 +1,9 @@
 { stdenv, fetchurl, perl }:
 
 stdenv.mkDerivation rec {
-  name = "rt-4.2.12";
+  name = "rt-${version}";
+
+  version = "4.2.12";
 
   src = fetchurl {
     url = "https://download.bestpractical.com/pub/rt/release/${name}.tar.gz";
diff --git a/pkgs/servers/x11/xorg/darwin/0001-XQuartz-GLX-Use-__glXEnableExtension-to-build-extens.patch b/pkgs/servers/x11/xorg/darwin/0001-XQuartz-GLX-Use-__glXEnableExtension-to-build-extens.patch
deleted file mode 100644
index ff297a8df96a..000000000000
--- a/pkgs/servers/x11/xorg/darwin/0001-XQuartz-GLX-Use-__glXEnableExtension-to-build-extens.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From fff30cdea46616eb92f4dd9402ebd27fdb55e13b Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
-Date: Sun, 1 Jun 2014 04:29:19 -0700
-Subject: [PATCH 1/6] XQuartz: GLX: Use __glXEnableExtension to build
- extensions list
-
-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
-(cherry picked from commit 3790001ea29658872aebda00a03170e392b47878)
----
- hw/xquartz/GL/indirect.c | 37 +++++++++++++++++++++++++++++++------
- 1 file changed, 31 insertions(+), 6 deletions(-)
-
-diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c
-index 19b7d86..4e6ab3d 100644
---- a/hw/xquartz/GL/indirect.c
-+++ b/hw/xquartz/GL/indirect.c
-@@ -52,6 +52,7 @@
- 
- #include "visualConfigs.h"
- #include "dri.h"
-+#include "extension_string.h"
- 
- #include "darwin.h"
- #define GLAQUA_DEBUG_MSG(msg, args ...) ASL_LOG(ASL_LEVEL_DEBUG, "GLXAqua", \
-@@ -111,6 +112,10 @@ typedef struct __GLXAquaDrawable __GLXAquaDrawable;
-  */
- struct __GLXAquaScreen {
-     __GLXscreen base;
-+
-+    /* Supported GLX extensions */
-+    unsigned char glx_enable_bits[__GLX_EXT_BYTES];
-+
-     int index;
-     int num_vis;
- };
-@@ -541,13 +546,33 @@ __glXAquaScreenProbe(ScreenPtr pScreen)
- 
-     screen->base.GLXmajor = 1;
-     screen->base.GLXminor = 4;
--    screen->base.GLXextensions = strdup("GLX_SGIX_fbconfig "
--                                        "GLX_SGIS_multisample "
--                                        "GLX_ARB_multisample "
--                                        "GLX_EXT_visual_info "
--                                        "GLX_EXT_import_context ");
- 
--    /*We may be able to add more GLXextensions at a later time. */
-+    memset(screen->glx_enable_bits, 0, __GLX_EXT_BYTES);
-+
-+    __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_info");
-+    __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_rating");
-+    __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_import_context");
-+    __glXEnableExtension(screen->glx_enable_bits, "GLX_OML_swap_method");
-+    __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIX_fbconfig");
-+
-+    __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIS_multisample");
-+    __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_multisample");
-+
-+    //__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context");
-+    //__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context_profile");
-+
-+    // Generate the GLX extensions string (overrides that set by __glXScreenInit())
-+    {
-+        unsigned int buffer_size =
-+            __glXGetExtensionString(screen->glx_enable_bits, NULL);
-+        if (buffer_size > 0) {
-+            free(screen->base.GLXextensions);
-+
-+            screen->base.GLXextensions = xnfalloc(buffer_size);
-+            __glXGetExtensionString(screen->glx_enable_bits,
-+                                    screen->base.GLXextensions);
-+        }
-+    }
- 
-     return &screen->base;
- }
--- 
-2.3.2 (Apple Git-55)
-
diff --git a/pkgs/servers/x11/xorg/darwin/0003-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch b/pkgs/servers/x11/xorg/darwin/0003-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
deleted file mode 100644
index 395853f940fe..000000000000
--- a/pkgs/servers/x11/xorg/darwin/0003-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From fa5c83fe9129c9cd9cde1420a32112ca2f17566c Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston <jeremyhu@apple.com>
-Date: Fri, 30 Apr 2010 13:08:25 -0700
-Subject: [PATCH 3/6] Workaround the GC clipping problem in miPaintWindow and
- add some debugging output.
-
-Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
----
- mi/miexpose.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 94 insertions(+), 10 deletions(-)
-
-diff --git a/mi/miexpose.c b/mi/miexpose.c
-index fc4dbc0..5e31b83 100644
---- a/mi/miexpose.c
-+++ b/mi/miexpose.c
-@@ -408,7 +408,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
- void RootlessStartDrawing(WindowPtr pWin);
- void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
- Bool IsFramedWindow(WindowPtr pWin);
--#endif
-+#include "../fb/fb.h"
-+#endif 
- 
- void
- miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
-@@ -437,23 +438,37 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
-     Bool solid = TRUE;
-     DrawablePtr drawable = &pWin->drawable;
- 
-+#ifdef XQUARTZ_CLIP_DEBUG
-+    ErrorF("START %d BS %d (pR = %ld)\n", what, pWin->backgroundState, ParentRelative);
-+    ErrorF("      Rgn: %d %d %d %d\n", prgn->extents.x1, prgn->extents.y1,
-+	                               prgn->extents.x2 - prgn->extents.x1,
-+	                               prgn->extents.y2 - prgn->extents.y1);
-+    ErrorF("      Win: %d %d (%d %d) %d %d\n", pWin->origin.x, pWin->origin.y,
-+	                                       pWin->winSize.extents.x1, pWin->winSize.extents.y1,
-+	                                       pWin->winSize.extents.x2 - pWin->winSize.extents.x1,
-+					       pWin->winSize.extents.y2 - pWin->winSize.extents.y1);
-+    ErrorF("     Draw: %d %d %d %d\n", pWin->drawable.x, pWin->drawable.y,
-+				       pWin->drawable.width, pWin->drawable.height);
-+#endif
-+
- #ifdef ROOTLESS
-     if (!drawable || drawable->type == UNDRAWABLE_WINDOW)
-         return;
-+#endif
-+    
-+    if (what == PW_BACKGROUND)
-+    {
-+#ifdef ROOTLESS
-+        if(IsFramedWindow(pWin)) {
-+            RootlessStartDrawing(pWin);
-+            RootlessDamageRegion(pWin, prgn);
- 
--    if (IsFramedWindow(pWin)) {
--        RootlessStartDrawing(pWin);
--        RootlessDamageRegion(pWin, prgn);
--
--        if (pWin->backgroundState == ParentRelative) {
--            if ((what == PW_BACKGROUND) ||
--                (what == PW_BORDER && !pWin->borderIsPixel))
-+            if(pWin->backgroundState == ParentRelative) {
-                 RootlessSetPixmapOfAncestors(pWin);
-+            }
-         }
--    }
- #endif
- 
--    if (what == PW_BACKGROUND) {
-         while (pWin->backgroundState == ParentRelative)
-             pWin = pWin->parent;
- 
-@@ -478,6 +493,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
-     else {
-         PixmapPtr pixmap;
- 
-+#ifdef ROOTLESS
-+	if(IsFramedWindow(pWin)) {
-+	    RootlessStartDrawing(pWin);
-+	    RootlessDamageRegion(pWin, prgn);
-+	    
-+	    if(!pWin->borderIsPixel &&
-+		pWin->backgroundState == ParentRelative) {
-+		RootlessSetPixmapOfAncestors(pWin);
-+	    }
-+	}
-+#endif
-+
-         tile_x_off = drawable->x;
-         tile_y_off = drawable->y;
- 
-@@ -486,6 +513,12 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
-             return;
-         pixmap = (*pScreen->GetWindowPixmap) ((WindowPtr) drawable);
-         drawable = &pixmap->drawable;
-+
-+#ifdef XQUARTZ_CLIP_DEBUG
-+        ErrorF("     Draw: %d %d %d %d\n",
-+               drawable->x, drawable->y, drawable->width, drawable->height);    
-+#endif
-+	
- #ifdef COMPOSITE
-         draw_x_off = pixmap->screen_x;
-         draw_y_off = pixmap->screen_y;
-@@ -548,6 +581,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
-     ChangeGC(NullClient, pGC, gcmask, gcval);
-     ValidateGC(drawable, pGC);
- 
-+#ifdef XQUARTZ_CLIP_DEBUG
-+    ErrorF("       GC: %d %d %d %d\n",
-+	   pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
-+	   pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
-+	   pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);
-+#endif
-+    
-+#ifdef XQUARTZ
-+    /* Looks like our clipping isn't set right for some reason:
-+     * http://xquartz.macosforge.org/trac/ticket/290
-+     */
-+    if(what == PW_BORDER) {
-+
-+#if 0
-+	if(solid) {
-+#if 1
-+	    fbFillRegionSolid(&pWin->drawable,
-+			      prgn,
-+			      0,
-+			      fbReplicatePixel(fill.pixel,
-+					       pWin->drawable.bitsPerPixel));
-+#else
-+	    fbFillRegionSolid(drawable,
-+			      prgn,
-+			      0,
-+			      fbReplicatePixel(fill.pixel,
-+					       drawable->bitsPerPixel));
-+#endif
-+	    return;
-+	}
-+#endif
-+    
-+	pGC->pCompositeClip->extents.x1 += prgn->extents.x1;
-+	pGC->pCompositeClip->extents.y1 += prgn->extents.y1;
-+	pGC->pCompositeClip->extents.x2 += prgn->extents.x1;
-+	pGC->pCompositeClip->extents.y2 += prgn->extents.y1;
-+	
-+	if(pGC->pCompositeClip->extents.x2 > drawable->pScreen->width)
-+	    pGC->pCompositeClip->extents.x2 = drawable->pScreen->width;
-+	if(pGC->pCompositeClip->extents.y2 > drawable->pScreen->height)
-+	    pGC->pCompositeClip->extents.y2 = drawable->pScreen->height;
-+    }
-+#endif
-+
-+#ifdef XQUARTZ_CLIP_DEBUG
-+    ErrorF("       GC: %d %d %d %d\n",
-+	   pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
-+	   pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
-+	   pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);    
-+#endif
-+
-     numRects = RegionNumRects(prgn);
-     pbox = RegionRects(prgn);
-     for (i = numRects; --i >= 0; pbox++, prect++) {
--- 
-2.3.2 (Apple Git-55)
-
diff --git a/pkgs/servers/x11/xorg/darwin/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch b/pkgs/servers/x11/xorg/darwin/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch
deleted file mode 100644
index b9d4b18cf82a..000000000000
--- a/pkgs/servers/x11/xorg/darwin/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch
+++ /dev/null
@@ -1,316 +0,0 @@
-From a635e397d5830f7f60e3690a1bb36f7a725b915a Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston <jeremyhu@apple.com>
-Date: Fri, 12 Feb 2010 19:48:52 -0800
-Subject: [PATCH 5/6] fb: Revert fb changes that broke XQuartz
-
-http://bugs.freedesktop.org/show_bug.cgi?id=26124
-
-Revert "Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5."
-Revert "fb: Adjust transform or composite coordinates for pixman operations"
-
-http://bugs.freedesktop.org/26124
-
-This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
-This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
-
-Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
----
- fb/fb.h     |  3 +--
- fb/fbpict.c | 82 ++++++++++++++++++-------------------------------------------
- fb/fbtrap.c | 43 ++++++++++++++------------------
- 3 files changed, 43 insertions(+), 85 deletions(-)
-
-diff --git a/fb/fb.h b/fb/fb.h
-index ab110f3..59eaac3 100644
---- a/fb/fb.h
-+++ b/fb/fb.h
-@@ -1326,8 +1326,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
-                   RegionPtr pRegion, FbBits and, FbBits xor);
- 
- extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict,
--                                                 Bool has_clip,
--                                                 int *xoff, int *yoff);
-+                                                 Bool has_clip);
- 
- extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *);
- 
-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index cafb027..6ee63e9 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -46,23 +46,18 @@ fbComposite(CARD8 op,
-             INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
- {
-     pixman_image_t *src, *mask, *dest;
--    int src_xoff, src_yoff;
--    int msk_xoff, msk_yoff;
--    int dst_xoff, dst_yoff;
--
-     miCompositeSourceValidate(pSrc);
-     if (pMask)
-         miCompositeSourceValidate(pMask);
- 
--    src = image_from_pict(pSrc, FALSE, &src_xoff, &src_yoff);
--    mask = image_from_pict(pMask, FALSE, &msk_xoff, &msk_yoff);
--    dest = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
-+    src = image_from_pict(pSrc, TRUE);
-+    mask = image_from_pict(pMask, TRUE);
-+    dest = image_from_pict(pDst, TRUE);
- 
-     if (src && dest && !(pMask && !mask)) {
-         pixman_image_composite(op, src, mask, dest,
--                               xSrc + src_xoff, ySrc + src_yoff,
--                               xMask + msk_xoff, yMask + msk_yoff,
--                               xDst + dst_xoff, yDst + dst_yoff, width, height);
-+                               xSrc, ySrc, xMask, yMask, xDst, yDst,
-+                               width, height);
-     }
- 
-     free_pixman_pict(pSrc, src);
-@@ -289,20 +284,22 @@ create_conical_gradient_image(PictGradient * gradient)
- }
- 
- static pixman_image_t *
--create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-+create_bits_picture(PicturePtr pict, Bool has_clip)
- {
--    PixmapPtr pixmap;
-     FbBits *bits;
-     FbStride stride;
--    int bpp;
-+    int bpp, xoff, yoff;
-     pixman_image_t *image;
- 
--    fbGetDrawablePixmap(pict->pDrawable, pixmap, *xoff, *yoff);
--    fbGetPixmapBitsData(pixmap, bits, stride, bpp);
-+    fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
-+
-+    bits = (FbBits*)((CARD8*)bits +
-+                     (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
-+                     (pict->pDrawable->x + xoff) * (bpp / 8));
- 
-     image = pixman_image_create_bits((pixman_format_code_t) pict->format,
--                                     pixmap->drawable.width,
--                                     pixmap->drawable.height, (uint32_t *) bits,
-+                                     pict->pDrawable->width,
-+                                     pict->pDrawable->height, (uint32_t *) bits,
-                                      stride * sizeof(FbStride));
- 
-     if (!image)
-@@ -321,57 +318,31 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-         if (pict->clientClip)
-             pixman_image_set_has_client_clip(image, TRUE);
- 
--        if (*xoff || *yoff)
--            pixman_region_translate(pict->pCompositeClip, *xoff, *yoff);
-+        pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
- 
-         pixman_image_set_clip_region(image, pict->pCompositeClip);
- 
--        if (*xoff || *yoff)
--            pixman_region_translate(pict->pCompositeClip, -*xoff, -*yoff);
-+        pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
-     }
- 
-     /* Indexed table */
-     if (pict->pFormat->index.devPrivate)
-         pixman_image_set_indexed(image, pict->pFormat->index.devPrivate);
- 
--    /* Add in drawable origin to position within the image */
--    *xoff += pict->pDrawable->x;
--    *yoff += pict->pDrawable->y;
--
-     return image;
- }
- 
- static pixman_image_t *image_from_pict_internal(PicturePtr pict, Bool has_clip,
--                                                int *xoff, int *yoff,
-                                                 Bool is_alpha_map);
- 
- static void
--set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
--                     int *xoff, int *yoff, Bool is_alpha_map)
-+set_image_properties(pixman_image_t * image, PicturePtr pict, Bool is_alpha_map)
- {
-     pixman_repeat_t repeat;
-     pixman_filter_t filter;
- 
-     if (pict->transform) {
--        /* For source images, adjust the transform to account
--         * for the drawable offset within the pixman image,
--         * then set the offset to 0 as it will be used
--         * to compute positions within the transformed image.
--         */
--        if (!has_clip) {
--            struct pixman_transform adjusted;
--
--            adjusted = *pict->transform;
--            pixman_transform_translate(&adjusted,
--                                       NULL,
--                                       pixman_int_to_fixed(*xoff),
--                                       pixman_int_to_fixed(*yoff));
--            pixman_image_set_transform(image, &adjusted);
--            *xoff = 0;
--            *yoff = 0;
--        }
--        else
--            pixman_image_set_transform(image, pict->transform);
-+        pixman_image_set_transform(image, pict->transform);
-     }
- 
-     switch (pict->repeatType) {
-@@ -399,10 +370,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
-      * as the alpha map for this operation
-      */
-     if (pict->alphaMap && !is_alpha_map) {
--        int alpha_xoff, alpha_yoff;
-         pixman_image_t *alpha_map =
--            image_from_pict_internal(pict->alphaMap, FALSE, &alpha_xoff,
--                                     &alpha_yoff, TRUE);
-+            image_from_pict_internal(pict->alphaMap, TRUE, TRUE);
- 
-         pixman_image_set_alpha_map(image, alpha_map, pict->alphaOrigin.x,
-                                    pict->alphaOrigin.y);
-@@ -436,8 +405,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
- }
- 
- static pixman_image_t *
--image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
--                         Bool is_alpha_map)
-+image_from_pict_internal(PicturePtr pict, Bool has_clip, Bool is_alpha_map)
- {
-     pixman_image_t *image = NULL;
- 
-@@ -445,7 +413,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
-         return NULL;
- 
-     if (pict->pDrawable) {
--        image = create_bits_picture(pict, has_clip, xoff, yoff);
-+        image = create_bits_picture(pict, has_clip);
-     }
-     else if (pict->pSourcePict) {
-         SourcePict *sp = pict->pSourcePict;
-@@ -463,19 +431,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
-             else if (sp->type == SourcePictTypeConical)
-                 image = create_conical_gradient_image(gradient);
-         }
--        *xoff = *yoff = 0;
-     }
- 
-     if (image)
--        set_image_properties(image, pict, has_clip, xoff, yoff, is_alpha_map);
--
-+        set_image_properties (image, pict, is_alpha_map);
-     return image;
- }
- 
- pixman_image_t *
--image_from_pict(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-+image_from_pict (PicturePtr pict, Bool has_clip)
- {
--    return image_from_pict_internal(pict, has_clip, xoff, yoff, FALSE);
-+    return image_from_pict_internal (pict, has_clip, FALSE);
- }
- 
- void
-diff --git a/fb/fbtrap.c b/fb/fbtrap.c
-index bf82f8f..0145ce9 100644
---- a/fb/fbtrap.c
-+++ b/fb/fbtrap.c
-@@ -36,13 +36,12 @@ fbAddTraps(PicturePtr pPicture,
-            INT16 x_off, INT16 y_off, int ntrap, xTrap * traps)
- {
-     pixman_image_t *image;
--    int dst_xoff, dst_yoff;
- 
--    if (!(image = image_from_pict(pPicture, FALSE, &dst_xoff, &dst_yoff)))
--        return;
--
--    pixman_add_traps(image, x_off + dst_xoff, y_off + dst_yoff,
--                     ntrap, (pixman_trap_t *) traps);
-+    if (!(image = image_from_pict (pPicture, FALSE)))
-+	return;
-+    
-+    pixman_add_traps(image, x_off, y_off,
-+                     ntrap, (pixman_trap_t *)traps);
- 
-     free_pixman_pict(pPicture, image);
- }
-@@ -52,13 +51,12 @@ fbRasterizeTrapezoid(PicturePtr pPicture,
-                      xTrapezoid * trap, int x_off, int y_off)
- {
-     pixman_image_t *image;
--    int dst_xoff, dst_yoff;
- 
--    if (!(image = image_from_pict(pPicture, FALSE, &dst_xoff, &dst_yoff)))
-+    if (!(image = image_from_pict (pPicture, FALSE)))
-         return;
- 
--    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *) trap,
--                               x_off + dst_xoff, y_off + dst_yoff);
-+    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *)trap,
-+                               x_off, y_off);
- 
-     free_pixman_pict(pPicture, image);
- }
-@@ -68,14 +66,12 @@ fbAddTriangles(PicturePtr pPicture,
-                INT16 x_off, INT16 y_off, int ntri, xTriangle * tris)
- {
-     pixman_image_t *image;
--    int dst_xoff, dst_yoff;
- 
--    if (!(image = image_from_pict(pPicture, FALSE, &dst_xoff, &dst_yoff)))
-+    if (!(image = image_from_pict (pPicture, FALSE)))
-         return;
--
--    pixman_add_triangles(image,
--                         dst_xoff + x_off, dst_yoff + y_off,
--                         ntri, (pixman_triangle_t *) tris);
-+    
-+    pixman_add_triangles(image, x_off, y_off, ntri,
-+                         (pixman_triangle_t *)tris);
- 
-     free_pixman_pict(pPicture, image);
- }
-@@ -98,13 +94,11 @@ fbShapes(CompositeShapesFunc composite,
-          int16_t ySrc, int nshapes, int shape_size, const uint8_t * shapes)
- {
-     pixman_image_t *src, *dst;
--    int src_xoff, src_yoff;
--    int dst_xoff, dst_yoff;
- 
-     miCompositeSourceValidate(pSrc);
- 
--    src = image_from_pict(pSrc, FALSE, &src_xoff, &src_yoff);
--    dst = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
-+    src = image_from_pict(pSrc, FALSE);
-+    dst = image_from_pict(pDst, TRUE);
- 
-     if (src && dst) {
-         pixman_format_code_t format;
-@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,
- 
-             for (i = 0; i < nshapes; ++i) {
-                 composite(op, src, dst, format,
--                          xSrc + src_xoff,
--                          ySrc + src_yoff,
--                          dst_xoff, dst_yoff, 1, shapes + i * shape_size);
-+                          xSrc, ySrc, 0, 0, 
-+                          1, shapes + i * shape_size);
-             }
-         }
-         else {
-@@ -143,8 +136,8 @@ fbShapes(CompositeShapesFunc composite,
-             }
- 
-             composite(op, src, dst, format,
--                      xSrc + src_xoff,
--                      ySrc + src_yoff, dst_xoff, dst_yoff, nshapes, shapes);
-+                      xSrc, ySrc, 0, 0,
-+                      nshapes, shapes);
-         }
- 
-         DamageRegionProcessPending(pDst->pDrawable);
--- 
-2.3.2 (Apple Git-55)
-
diff --git a/pkgs/servers/x11/xorg/darwin/function-pointer-test.patch b/pkgs/servers/x11/xorg/darwin/function-pointer-test.patch
deleted file mode 100644
index e521a12ba800..000000000000
--- a/pkgs/servers/x11/xorg/darwin/function-pointer-test.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-These are functions, not function pointers, so they always evaluate to true.
-
-diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m
-index 5445c6f..8574bf1 100644
---- a/hw/xquartz/X11Controller.m
-+++ b/hw/xquartz/X11Controller.m
-@@ -364,7 +364,6 @@ extern char *bundle_id_prefix;
-     }
- 
- #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
--    if (asl_log_descriptor) {
-         char *asl_sender;
-         aslmsg amsg = asl_new(ASL_TYPE_MSG);
-         assert(amsg);
-@@ -394,7 +393,6 @@ extern char *bundle_id_prefix;
-         asl_log_descriptor(aslc, amsg, ASL_LEVEL_NOTICE, stderr_pipe[0], ASL_LOG_DESCRIPTOR_READ);
- 
-         asl_free(amsg);
--    }
- #endif
- 
-     /* Do the fork-twice trick to avoid having to reap zombies */
-@@ -414,11 +412,9 @@ extern char *bundle_id_prefix;
- 
-         case 0:                                     /* child2 */
- #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
--            if (asl_log_descriptor) {
-                 /* Replace our stdout/stderr */
-                 dup2(stdout_pipe[1], STDOUT_FILENO);
-                 dup2(stderr_pipe[1], STDERR_FILENO);
--            }
- #endif
- 
-             /* close all open files except for standard streams */
-@@ -443,11 +439,9 @@ extern char *bundle_id_prefix;
-     }
- 
- #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
--    if (asl_log_descriptor) {
-         /* Close the write ends of the pipe */
-         close(stdout_pipe[1]);
-         close(stderr_pipe[1]);
--    }
- #endif
- }
-