about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/services/cluster/kubernetes.nix66
-rw-r--r--nixos/modules/services/misc/etcd.nix8
-rw-r--r--nixos/modules/services/networking/racoon.nix5
-rw-r--r--nixos/modules/services/networking/skydns.nix2
-rw-r--r--pkgs/applications/graphics/simple-scan/default.nix34
-rw-r--r--pkgs/applications/networking/cluster/kubernetes/default.nix21
-rw-r--r--pkgs/development/compilers/go/1.4.nix27
-rw-r--r--pkgs/development/compilers/go/1.5.nix118
-rw-r--r--pkgs/development/compilers/go/cacert-1.5.patch8
-rw-r--r--pkgs/development/compilers/go/remove-tools-1.5.patch60
-rw-r--r--pkgs/development/compilers/oraclejdk/jdk8-linux.nix6
-rw-r--r--pkgs/misc/cups/drivers/canon/default.nix220
-rw-r--r--pkgs/misc/cups/drivers/canon/preload.c81
-rw-r--r--pkgs/stdenv/generic/default.nix4
-rw-r--r--pkgs/tools/filesystems/s3fs/default.nix12
-rw-r--r--pkgs/tools/networking/driftnet/default.nix26
-rw-r--r--pkgs/tools/networking/netsniff-ng/default.nix6
-rw-r--r--pkgs/tools/package-management/packagekit/default.nix73
-rw-r--r--pkgs/tools/system/stress-ng/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix30
-rw-r--r--pkgs/top-level/python-packages.nix38
21 files changed, 742 insertions, 107 deletions
diff --git a/nixos/modules/services/cluster/kubernetes.nix b/nixos/modules/services/cluster/kubernetes.nix
index d00c1aaa1055..0abef29dd19c 100644
--- a/nixos/modules/services/cluster/kubernetes.nix
+++ b/nixos/modules/services/cluster/kubernetes.nix
@@ -78,12 +78,6 @@ in {
         type = types.int;
       };
 
-      readOnlyPort = mkOption {
-        description = "Kubernets apiserver read-only port.";
-        default = 7080;
-        type = types.int;
-      };
-
       securePort = mkOption {
         description = "Kubernetes apiserver secure port.";
         default = 6443;
@@ -102,6 +96,12 @@ in {
         type = types.str;
       };
 
+      clientCaFile = mkOption {
+        description = "Kubernetes apiserver CA file for client auth.";
+        default = "";
+        type = types.str;
+      };
+
       tokenAuth = mkOption {
         description = ''
           Kubernetes apiserver token authentication file. See
@@ -158,6 +158,19 @@ in {
         type = types.str;
       };
 
+      runtimeConfig = mkOption {
+        description = "Api runtime configuration";
+        default = "";
+        example = "api/all=false,api/v1=true";
+        type = types.str;
+      };
+
+      admissionControl = mkOption {
+        description = "Kubernetes admission control plugins to use.";
+        default = ["AlwaysAdmit"];
+        type = types.listOf types.str;
+      };
+
       extraOpts = mkOption {
         description = "Kubernetes apiserver extra command line options.";
         default = "";
@@ -222,12 +235,6 @@ in {
         type = types.str;
       };
 
-      machines = mkOption {
-        description = "Kubernetes controller list of machines to schedule to schedule onto";
-        default = [];
-        type = types.listOf types.str;
-      };
-
       extraOpts = mkOption {
         description = "Kubernetes controller extra command line options.";
         default = "";
@@ -260,6 +267,20 @@ in {
         type = types.int;
       };
 
+      healthz = {
+        bind = mkOption {
+          description = "Kubernetes kubelet healthz listening address.";
+          default = "127.0.0.1";
+          type = types.str;
+        };
+
+        port = mkOption {
+          description = "Kubernetes kubelet healthz port.";
+          default = 10248;
+          type = types.int;
+        };
+      };
+
       hostname = mkOption {
         description = "Kubernetes kubelet hostname override";
         default = config.networking.hostName;
@@ -374,7 +395,6 @@ in {
             --etcd-servers=${concatMapStringsSep "," (f: "http://${f}") cfg.etcdServers} \
             --insecure-bind-address=${cfg.apiserver.address} \
             --insecure-port=${toString cfg.apiserver.port} \
-            --read-only-port=${toString cfg.apiserver.readOnlyPort} \
             --bind-address=${cfg.apiserver.publicAddress} \
             --allow-privileged=${if cfg.apiserver.allowPrivileged then "true" else "false"} \
             ${optionalString (cfg.apiserver.tlsCertFile!="")
@@ -383,11 +403,16 @@ in {
               "--tls-private-key-file=${cfg.apiserver.tlsPrivateKeyFile}"} \
             ${optionalString (cfg.apiserver.tokenAuth!=[])
               "--token-auth-file=${tokenAuthFile}"} \
+            ${optionalString (cfg.apiserver.clientCaFile!="")
+              "--client-ca-file=${cfg.apiserver.clientCaFile}"} \
             --authorization-mode=${cfg.apiserver.authorizationMode} \
             ${optionalString (cfg.apiserver.authorizationMode == "ABAC")
               "--authorization-policy-file=${authorizationPolicyFile}"} \
             --secure-port=${toString cfg.apiserver.securePort} \
             --service-cluster-ip-range=${cfg.apiserver.portalNet} \
+            ${optionalString (cfg.apiserver.runtimeConfig!="")
+              "--runtime-config=${cfg.apiserver.runtimeConfig}"} \
+            --admission_control=${cfg.apiserver.admissionControl} \
             --logtostderr=true \
             ${optionalString cfg.verbose "--v=6 --log-flush-frequency=1s"} \
             ${cfg.apiserver.extraOpts}
@@ -431,7 +456,6 @@ in {
             --address=${cfg.controllerManager.address} \
             --port=${toString cfg.controllerManager.port} \
             --master=${cfg.controllerManager.master} \
-            --machines=${concatStringsSep "," cfg.controllerManager.machines} \
             --logtostderr=true \
             ${optionalString cfg.verbose "--v=6 --log-flush-frequency=1s"} \
             ${cfg.controllerManager.extraOpts}
@@ -454,6 +478,8 @@ in {
             --register-node=${if cfg.kubelet.registerNode then "true" else "false"} \
             --address=${cfg.kubelet.address} \
             --port=${toString cfg.kubelet.port} \
+            --healthz-bind-address=${cfg.kubelet.healthz.bind} \
+            --healthz-port=${toString cfg.kubelet.healthz.port} \
             --hostname-override=${cfg.kubelet.hostname} \
             --allow-privileged=${if cfg.kubelet.allowPrivileged then "true" else "false"} \
             --root-dir=${cfg.dataDir} \
@@ -504,9 +530,6 @@ in {
           User = "kubernetes";
         };
       };
-
-      services.skydns.enable = mkDefault true;
-      services.skydns.domain = mkDefault cfg.kubelet.clusterDomain;
     })
 
     (mkIf (any (el: el == "master") cfg.roles) {
@@ -524,6 +547,9 @@ in {
 
     (mkIf (any (el: el == "node" || el == "master") cfg.roles) {
       services.etcd.enable = mkDefault true;
+
+      services.skydns.enable = mkDefault true;
+      services.skydns.domain = mkDefault cfg.kubelet.clusterDomain;
     })
 
     (mkIf (
@@ -538,8 +564,10 @@ in {
         serviceConfig.Type = "oneshot";
         script = ''
           mkdir -p /var/run/kubernetes
-          chown kubernetes /var/run/kubernetes
-          ln -fs ${pkgs.writeText "kubernetes-dockercfg" cfg.dockerCfg} /var/run/kubernetes/.dockercfg
+          chown kubernetes /var/lib/kubernetes
+
+          rm ${cfg.dataDir}/.dockercfg || true
+          ln -fs ${pkgs.writeText "kubernetes-dockercfg" cfg.dockerCfg} ${cfg.dataDir}/.dockercfg
         '';
       };
 
diff --git a/nixos/modules/services/misc/etcd.nix b/nixos/modules/services/misc/etcd.nix
index 26d2753879d0..e1839b936f01 100644
--- a/nixos/modules/services/misc/etcd.nix
+++ b/nixos/modules/services/misc/etcd.nix
@@ -122,14 +122,6 @@ in {
         mkdir -m 0700 -p ${cfg.dataDir}
         if [ "$(id -u)" = 0 ]; then chown etcd ${cfg.dataDir}; fi
       '';
-      postStart = ''
-        until ${pkgs.etcdctl}/bin/etcdctl set /nixos/state 'up'; do
-          sleep 1;
-        done
-        until ${pkgs.etcdctl}/bin/etcdctl get /nixos/state | grep up; do
-          sleep 1;
-        done
-      '';
     };
 
     environment.systemPackages = [ pkgs.etcdctl ];
diff --git a/nixos/modules/services/networking/racoon.nix b/nixos/modules/services/networking/racoon.nix
index 9428d9112a1b..86e13d1ea0d6 100644
--- a/nixos/modules/services/networking/racoon.nix
+++ b/nixos/modules/services/networking/racoon.nix
@@ -36,7 +36,10 @@ in {
         Type = "forking";
         Restart = "always";
       };
-      preStart = "rm /var/run/racoon.pid || true";
+      preStart = ''
+        rm /var/run/racoon.pid || true
+        mkdir -p /var/racoon
+      '';
     };
   };
 }
diff --git a/nixos/modules/services/networking/skydns.nix b/nixos/modules/services/networking/skydns.nix
index 3b9390914891..f5eb452fec62 100644
--- a/nixos/modules/services/networking/skydns.nix
+++ b/nixos/modules/services/networking/skydns.nix
@@ -79,7 +79,7 @@ in {
         ETCD_CACERT = cfg.etcd.caCert;
         SKYDNS_ADDR = cfg.address;
         SKYDNS_DOMAIN = cfg.domain;
-        SKYDNS_NAMESERVER = concatStringsSep "," cfg.nameservers;
+        SKYDNS_NAMESERVERS = concatStringsSep "," cfg.nameservers;
       };
       serviceConfig = {
         ExecStart = "${cfg.package}/bin/skydns";
diff --git a/pkgs/applications/graphics/simple-scan/default.nix b/pkgs/applications/graphics/simple-scan/default.nix
index 954b2e02136d..2591c3f7ffb8 100644
--- a/pkgs/applications/graphics/simple-scan/default.nix
+++ b/pkgs/applications/graphics/simple-scan/default.nix
@@ -1,15 +1,28 @@
-{ stdenv, fetchurl, cairo, colord, glib, gtk3, intltool, itstool, libxml2
-, makeWrapper, pkgconfig, saneBackends, systemd, vala }:
+{ stdenv, fetchurl, cairo, colord, glib, gtk3, gusb, intltool, itstool, libusb, libxml2
+, makeWrapper, packagekit, pkgconfig, saneBackends, systemd, vala }:
 
-let version = "3.17.4"; in
+let version = "3.17.90"; in
 stdenv.mkDerivation rec {
   name = "simple-scan-${version}";
 
   src = fetchurl {
-    sha256 = "1pslbv45g01g039zj2b01k08f763kkhzqw8wwz7yh27m7bjllnx6";
+    sha256 = "0xc3ln97dgvxrwy2qn82k9qvsr5kxksms4igzkivya3xpq2kx85c";
     url = "https://launchpad.net/simple-scan/3.17/${version}/+download/${name}.tar.xz";
   };
 
+  buildInputs = [ cairo colord glib gusb gtk3 libusb libxml2 packagekit
+    saneBackends systemd vala ];
+  nativeBuildInputs = [ intltool itstool makeWrapper pkgconfig ];
+
+  enableParallelBuilding = true;
+
+  doCheck = true;
+
+  preFixup = ''
+    wrapProgram "$out/bin/simple-scan" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
   meta = with stdenv.lib; {
     description = "Simple scanning utility";
     longDescription = ''
@@ -25,17 +38,4 @@ stdenv.mkDerivation rec {
     platforms = with platforms; linux;
     maintainers = with maintainers; [ nckx ];
   };
-
-  buildInputs = [ cairo colord glib gtk3 libxml2
-    saneBackends systemd vala ];
-  nativeBuildInputs = [ intltool itstool makeWrapper pkgconfig ];
-
-  enableParallelBuilding = true;
-
-  doCheck = true;
-
-  preFixup = ''
-    wrapProgram "$out/bin/simple-scan" \
-      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
-  '';
 }
diff --git a/pkgs/applications/networking/cluster/kubernetes/default.nix b/pkgs/applications/networking/cluster/kubernetes/default.nix
index a096d43b11cc..56d4cc7e769b 100644
--- a/pkgs/applications/networking/cluster/kubernetes/default.nix
+++ b/pkgs/applications/networking/cluster/kubernetes/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchFromGitHub, which, go, makeWrapper, iptables, rsync, utillinux, coreutils }:
+{ stdenv, fetchFromGitHub, which, go, makeWrapper, iptables, rsync, utillinux, coreutils, e2fsprogs, procps-ng }:
 
 stdenv.mkDerivation rec {
   name = "kubernetes-${version}";
-  version = "0.18.0";
+  version = "1.0.3";
 
   src = fetchFromGitHub {
     owner = "GoogleCloudPlatform";
     repo = "kubernetes";
     rev = "v${version}";
-    sha256 = "1adbd5n2fs1278f6kz6pd23813w2k4pgcxjl21idflh8jafxsyj7";
+    sha256 = "12wqw9agiz07wlw1sd0n41fn6xf74zn5sv37hslfa77w2d4ri5yb";
   };
 
   buildInputs = [ makeWrapper which go iptables rsync ];
@@ -26,14 +26,23 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    mkdir -p "$out/bin"
-    cp _output/local/go/bin/* "$out/bin/"
+    mkdir -p "$out/bin" "$out"/libexec/kubernetes/cluster
+    cp _output/local/go/bin/{kube*,hyperkube} "$out/bin/"
     cp cluster/addons/dns/kube2sky/kube2sky "$out/bin/"
+    cp cluster/saltbase/salt/helpers/safe_format_and_mount "$out/libexec/kubernetes"
+    cp -R hack "$out/libexec/kubernetes"
+    cp cluster/update-storage-objects.sh "$out/libexec/kubernetes/cluster"
+    makeWrapper "$out"/libexec/kubernetes/cluster/update-storage-objects.sh "$out"/bin/kube-update-storage-objects \
+      --prefix KUBE_BIN : "$out/bin"
   '';
 
   preFixup = ''
     wrapProgram "$out/bin/kube-proxy" --prefix PATH : "${iptables}/bin"
-    wrapProgram "$out/bin/kubelet" --prefix PATH : "${utillinux}/bin"
+    wrapProgram "$out/bin/kubelet" --prefix PATH : "${utillinux}/bin:${procps-ng}/bin"
+    chmod +x "$out/libexec/kubernetes/safe_format_and_mount"
+    wrapProgram "$out/libexec/kubernetes/safe_format_and_mount" --prefix PATH : "${e2fsprogs}/bin:${utillinux}/bin"
+    substituteInPlace "$out"/libexec/kubernetes/cluster/update-storage-objects.sh \
+      --replace KUBE_OUTPUT_HOSTBIN KUBE_BIN
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/compilers/go/1.4.nix b/pkgs/development/compilers/go/1.4.nix
index 559bd9b01c33..923112d12dc9 100644
--- a/pkgs/development/compilers/go/1.4.nix
+++ b/pkgs/development/compilers/go/1.4.nix
@@ -1,11 +1,10 @@
-{ stdenv, lib, fetchurl, bison, glibc, bash, coreutils, makeWrapper, tzdata, iana_etc, perl, goPackages
-
+{ stdenv, lib, fetchurl, tzdata, iana_etc, libcCross
+, pkgconfig
+, pcre
 , Security }:
 
 let
-  loader386 = "${glibc}/lib/ld-linux.so.2";
-  loaderAmd64 = "${glibc}/lib/ld-linux-x86-64.so.2";
-  loaderArm = "${glibc}/lib/ld-linux.so.3";
+  libc = if stdenv ? "cross" then libcCross else stdenv.cc.libc;
 in
 
 stdenv.mkDerivation rec {
@@ -17,10 +16,8 @@ stdenv.mkDerivation rec {
     sha256 = "3e5d07bc5214a1ffe187cf6406c5b5a80ee44f12f6bca97a5463db0afee2f6ac";
   };
 
-  # perl is used for testing go vet
-  buildInputs = [ bison bash makeWrapper perl ]
-             ++ lib.optionals stdenv.isLinux [ glibc ];
-
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pcre ];
   propagatedBuildInputs = lib.optional stdenv.isDarwin Security;
 
   # I'm not sure what go wants from its 'src', but the go installation manual
@@ -51,14 +48,18 @@ stdenv.mkDerivation rec {
     sed -i '/TestShutdownUnix/areturn' src/net/net_test.go
     # Disable the hostname test
     sed -i '/TestHostname/areturn' src/os/os_test.go
-    sed -i 's,/etc/protocols,${iana_etc}/etc/protocols,' src/net/lookup_unix.go
     # ParseInLocation fails the test
     sed -i '/TestParseInSydney/areturn' src/time/format_test.go
+
+    sed -i 's,/etc/protocols,${iana_etc}/etc/protocols,' src/net/lookup_unix.go
   '' + lib.optionalString stdenv.isLinux ''
     sed -i 's,/usr/share/zoneinfo/,${tzdata}/share/zoneinfo/,' src/time/zoneinfo_unix.go
-    sed -i 's,/lib/ld-linux.so.3,${loaderArm},' src/cmd/5l/asm.c
-    sed -i 's,/lib64/ld-linux-x86-64.so.2,${loaderAmd64},' src/cmd/6l/asm.c
-    sed -i 's,/lib/ld-linux.so.2,${loader386},' src/cmd/8l/asm.c
+
+    # Find the loader dynamically
+    LOADER="$(find ${libc}/lib -name ld-linux\* | head -n 1)"
+
+    # Replace references to the loader
+    find src/cmd -name asm.c -exec sed -i "s,/lib/ld-linux.*\.so\.[0-9],$LOADER," {} \;
   '' + lib.optionalString stdenv.isDarwin ''
     sed -i 's,"/etc","'"$TMPDIR"'",' src/os/os_test.go
     sed -i 's,/_go_os_test,'"$TMPDIR"'/_go_os_test,' src/os/path_test.go
diff --git a/pkgs/development/compilers/go/1.5.nix b/pkgs/development/compilers/go/1.5.nix
new file mode 100644
index 000000000000..8abafe0d117c
--- /dev/null
+++ b/pkgs/development/compilers/go/1.5.nix
@@ -0,0 +1,118 @@
+{ stdenv, lib, fetchurl, tzdata, iana_etc, go_1_4, runCommand
+, perl, which, pkgconfig, patch
+, pcre
+, Security }:
+
+let
+  goBootstrap = runCommand "go-bootstrap" {} ''
+    mkdir $out
+    cp -rf ${go_1_4}/* $out/
+    chmod -R u+w $out
+    find $out -name "*.c" -delete
+    cp -rf $out/bin/* $out/share/go/bin/
+  '';
+in
+
+stdenv.mkDerivation rec {
+  name = "go-${version}";
+  version = "1.5";
+
+  src = fetchurl {
+    url = "https://github.com/golang/go/archive/go${version}.tar.gz";
+    sha256 = "03g3w6af74xggqlgwf5xriqzl9a0q17sp0qbyq8qs55qls07r81p";
+  };
+
+  # perl is used for testing go vet
+  nativeBuildInputs = [ perl which pkgconfig patch ];
+  buildInputs = [ pcre ];
+  propagatedBuildInputs = lib.optional stdenv.isDarwin Security;
+
+  # I'm not sure what go wants from its 'src', but the go installation manual
+  # describes an installation keeping the src.
+  preUnpack = ''
+    mkdir -p $out/share
+    cd $out/share
+  '';
+
+  prePatch = ''
+    # Ensure that the source directory is named go
+    cd ..
+    if [ ! -d go ]; then
+      mv * go
+    fi
+
+    cd go
+    patchShebangs ./ # replace /bin/bash
+
+    # Disabling the 'os/http/net' tests (they want files not available in
+    # chroot builds)
+    rm src/net/{listen_test.go,parse_test.go,port_test.go}
+    rm src/syscall/exec_linux_test.go
+    # !!! substituteInPlace does not seems to be effective.
+    # The os test wants to read files in an existing path. Just don't let it be /usr/bin.
+    sed -i 's,/usr/bin,'"`pwd`", src/os/os_test.go
+    sed -i 's,/bin/pwd,'"`type -P pwd`", src/os/os_test.go
+    # Disable the unix socket test
+    sed -i '/TestShutdownUnix/areturn' src/net/net_test.go
+    # Disable the hostname test
+    sed -i '/TestHostname/areturn' src/os/os_test.go
+    # ParseInLocation fails the test
+    sed -i '/TestParseInSydney/areturn' src/time/format_test.go
+    # Remove the api check as it never worked
+    sed -i '/src\/cmd\/api\/run.go/ireturn nil' src/cmd/dist/test.go
+    # Remove the coverage test as we have removed this utility
+    sed -i '/TestCoverageWithCgo/areturn' src/cmd/go/go_test.go
+
+    sed -i 's,/etc/protocols,${iana_etc}/etc/protocols,' src/net/lookup_unix.go
+  '' + lib.optionalString stdenv.isLinux ''
+    sed -i 's,/usr/share/zoneinfo/,${tzdata}/share/zoneinfo/,' src/time/zoneinfo_unix.go
+  '' + lib.optionalString stdenv.isDarwin ''
+    sed -i 's,"/etc","'"$TMPDIR"'",' src/os/os_test.go
+    sed -i 's,/_go_os_test,'"$TMPDIR"'/_go_os_test,' src/os/path_test.go
+    sed -i '/TestRead0/areturn' src/os/os_test.go
+    sed -i '/TestSystemRoots/areturn' src/crypto/x509/root_darwin_test.go
+
+    touch $TMPDIR/group $TMPDIR/hosts $TMPDIR/passwd
+  '';
+
+  patches = [
+    ./cacert-1.5.patch
+    ./remove-tools-1.5.patch
+  ];
+
+  GOOS = if stdenv.isDarwin then "darwin" else "linux";
+  GOARCH = if stdenv.isDarwin then "amd64"
+           else if stdenv.system == "i686-linux" then "386"
+           else if stdenv.system == "x86_64-linux" then "amd64"
+           else if stdenv.isArm then "arm"
+           else throw "Unsupported system";
+  GOARM = stdenv.lib.optionalString (stdenv.system == "armv5tel-linux") "5";
+  GO386 = 387; # from Arch: don't assume sse2 on i686
+  CGO_ENABLED = 1;
+  GOROOT_BOOTSTRAP = "${goBootstrap}/share/go";
+
+  # The go build actually checks for CC=*/clang and does something different, so we don't
+  # just want the generic `cc` here.
+  CC = if stdenv.isDarwin then "clang" else "cc";
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    export GOROOT="$(pwd)/"
+    export GOBIN="$out/bin"
+    export PATH="$GOBIN:$PATH"
+    cd ./src
+    echo Building
+    ./all.bash
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with stdenv.lib; {
+    branch = "1.5";
+    homepage = http://golang.org/;
+    description = "The Go Programming language";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ cstrahan wkennington ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/compilers/go/cacert-1.5.patch b/pkgs/development/compilers/go/cacert-1.5.patch
new file mode 100644
index 000000000000..32c322a104e6
--- /dev/null
+++ b/pkgs/development/compilers/go/cacert-1.5.patch
@@ -0,0 +1,8 @@
+--- a/src/crypto/x509/root_linux.go	2015-08-19 23:06:11.115133174 +0200
++++ b/src/crypto/x509/root_linux.go	2015-08-19 23:07:04.238507161 +0200
+@@ -10,4 +10,5 @@
+ 	"/etc/pki/tls/certs/ca-bundle.crt",   // Fedora/RHEL
+ 	"/etc/ssl/ca-bundle.pem",             // OpenSUSE
+ 	"/etc/pki/tls/cacert.pem",            // OpenELEC
++	"/etc/ssl/certs/ca-bundle.crt",       // NixOS
+ }
diff --git a/pkgs/development/compilers/go/remove-tools-1.5.patch b/pkgs/development/compilers/go/remove-tools-1.5.patch
new file mode 100644
index 000000000000..00f4fac7476a
--- /dev/null
+++ b/pkgs/development/compilers/go/remove-tools-1.5.patch
@@ -0,0 +1,60 @@
+diff --git a/src/cmd/go/pkg.go b/src/cmd/go/pkg.go
+index 61e3d8d..f8475f4 100644
+--- a/src/cmd/go/pkg.go
++++ b/src/cmd/go/pkg.go
+@@ -665,7 +665,7 @@ var goTools = map[string]targetDir{
+ 	"cmd/asm":                              toTool,
+ 	"cmd/compile":                          toTool,
+ 	"cmd/cgo":                              toTool,
+-	"cmd/cover":                            toTool,
++	"nixos.org/x/tools/cmd/cover":          toTool,
+ 	"cmd/dist":                             toTool,
+ 	"cmd/doc":                              toTool,
+ 	"cmd/fix":                              toTool,
+@@ -676,9 +676,9 @@ var goTools = map[string]targetDir{
+ 	"cmd/pack":                             toTool,
+ 	"cmd/pprof":                            toTool,
+ 	"cmd/trace":                            toTool,
+-	"cmd/vet":                              toTool,
++	"nixos.org/x/tools/cmd/vet":            toTool,
+ 	"cmd/yacc":                             toTool,
+-	"golang.org/x/tools/cmd/godoc":         toBin,
++	"nixos.org/x/tools/cmd/godoc":          toBin,
+ 	"code.google.com/p/go.tools/cmd/cover": stalePath,
+ 	"code.google.com/p/go.tools/cmd/godoc": stalePath,
+ 	"code.google.com/p/go.tools/cmd/vet":   stalePath,
+diff --git a/src/go/build/build.go b/src/go/build/build.go
+index 496fe11..8c81dbd 100644
+--- a/src/go/build/build.go
++++ b/src/go/build/build.go
+@@ -1388,7 +1388,7 @@ func init() {
+ }
+ 
+ // ToolDir is the directory containing build tools.
+-var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
++var ToolDir = runtime.GOTOOLDIR()
+ 
+ // IsLocalImport reports whether the import path is
+ // a local import path, like ".", "..", "./foo", or "../foo".
+diff --git a/src/runtime/extern.go b/src/runtime/extern.go
+index d346362..fb22b6e 100644
+--- a/src/runtime/extern.go
++++ b/src/runtime/extern.go
+@@ -194,6 +194,17 @@ func GOROOT() string {
+ 	return defaultGoroot
+ }
+ 
++// GOTOOLDIR returns the root of the Go tree.
++// It uses the GOTOOLDIR environment variable, if set,
++// or else the root used during the Go build.
++func GOTOOLDIR() string {
++	s := gogetenv("GOTOOLDIR")
++	if s != "" {
++		return s
++	}
++	return GOROOT() + "/pkg/tool/" + GOOS + "_" + GOARCH
++}
++
+ // Version returns the Go tree's version string.
+ // It is either the commit hash and date at the time of the build or,
+ // when possible, a release tag like "go1.3".
diff --git a/pkgs/development/compilers/oraclejdk/jdk8-linux.nix b/pkgs/development/compilers/oraclejdk/jdk8-linux.nix
index b92521a044aa..4fc3ea319277 100644
--- a/pkgs/development/compilers/oraclejdk/jdk8-linux.nix
+++ b/pkgs/development/compilers/oraclejdk/jdk8-linux.nix
@@ -1,9 +1,9 @@
 import ./jdk-linux-base.nix {
   productVersion = "8";
-  patchVersion = "51";
+  patchVersion = "60";
   downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;
-  sha256_i686 = "0awzgs090n2cj6a5mlla0pgxk0y6aslhm6024pqrnxgai1fkmm1z";
-  sha256_x86_64 = "1wggrcr2gjwkv5bawgcw86h6rhyzw0jphxm1sfwcvhjirh99056p";
+  sha256_i686 = "e6a36b458351ed35bd7943739ba93d9a246e08a86433e148ff68b1b40d74c2e5";
+  sha256_x86_64 = "ebe51554d2f6c617a4ae8fc9a8742276e65af01bd273e96848b262b3c05424e5";
   jceName = "jce_policy-8.zip";
   jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html;
   sha256JCE = "0n8b6b8qmwb14lllk2lk1q1ahd3za9fnjigz5xn65mpg48whl0pk";
diff --git a/pkgs/misc/cups/drivers/canon/default.nix b/pkgs/misc/cups/drivers/canon/default.nix
new file mode 100644
index 000000000000..4c31e8d37d25
--- /dev/null
+++ b/pkgs/misc/cups/drivers/canon/default.nix
@@ -0,0 +1,220 @@
+{stdenv, fetchurl, unzip, autoreconfHook, libtool, makeWrapper, cups, ghostscript, callPackage_i686 }:
+
+let
+
+  i686_NIX_GCC = callPackage_i686 ({gcc}: gcc) {};
+  i686_libxml2 = callPackage_i686 ({libxml2}: libxml2) {};
+  i686_glibc = callPackage_i686 ({glibc}: glibc) {};
+
+  src_canon = fetchurl {
+    url = "http://files.canon-europe.com/files/soft45378/software/o147jen_linuxufrII_0290.zip";
+    sha256 = "1qpdmaaw42gm5fi21rp4lf05skffkq42ka5c8xkw8rckzb13sy9j";
+  };
+
+in
+
+
+stdenv.mkDerivation rec {
+  name = "canon-cups-ufr2-2.90";
+  src = src_canon;
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  postUnpack = ''
+    (cd $sourceRoot; tar -xzf Sources/cndrvcups-common-2.90-1.tar.gz)
+    (cd $sourceRoot; tar -xzf Sources/cndrvcups-lb-2.90-1.tar.gz)
+  '';
+
+  nativeBuildInputs = [ makeWrapper unzip autoreconfHook libtool ];
+
+  buildInputs = [ cups ];
+
+  installPhase = ''
+    ##
+    ## cndrvcups-common buildPhase
+    ##
+    ( cd cndrvcups-common-2.90/buftool
+      autoreconf -fi
+      ./autogen.sh --prefix=$out --enable-progpath=$out/bin --libdir=$out/lib --disable-shared --enable-static
+      make
+    )
+
+    ( cd cndrvcups-common-2.90/backend
+      ./autogen.sh --prefix=$out --libdir=$out/lib
+      make
+    )
+
+    ( cd cndrvcups-common-2.90/c3plmod_ipc
+      make
+    )
+
+    ##
+    ## cndrvcups-common installPhase
+    ##
+
+    ( cd cndrvcups-common-2.90/buftool
+      make install
+    )
+
+    ( cd cndrvcups-common-2.90/backend
+      make install
+    )
+
+    ( cd cndrvcups-common-2.90/c3plmod_ipc
+      make install DESTDIR=$out/lib
+    )
+
+    ( cd cndrvcups-common-2.90/libs
+      chmod 755 *
+      mkdir -p $out/lib32
+      mkdir -p $out/bin
+      cp libcaiowrap.so.1.0.0 $out/lib32
+      cp libcaiousb.so.1.0.0 $out/lib32
+      cp libc3pl.so.0.0.1 $out/lib32
+      cp libcaepcm.so.1.0 $out/lib32
+      cp libColorGear.so.0.0.0 $out/lib32
+      cp libColorGearC.so.0.0.0 $out/lib32
+      cp libcanon_slim.so.1.0.0 $out/lib32
+      cp c3pldrv $out/bin
+    )
+
+    (cd cndrvcups-common-2.90/data
+      chmod 644 *.ICC
+      mkdir -p $out/share/caepcm
+      cp *.ICC $out/share/caepcm
+    )
+
+    (cd $out/lib32
+      ln -sf libc3pl.so.0.0.1 libc3pl.so.0
+      ln -sf libc3pl.so.0.0.1 libc3pl.so
+      ln -sf libcaepcm.so.1.0 libcaepcm.so.1
+      ln -sf libcaepcm.so.1.0 libcaepcm.so
+      ln -sf libcaiowrap.so.1.0.0 libcaiowrap.so.1
+      ln -sf libcaiowrap.so.1.0.0 libcaiowrap.so
+      ln -sf libcaiousb.so.1.0.0 libcaiousb.so.1
+      ln -sf libcaiousb.so.1.0.0 libcaiousb.so
+      ln -sf libcanon_slim.so.1.0.0 libcanon_slim.so.1
+      ln -sf libcanon_slim.so.1.0.0 libcanon_slim.so
+      ln -sf libColorGear.so.0.0.0 libColorGear.so.0
+      ln -sf libColorGear.so.0.0.0 libColorGear.so
+      ln -sf libColorGearC.so.0.0.0 libColorGearC.so.0
+      ln -sf libColorGearC.so.0.0.0 libColorGearC.so
+    )
+
+    (cd $out/lib
+      ln -sf libcanonc3pl.so.1.0.0 libcanonc3pl.so
+      ln -sf libcanonc3pl.so.1.0.0 libcanonc3pl.so.1
+    )
+
+    patchelf --set-rpath "$(cat ${i686_NIX_GCC}/nix-support/orig-cc)/lib" $out/lib32/libColorGear.so.0.0.0
+    patchelf --set-rpath "$(cat ${i686_NIX_GCC}/nix-support/orig-cc)/lib" $out/lib32/libColorGearC.so.0.0.0
+
+    patchelf --interpreter "$(cat ${i686_NIX_GCC}/nix-support/dynamic-linker)" --set-rpath "$out/lib32" $out/bin/c3pldrv
+
+    # c3pldrv is programmed with fixed paths that point to "/usr/{bin,lib.share}/..."
+    # preload32 wrappes all necessary function calls to redirect the fixed paths
+    # into $out.
+    mkdir -p $out/libexec
+    preload32=$out/libexec/libpreload32.so
+    ${i686_NIX_GCC}/bin/gcc -shared ${./preload.c} -o $preload32 -ldl -DOUT=\"$out\" -fPIC
+    wrapProgram "$out/bin/c3pldrv" \
+      --set PRELOAD_DEBUG 1 \
+      --set LD_PRELOAD $preload32 \
+      --prefix LD_LIBRARY_PATH : "$out/lib32"
+
+
+
+    ##
+    ## cndrvcups-lb buildPhase
+    ##
+
+    ( cd cndrvcups-lb-2.90/ppd
+      ./autogen.sh --prefix=$out
+      make
+    )
+
+    ( cd cndrvcups-lb-2.90/pstoufr2cpca
+      CPPFLAGS="-I$out/include" LDFLAGS=" -L$out/lib" ./autogen.sh --prefix=$out --enable-progpath=$out/bin
+      make
+    )
+
+    ( cd cndrvcups-lb-2.90/cpca
+      CPPFLAGS="-I$out/include" LDFLAGS=" -L$out/lib" ./autogen.sh --prefix=$out --enable-progpath=$out/bin  --enable-static
+      make
+    )
+
+    ##
+    ## cndrvcups-lb installPhase
+    ##
+
+    ( cd cndrvcups-lb-2.90/ppd
+      make install
+    )
+
+    ( cd cndrvcups-lb-2.90/pstoufr2cpca
+      make install
+    )
+
+    ( cd cndrvcups-lb-2.90/cpca
+      make install
+    )
+
+    ( cd cndrvcups-lb-2.90/libs
+      chmod 755 *
+      mkdir -p $out/lib32
+      mkdir -p $out/bin
+      cp libcanonufr2.la $out/lib32
+      cp libcanonufr2.so.1.0.0 $out/lib32
+      cp libufr2filter.so.1.0.0 $out/lib32
+      cp libEnoJBIG.so.1.0.0 $out/lib32
+      cp libEnoJPEG.so.1.0.0 $out/lib32
+      cp libcaiocnpkbidi.so.1.0.0 $out/lib32
+      cp libcnlbcm.so.1.0 $out/lib32
+
+      cp cnpkmoduleufr2 $out/bin #maybe needs setuid 4755
+      cp cnpkbidi $out/bin
+    )
+
+    ( cd $out/lib32
+      ln -sf libcanonufr2.so.1.0.0 libcanonufr2.so
+      ln -sf libcanonufr2.so.1.0.0 libcanonufr2.so.1
+      ln -sf libufr2filter.so.1.0.0 libufr2filter.so
+      ln -sf libufr2filter.so.1.0.0 libufr2filter.so.1
+      ln -sf libEnoJBIG.so.1.0.0 libEnoJBIG.so
+      ln -sf libEnoJBIG.so.1.0.0 libEnoJBIG.so.1
+      ln -sf libEnoJPEG.so.1.0.0 libEnoJPEG.so
+      ln -sf libEnoJPEG.so.1.0.0 libEnoJPEG.so.1
+      ln -sf libcaiocnpkbidi.so.1.0.0 libcaiocnpkbidi.so
+      ln -sf libcaiocnpkbidi.so.1.0.0 libcaiocnpkbidi.so.1
+      ln -sf libcnlbcm.so.1.0 libcnlbcm.so.1
+      ln -sf libcnlbcm.so.1.0 libcnlbcm.so
+    )
+
+    ( cd cndrvcups-lb-2.90
+      chmod 644 data/CnLB*
+      chmod 644 libs/cnpkbidi_info*
+      chmod 644 libs/ThLB*
+      mkdir -p $out/share/caepcm
+      mkdir -p $out/share/cnpkbidi
+      mkdir -p $out/share/ufr2filter
+      cp data/CnLB* $out/share/caepcm
+      cp libs/cnpkbidi_info* $out/share/cnpkbidi
+      cp libs/ThLB* $out/share/ufr2filter
+    )
+
+    patchelf --set-rpath "$out/lib32:${i686_libxml2}/lib" $out/lib32/libcanonufr2.so.1.0.0
+
+    patchelf --interpreter "$(cat ${i686_NIX_GCC}/nix-support/dynamic-linker)" --set-rpath "$out/lib32" $out/bin/cnpkmoduleufr2
+    patchelf --interpreter "$(cat ${i686_NIX_GCC}/nix-support/dynamic-linker)" --set-rpath "$out/lib32:${i686_libxml2}/lib" $out/bin/cnpkbidi
+
+    makeWrapper "${ghostscript}/bin/gs" "$out/bin/gs" \
+      --prefix LD_LIBRARY_PATH ":" "$out/lib" \
+      --prefix PATH ":" "$out/bin"
+    '';
+
+  meta = {
+    description = "CUPS Linux drivers for Canon printers";
+    homepage = "http://www.canon.com/";
+    license = stdenv.lib.licenses.unfree;
+  };
+}
diff --git a/pkgs/misc/cups/drivers/canon/preload.c b/pkgs/misc/cups/drivers/canon/preload.c
new file mode 100644
index 000000000000..f3a30063a6e3
--- /dev/null
+++ b/pkgs/misc/cups/drivers/canon/preload.c
@@ -0,0 +1,81 @@
+/*
+ * LD_PRELOAD trick to make c3pldrv handle the absolute path to /usr/{bin,lib,share)}.
+ * As c3pldrv is a 32 bit executable, /lib will be rewritten to /lib32.
+ *
+ * Usage:
+ *   gcc -shared -fPIC -DOUT="$out" preload.c -o preload.so -ldl
+ *   LD_PRELOAD=$PWD/preload.so ./c3pldrv
+ */
+
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <dlfcn.h>
+#include <limits.h>
+
+#ifndef OUT
+#error Missing OUT define - path to the installation directory.
+#endif
+
+typedef void *(*dlopen_func_t)(const char *filename, int flag);
+typedef int (*open_func_t)(const char *pathname, int flags, ...);
+typedef int (*execv_func_t)(const char *path, char *const argv[]);
+
+
+void *dlopen(const char *filename, int flag)
+{
+	dlopen_func_t orig_dlopen;
+	const char *new_filename;
+	char buffer[PATH_MAX];
+
+	orig_dlopen = (dlopen_func_t)dlsym(RTLD_NEXT, "dlopen");
+
+	new_filename = filename;
+	if (strncmp("/usr/lib", filename, 8) == 0) {
+		snprintf(buffer, PATH_MAX, OUT "/lib32%s", filename+8);
+		buffer[PATH_MAX-1] = '\0';
+		new_filename = buffer;
+	}
+	
+	return orig_dlopen(new_filename, flag);
+}
+
+int open(const char *pathname, int flags, ...)
+{
+	open_func_t orig_open;
+	const char *new_pathname;
+	char buffer[PATH_MAX];
+
+	orig_open = (open_func_t)dlsym(RTLD_NEXT, "open");
+
+	new_pathname = pathname;
+	if (strncmp("/usr/share", pathname, 10) == 0) {
+		snprintf(buffer, PATH_MAX, OUT "%s", pathname+4);
+		buffer[PATH_MAX-1] = '\0';
+		new_pathname = buffer;
+	}
+	
+	return orig_open(new_pathname, flags);
+}
+
+int execv(const char *path, char *const argv[])
+{
+	execv_func_t orig_execv;
+	const char *new_path;
+	char buffer[PATH_MAX];
+
+	orig_execv = (execv_func_t)dlsym(RTLD_NEXT, "execv");
+
+	new_path = path;
+	if (strncmp("/usr/bin", path, 8) == 0) {
+		snprintf(buffer, PATH_MAX, OUT "%s", path+4);
+		buffer[PATH_MAX-1] = '\0';
+		new_path = buffer;
+	}
+	
+	return orig_execv(new_path, argv);
+}
+
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 19443e3e6eaf..fe7bec54ba02 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -131,6 +131,8 @@ let
         else true;
 
     in
+      assert licenseAllowed attrs;
+
       lib.addPassthru (derivation (
         (removeAttrs attrs
           ["meta" "passthru" "crossAttrs" "pos"
@@ -150,7 +152,7 @@ let
           computedPropagatedImpureHostDeps = lib.unique (lib.concatMap (input: input.__propagatedImpureHostDeps or []) (propagatedBuildInputs ++ propagatedNativeBuildInputs));
         in
         {
-          builder = assert licenseAllowed attrs; attrs.realBuilder or shell;
+          builder = attrs.realBuilder or shell;
           args = attrs.args or ["-e" (attrs.builder or ./default-builder.sh)];
           stdenv = result;
           system = result.system;
diff --git a/pkgs/tools/filesystems/s3fs/default.nix b/pkgs/tools/filesystems/s3fs/default.nix
index 7e880ffeeb94..4c40d5e49835 100644
--- a/pkgs/tools/filesystems/s3fs/default.nix
+++ b/pkgs/tools/filesystems/s3fs/default.nix
@@ -1,14 +1,18 @@
 {stdenv, fetchurl, autoconf, automake, pkgconfig, curl, openssl, libxml2, fuse}:
 
 stdenv.mkDerivation {
-  name = "s3fs-fuse-1.78";
+  name = "s3fs-fuse-1.79";
   src = fetchurl {
-    url = https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.78.tar.gz;
-    sha256 = "1xcp0bqa4a2ynjn5phb1pj70wm322czhqp4qcb27d5jd545b1h1n";
+    url = https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.79.tar.gz;
+    sha256 = "0rmzkngzq040g020pv75qqx3jy34vdxzqvxz29k6q8yfb3wpkhb1";
   };
   preConfigure = "./autogen.sh";
   buildInputs = [ autoconf automake pkgconfig curl openssl libxml2 fuse ];
-  
+
+  postInstall = ''
+    ln -s $out/bin/s3fs $out/bin/mount.s3fs
+  '';
+
   meta = with stdenv.lib; {
     description = "Mount an S3 bucket as filesystem through FUSE";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/driftnet/default.nix b/pkgs/tools/networking/driftnet/default.nix
new file mode 100644
index 000000000000..432411c1460d
--- /dev/null
+++ b/pkgs/tools/networking/driftnet/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, lib, fetchFromGitHub, autoconf, automake, libpcap, libjpeg, libungif, libpng, giflib, glib, gtk2, cairo, pango, gdk_pixbuf, atk, pkgconfig }:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  name = "driftnet-${stdenv.lib.strings.substring 0 7 rev}";
+  rev = "8d47fd563a06122d4a6f9b9b9d27ba3d635148c0";
+
+  buildInputs = [ autoconf automake pkgconfig libpcap libjpeg libungif libpng giflib glib gtk2 glib cairo pango gdk_pixbuf atk ];
+
+  preConfigure = "autoreconf -fi";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "deiv";
+    repo = "driftnet";
+    sha256 = "1i9fqbsfrhvr36r17v3ydr1bqsszns8gyjbvlfqbdd4l5l5n6amg";
+  };
+
+  meta = {
+    description = "Driftnet watches network traffic, and picks out and displays JPEG and GIF images for display.";
+    homepage = https://github.com/deiv/driftnet;
+    maintainers = with maintainers; [ offline ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/pkgs/tools/networking/netsniff-ng/default.nix b/pkgs/tools/networking/netsniff-ng/default.nix
index ac9cfbf9bf2c..50f21abdb542 100644
--- a/pkgs/tools/networking/netsniff-ng/default.nix
+++ b/pkgs/tools/networking/netsniff-ng/default.nix
@@ -2,7 +2,7 @@
 , libnetfilter_conntrack, libnl, libpcap, libsodium, liburcu, ncurses, perl
 , pkgconfig, zlib }:
 
-let version = "0.5.9-80-g3384ee7"; in
+let version = "0.5.9-85-g71c28ef"; in
 stdenv.mkDerivation {
   name = "netsniff-ng-${version}";
 
@@ -10,8 +10,8 @@ stdenv.mkDerivation {
   src = fetchFromGitHub rec {
     repo = "netsniff-ng";
     owner = repo;
-    rev = "3384ee7119222a6230c983dbdcbaf2ac2d6f92fb";
-    sha256 = "1j0g7sdf5ikr2bwd2qdwd1dpmknwaz55x3cgc8yiw39xp69hm7na";
+    rev = "71c28eff00a8a8896c45fa20330b623d265ae5c7";
+    sha256 = "1d0k7dydy57fn2qx5mwwx5wplbgm90y9chc5q15m8phsh0nm13qi";
   };
 
   buildInputs = [ bison flex geoip geolite-legacy libcli libnet libnl
diff --git a/pkgs/tools/package-management/packagekit/default.nix b/pkgs/tools/package-management/packagekit/default.nix
new file mode 100644
index 000000000000..1dcfd3095593
--- /dev/null
+++ b/pkgs/tools/package-management/packagekit/default.nix
@@ -0,0 +1,73 @@
+{ stdenv, fetchurl, intltool, glib, pkgconfig, polkit, python3, sqlite }:
+
+let version = "1.0.7"; in
+stdenv.mkDerivation {
+  name = "packagekit-${version}";
+
+  src = fetchurl {
+    sha256 = "0klwr0y3a72xpz6bwv4afbk3vvx5r1av5idhz3mx4p9ssnscb1mi";
+    url = "https://www.freedesktop.org/software/PackageKit/releases/PackageKit-${version}.tar.xz";
+  };
+
+  buildInputs = [ glib polkit python3 ];
+  propagatedBuildInputs = [ sqlite ];
+  nativeBuildInputs = [ intltool pkgconfig ];
+
+  configureFlags = ''
+    --disable-static
+    --disable-python3
+    --disable-networkmanager
+    --disable-connman
+    --disable-systemd
+    --disable-bash-completion
+    --disable-browser-plugin
+    --disable-gstreamer-plugin
+    --disable-gtk-module
+    --disable-command-not-found
+    --disable-cron
+    --disable-daemon-tests
+    --disable-alpm
+    --disable-aptcc
+    --enable-dummy
+    --disable-entropy
+    --disable-hif
+    --disable-pisi
+    --disable-poldek
+    --disable-portage
+    --disable-ports
+    --disable-katja
+    --disable-urmpi
+    --disable-yum
+    --disable-zypp
+  '';
+
+  enableParallelBuilding = true;
+
+  preInstall = ''
+    # Don't install anything to e.g. $out/var/cache:
+    for dir in src data; do
+      substituteInPlace $dir/Makefile \
+        --replace " install-data-hook" "" \
+        --replace " install-databaseDATA" ""
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    inherit version;
+    description = "System to facilitate installing and updating packages";
+    longDescription = ''
+      PackageKit is a system designed to make installing and updating software
+      on your computer easier. The primary design goal is to unify all the
+      software graphical tools used in different distributions, and use some of
+      the latest technology like PolicyKit. The actual nuts-and-bolts distro
+      tool (dnf, apt, etc) is used by PackageKit using compiled and scripted
+      helpers. PackageKit isn't meant to replace these tools, instead providing
+      a common set of abstractions that can be used by standard GUI and text
+      mode package managers.
+    '';
+    homepage = http://www.packagekit.org/;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ nckx ];
+  };
+}
diff --git a/pkgs/tools/system/stress-ng/default.nix b/pkgs/tools/system/stress-ng/default.nix
index 7f02eaa2d519..0f62fc4e360a 100644
--- a/pkgs/tools/system/stress-ng/default.nix
+++ b/pkgs/tools/system/stress-ng/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, attr, keyutils }:
 
-let version = "0.04.14"; in
+let version = "0.04.15"; in
 stdenv.mkDerivation rec {
   name = "stress-ng-${version}";
 
   src = fetchurl {
-    sha256 = "17lgsxg2k7w12i1wmzq4zqavkicikzkgz2h7mzl8lrk8c85mwf3m";
+    sha256 = "1jazcfviqx3pyhv2jzsp6y37ndsj1smfk6jacpxg9vrg5k3cm3wq";
     url = "http://kernel.ubuntu.com/~cking/tarballs/stress-ng/${name}.tar.gz";
   };
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index e5e2f43dbf20..4f4987c9ccb9 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1346,6 +1346,8 @@ let
 
   drive = callPackage ../applications/networking/drive { };
 
+  driftnet = callPackage ../tools/networking/driftnet {};
+
   dropbear = callPackage ../tools/networking/dropbear { };
 
   dtach = callPackage ../tools/misc/dtach { };
@@ -2560,6 +2562,8 @@ let
 
   p7zip = callPackage ../tools/archivers/p7zip { };
 
+  packagekit = callPackage ../tools/package-management/packagekit { };
+
   pal = callPackage ../tools/misc/pal { };
 
   pandoc = haskell.lib.overrideCabal haskellPackages.pandoc (drv: {
@@ -4050,7 +4054,11 @@ let
     inherit (darwin.apple_sdk.frameworks) Security;
   };
 
-  go = go_1_4;
+  go_1_5 = callPackage ../development/compilers/go/1.5.nix {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  go = go_1_5;
 
   go-repo-root = callPackage ../development/tools/misc/go-repo-root { };
 
@@ -8633,7 +8641,17 @@ let
     overrides = (config.goPackageOverrides or (p: {})) pkgs;
   });
 
-  goPackages = go14Packages;
+  go15Packages = recurseIntoAttrs (callPackage ./go-packages.nix {
+    go = go_1_5;
+    buildGoPackage = import ../development/go-modules/generic {
+      go = go_1_5;
+      govers = go15Packages.govers;
+      inherit lib;
+    };
+    overrides = (config.goPackageOverrides or (p: {})) pkgs;
+  });
+
+  goPackages = go15Packages;
 
   ### DEVELOPMENT / LISP MODULES
 
@@ -11042,9 +11060,7 @@ let
   dmtx-utils = callPackage (import ../tools/graphics/dmtx-utils) {
   };
 
-  docker = callPackage ../applications/virtualization/docker {
-    go = go_1_4;
-  };
+  docker = callPackage ../applications/virtualization/docker { };
 
   doodle = callPackage ../applications/search/doodle { };
 
@@ -12449,7 +12465,7 @@ let
     inherit (xorg) libXpm;
   };
 
-  pond = callPackage ../applications/networking/pond { goPackages = go14Packages; };
+  pond = callPackage ../applications/networking/pond { };
 
   ponymix = callPackage ../applications/audio/ponymix { };
 
@@ -14943,6 +14959,8 @@ let
 
   sails = callPackage ../misc/sails { };
 
+  canon-cups-ufr2 = callPackage ../misc/cups/drivers/canon { };
+
   samsungUnifiedLinuxDriver = import ../misc/cups/drivers/samsung {
     inherit fetchurl stdenv;
     inherit cups ghostscript glibc patchelf;
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index e28cb22a2181..f989d05fe746 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -2994,11 +2994,11 @@ let
   };
 
   docker = buildPythonPackage rec {
-    name = "docker-py-1.1.0";
+    name = "docker-py-1.3.1";
 
     src = pkgs.fetchurl {
       url = "https://pypi.python.org/packages/source/d/docker-py/${name}.tar.gz";
-      md5 = "b44f34530a21ed1129887f9a8b01ecec";
+      md5 = "07a5f41fd3f8cc72d05deed628700e99";
     };
 
     propagatedBuildInputs = with self; [ six requests websocket_client ];
@@ -3014,13 +3014,15 @@ let
   };
 
   dockerpty = buildPythonPackage rec {
-    name = "dockerpty-0.3.2";
+    name = "dockerpty-0.3.4";
 
     src = pkgs.fetchurl {
       url = "https://pypi.python.org/packages/source/d/dockerpty/${name}.tar.gz";
-      md5 = "1f97b24d2f4b2c345f176f91655002dd";
+      md5 = "92fb66d28aa19bf5268e7e3935670e5d";
     };
 
+    propagatedBuildInputs = with self; [ six ];
+
     meta = {
       description = "Functionality needed to operate the pseudo-tty (PTY) allocated to a docker container";
       homepage = https://github.com/d11wtq/dockerpty;
@@ -5663,32 +5665,22 @@ let
   };
 
   docker_compose = buildPythonPackage rec {
-    name = "docker-compose-1.2.0rc2";
+    version = "1.4.0";
+    name = "docker-compose-${version}";
+    namePrefix = "";
     disabled = isPy3k || isPyPy;
 
     src = pkgs.fetchurl {
       url = "https://pypi.python.org/packages/source/d/docker-compose/${name}.tar.gz";
-      md5 = "311ec5023e51097ca3acbf37fac062bd";
+      md5 = "a93e801ebe829c2f869cb23d0b606272";
     };
 
     propagatedBuildInputs = with self; [
-      six requests pyyaml texttable docopt docker
+      six requests pyyaml texttable docopt docker dockerpty websocket_client
       (requests2.override {
         src = pkgs.fetchurl {
-          url = "https://pypi.python.org/packages/source/r/requests/requests-2.5.3.tar.gz";
-          md5 = "23bf4fcc89ea8d353eb5353bb4a475b1";
-        };
-      })
-      (dockerpty.override {
-        src = pkgs.fetchurl {
-          url = "https://pypi.python.org/packages/source/d/dockerpty/dockerpty-0.3.2.tar.gz";
-          md5 = "1f97b24d2f4b2c345f176f91655002dd";
-        };
-      })
-      (websocket_client.override {
-        src = pkgs.fetchurl {
-          url = "https://pypi.python.org/packages/source/w/websocket-client/websocket-client-0.11.0.tar.gz";
-          md5 = "fcffbb5ac10941d9ace416d14d1e3ec8";
+          url = "https://pypi.python.org/packages/source/r/requests/requests-2.6.1.tar.gz";
+          md5 = "da6e487f89e6a531699b7fd97ff182af";
         };
       })
     ];
@@ -15691,11 +15683,11 @@ let
 
 
   websocket_client = buildPythonPackage rec {
-    name = "websocket-client-0.17.0";
+    name = "websocket_client-0.32.0";
 
     src = pkgs.fetchurl {
       url = "https://pypi.python.org/packages/source/w/websocket-client/${name}.tar.gz";
-      md5 = "c86591719085eaf4a01c2275e0c834fc";
+      md5 = "b07a897511a3c585251fe2ea85a9d9d9";
     };
 
     propagatedBuildInputs = with self; [ six backports_ssl_match_hostname_3_4_0_2 unittest2 argparse ];