about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/licenses.nix8
-rw-r--r--lib/maintainers.nix3
-rw-r--r--nixos/modules/rename.nix2
-rw-r--r--nixos/modules/services/networking/dante.nix2
-rw-r--r--nixos/modules/services/networking/firefox/sync-server.nix52
-rw-r--r--nixos/modules/services/networking/freeradius.nix72
-rw-r--r--nixos/modules/services/web-servers/nginx/default.nix1
-rw-r--r--nixos/modules/system/boot/kernel.nix2
-rw-r--r--nixos/modules/system/boot/networkd.nix3
-rw-r--r--nixos/modules/tasks/network-interfaces-systemd.nix1
-rw-r--r--nixos/modules/tasks/network-interfaces.nix22
-rw-r--r--nixos/modules/virtualisation/lxd.nix13
-rw-r--r--nixos/tests/docker-tools.nix35
-rw-r--r--nixos/tests/networking.nix57
-rw-r--r--pkgs/applications/audio/sunvox/default.nix48
-rw-r--r--pkgs/applications/editors/vscode/default.nix8
-rw-r--r--pkgs/applications/misc/memo/default.nix7
-rw-r--r--pkgs/applications/misc/welle-io/default.nix4
-rw-r--r--pkgs/applications/misc/wsjtx/default.nix41
-rw-r--r--pkgs/applications/misc/wsjtx/wsjtx.patch12
-rw-r--r--pkgs/applications/networking/browsers/falkon/default.nix17
-rw-r--r--pkgs/applications/networking/browsers/firefox/wrapper.nix2
-rw-r--r--pkgs/applications/networking/browsers/google-chrome/default.nix2
-rw-r--r--pkgs/applications/networking/nextcloud-client/default.nix5
-rwxr-xr-xpkgs/common-updater/scripts/update-source-version2
-rw-r--r--pkgs/data/fonts/fixedsys-excelsior/default.nix38
-rw-r--r--pkgs/development/compilers/dmd/default.nix8
-rw-r--r--pkgs/development/compilers/jwasm/default.nix27
-rw-r--r--pkgs/development/libraries/aws-sdk-cpp/default.nix7
-rw-r--r--pkgs/development/libraries/cpp-gsl/default.nix29
-rw-r--r--pkgs/development/libraries/openmpi/default.nix2
-rw-r--r--pkgs/development/libraries/psol/default.nix4
-rwxr-xr-xpkgs/development/lisp-modules/clwrapper/cl-wrapper.sh2
-rwxr-xr-xpkgs/development/lisp-modules/clwrapper/common-lisp.sh2
-rw-r--r--pkgs/development/lisp-modules/clwrapper/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/dub/default.nix18
-rw-r--r--pkgs/development/tools/continuous-integration/buildkite-agent/default.nix10
-rw-r--r--pkgs/development/tools/continuous-integration/jenkins/default.nix6
-rw-r--r--pkgs/development/tools/dtools/default.nix18
-rw-r--r--pkgs/development/tools/gotests/default.nix25
-rw-r--r--pkgs/development/tools/gotests/deps.nix11
-rw-r--r--pkgs/development/tools/haskell/lambdabot/default.nix4
-rw-r--r--pkgs/development/tools/misc/strace/default.nix4
-rw-r--r--pkgs/games/cataclysm-dda/default.nix41
-rw-r--r--pkgs/games/cataclysm-dda/git.nix39
-rw-r--r--pkgs/misc/apulse/default.nix4
-rw-r--r--pkgs/misc/apulse/pressureaudio.nix82
-rw-r--r--pkgs/servers/http/nginx/modules.nix4
-rw-r--r--pkgs/servers/softether/4.25.nix53
-rw-r--r--pkgs/servers/web-apps/wallabag/default.nix13
-rw-r--r--pkgs/servers/web-apps/wallabag/wallabag-data.patch26
-rw-r--r--pkgs/servers/x11/quartz-wm/default.nix8
-rw-r--r--pkgs/tools/misc/autojump/default.nix3
-rw-r--r--pkgs/tools/misc/fd/default.nix4
-rw-r--r--pkgs/tools/misc/figlet/default.nix17
-rw-r--r--pkgs/tools/misc/ipxe/default.nix8
-rw-r--r--pkgs/tools/misc/ministat/default.nix31
-rw-r--r--pkgs/tools/misc/yle-dl/default.nix4
-rw-r--r--pkgs/tools/networking/connman-ncurses/default.nix32
-rw-r--r--pkgs/tools/networking/iperf/3.nix4
-rw-r--r--pkgs/tools/security/hash_extender/default.nix27
-rw-r--r--pkgs/tools/system/ddrescue/default.nix4
-rw-r--r--pkgs/tools/system/fio/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix25
-rw-r--r--pkgs/top-level/dotnet-packages.nix13
65 files changed, 897 insertions, 189 deletions
diff --git a/lib/licenses.nix b/lib/licenses.nix
index 2262ae9ebbcf..e03ed38eb5eb 100644
--- a/lib/licenses.nix
+++ b/lib/licenses.nix
@@ -2,7 +2,7 @@
 let
 
   spdx = lic: lic // {
-    url = "http://spdx.org/licenses/${lic.spdxId}";
+    url = "http://spdx.org/licenses/${lic.spdxId}.html";
   };
 
 in
@@ -580,6 +580,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
     fullName = "Vovida Software License v1.0";
   };
 
+  watcom = spdx {
+    spdxId = "Watcom-1.0";
+    fullName = "Sybase Open Watcom Public License 1.0";
+  };
+
   w3c = spdx {
     spdxId = "W3C";
     fullName = "W3C Software Notice and License";
@@ -614,5 +619,4 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
     spdxId = "ZPL-2.1";
     fullName = "Zope Public License 2.1";
   };
-
 }
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index 0deb63cfcb56..e72e320d41b1 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -370,6 +370,7 @@
   kristoff3r = "Kristoffer Søholm <k.soeholm@gmail.com>";
   ktosiek = "Tomasz Kontusz <tomasz.kontusz@gmail.com>";
   kuznero = "Roman Kuznetsov <roman@kuznero.com>";
+  lasandell = "Luke Sandell <lasandell@gmail.com>";
   lassulus = "Lassulus <lassulus@gmail.com>";
   layus = "Guillaume Maudoux <layus.on@gmail.com>";
   ldesgoui = "Lucas Desgouilles <ldesgoui@gmail.com>";
@@ -479,6 +480,7 @@
   mudri = "James Wood <lamudri@gmail.com>";
   muflax = "Stefan Dorn <mail@muflax.com>";
   myrl = "Myrl Hex <myrl.0xf@gmail.com>";
+  nadrieril = "Nadrieril Feneanar <nadrieril@gmail.com>";
   namore = "Roman Naumann <namor@hemio.de>";
   nand0p = "Fernando Jose Pando <nando@hex7.com>";
   Nate-Devv = "Nathan Moore <natedevv@gmail.com>";
@@ -494,6 +496,7 @@
   nicknovitski = "Nick Novitski <nixpkgs@nicknovitski.com>";
   nico202 = "Nicolò Balzarotti <anothersms@gmail.com>";
   NikolaMandic = "Ratko Mladic <nikola@mandic.email>";
+  ninjatrappeur = "Félix Baylac-Jacqué <felix@alternativebit.fr>";
   nipav = "Niko Pavlinek <niko.pavlinek@gmail.com>";
   nixy = "Andrew R. M. <nixy@nixy.moe>";
   nmattia = "Nicolas Mattia <nicolas@nmattia.com>";
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index 7351482f957f..710387ebc1d6 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -205,6 +205,8 @@ with lib;
       "See the 16.09 release notes for more information.")
     (mkRemovedOptionModule [ "services" "phpfpm" "phpIni" ] "")
     (mkRemovedOptionModule [ "services" "dovecot2" "package" ] "")
+    (mkRemovedOptionModule [ "services" "firefox" "syncserver" "user" ] "")
+    (mkRemovedOptionModule [ "services" "firefox" "syncserver" "group" ] "")
     (mkRemovedOptionModule [ "fonts" "fontconfig" "hinting" "style" ] "")
     (mkRemovedOptionModule [ "services" "xserver" "displayManager" "sddm" "themes" ]
       "Set the option `services.xserver.displayManager.sddm.package' instead.")
diff --git a/nixos/modules/services/networking/dante.nix b/nixos/modules/services/networking/dante.nix
index a9a77f3412af..32acce51e692 100644
--- a/nixos/modules/services/networking/dante.nix
+++ b/nixos/modules/services/networking/dante.nix
@@ -47,7 +47,7 @@ in
 
     systemd.services.dante = {
       description   = "Dante SOCKS v4 and v5 compatible proxy server";
-      after         = [ "network.target" ];
+      after         = [ "network-online.target" ];
       wantedBy      = [ "multi-user.target" ];
 
       serviceConfig = {
diff --git a/nixos/modules/services/networking/firefox/sync-server.nix b/nixos/modules/services/networking/firefox/sync-server.nix
index a9f3fd65d76b..97d223a56cab 100644
--- a/nixos/modules/services/networking/firefox/sync-server.nix
+++ b/nixos/modules/services/networking/firefox/sync-server.nix
@@ -33,6 +33,8 @@ let
 in
 
 {
+  meta.maintainers = with lib.maintainers; [ nadrieril ];
+
   options = {
     services.firefox.syncserver = {
       enable = mkOption {
@@ -70,18 +72,6 @@ in
         '';
       };
 
-      user = mkOption {
-        type = types.str;
-        default = "syncserver";
-        description = "User account under which syncserver runs.";
-      };
-
-      group = mkOption {
-        type = types.str;
-        default = "syncserver";
-        description = "Group account under which syncserver runs.";
-      };
-
       publicUrl = mkOption {
         type = types.str;
         default = "http://localhost:5000/";
@@ -137,7 +127,9 @@ in
   config = mkIf cfg.enable {
 
     systemd.services.syncserver = let
-      syncServerEnv = pkgs.python.withPackages(ps: with ps; [ syncserver pasteScript ]);
+      syncServerEnv = pkgs.python.withPackages(ps: with ps; [ syncserver pasteScript requests ]);
+      user = "syncserver";
+      group = "syncserver";
     in {
       after = [ "network.target" ];
       description = "Firefox Sync Server";
@@ -145,43 +137,43 @@ in
       path = [ pkgs.coreutils syncServerEnv ];
 
       serviceConfig = {
-        User = cfg.user;
-        Group = cfg.group;
+        User = user;
+        Group = group;
         PermissionsStartOnly = true;
       };
 
       preStart = ''
         if ! test -e ${cfg.privateConfig}; then
-          mkdir -m 700 -p $(dirname ${cfg.privateConfig})
+          mkdir -p $(dirname ${cfg.privateConfig})
           echo  > ${cfg.privateConfig} '[syncserver]'
+          chmod 600 ${cfg.privateConfig}
           echo >> ${cfg.privateConfig} "secret = $(head -c 20 /dev/urandom | sha1sum | tr -d ' -')"
         fi
-        chown ${cfg.user}:${cfg.group} ${cfg.privateConfig}
+        chmod 600 ${cfg.privateConfig}
+        chmod 755 $(dirname ${cfg.privateConfig})
+        chown ${user}:${group} ${cfg.privateConfig}
+
       '' + optionalString (cfg.sqlUri == defaultSqlUri) ''
         if ! test -e $(dirname ${defaultDbLocation}); then
           mkdir -m 700 -p $(dirname ${defaultDbLocation})
-          chown ${cfg.user}:${cfg.group} $(dirname ${defaultDbLocation})
+          chown ${user}:${group} $(dirname ${defaultDbLocation})
         fi
+
         # Move previous database file if it exists
         oldDb="/var/db/firefox-sync-server.db"
         if test -f $oldDb; then
           mv $oldDb ${defaultDbLocation}
-          chown ${cfg.user}:${cfg.group} ${defaultDbLocation}
+          chown ${user}:${group} ${defaultDbLocation}
         fi
       '';
       serviceConfig.ExecStart = "${syncServerEnv}/bin/paster serve ${syncServerIni}";
     };
 
-    users.extraUsers = optionalAttrs (cfg.user == "syncserver")
-      (singleton {
-        name = "syncserver";
-        group = cfg.group;
-        isSystemUser = true;
-      });
-
-    users.extraGroups = optionalAttrs (cfg.group == "syncserver")
-      (singleton {
-        name = "syncserver";
-      });
+    users.users.syncserver = {
+      group = "syncserver";
+      isSystemUser = true;
+    };
+
+    users.groups.syncserver = {};
   };
 }
diff --git a/nixos/modules/services/networking/freeradius.nix b/nixos/modules/services/networking/freeradius.nix
new file mode 100644
index 000000000000..45cba1ce2770
--- /dev/null
+++ b/nixos/modules/services/networking/freeradius.nix
@@ -0,0 +1,72 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+  cfg = config.services.freeradius;
+
+  freeradiusService = cfg:
+  {
+    description = "FreeRadius server";
+    wantedBy = ["multi-user.target"];
+    after = ["network-online.target"];
+    wants = ["network-online.target"];
+    preStart = ''
+      ${pkgs.freeradius}/bin/radiusd -C -d ${cfg.configDir} -l stdout
+    '';
+
+    serviceConfig = {
+        ExecStart = "${pkgs.freeradius}/bin/radiusd -f -d ${cfg.configDir} -l stdout -xx";
+        ExecReload = [
+          "${pkgs.freeradius}/bin/radiusd -C -d ${cfg.configDir} -l stdout"
+          "${pkgs.coreutils}/bin/kill -HUP $MAINPID"
+        ];
+        User = "radius";
+        ProtectSystem = "full";
+        ProtectHome = "on";
+        Restart = "on-failure";
+        RestartSec = 2;
+    };
+  };
+
+  freeradiusConfig = {
+    enable = mkEnableOption "the freeradius server";
+
+    configDir = mkOption {
+      type = types.path;
+      default = "/etc/raddb";
+      description = ''
+        The path of the freeradius server configuration directory.
+      '';
+    };
+
+  };
+
+in
+
+{
+
+  ###### interface
+
+  options = {
+    services.freeradius = freeradiusConfig;
+  };
+
+
+  ###### implementation
+
+  config = mkIf (cfg.enable) {
+
+    users = {
+      extraUsers.radius = {
+        /*uid = config.ids.uids.radius;*/
+        description = "Radius daemon user";
+      };
+    };
+
+    systemd.services.freeradius = freeradiusService cfg;
+
+  };
+
+}
diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix
index 100fabf902f8..dee877f1c114 100644
--- a/nixos/modules/services/web-servers/nginx/default.nix
+++ b/nixos/modules/services/web-servers/nginx/default.nix
@@ -578,6 +578,7 @@ in
         mkdir -p ${cfg.stateDir}/logs
         chmod 700 ${cfg.stateDir}
         chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir}
+        ${cfg.package}/bin/nginx -c ${configFile} -p ${cfg.stateDir} -t
         '';
       serviceConfig = {
         ExecStart = "${cfg.package}/bin/nginx -c ${configFile} -p ${cfg.stateDir}";
diff --git a/nixos/modules/system/boot/kernel.nix b/nixos/modules/system/boot/kernel.nix
index d78f9d9389c6..3bd7d3558269 100644
--- a/nixos/modules/system/boot/kernel.nix
+++ b/nixos/modules/system/boot/kernel.nix
@@ -184,7 +184,7 @@ in
       [ "loglevel=${toString config.boot.consoleLogLevel}" ] ++
       optionals config.boot.vesa [ "vga=0x317" ];
 
-    boot.kernel.sysctl."kernel.printk" = config.boot.consoleLogLevel;
+    boot.kernel.sysctl."kernel.printk" = mkDefault config.boot.consoleLogLevel;
 
     boot.kernelModules = [ "loop" "atkbd" ];
 
diff --git a/nixos/modules/system/boot/networkd.nix b/nixos/modules/system/boot/networkd.nix
index 051c55393816..eea10613ea58 100644
--- a/nixos/modules/system/boot/networkd.nix
+++ b/nixos/modules/system/boot/networkd.nix
@@ -94,7 +94,7 @@ let
   checkNetwork = checkUnitConfig "Network" [
     (assertOnlyFields [
       "Description" "DHCP" "DHCPServer" "IPForward" "IPMasquerade" "IPv4LL" "IPv4LLRoute"
-      "LLMNR" "MulticastDNS" "Domains" "Bridge" "Bond"
+      "LLMNR" "MulticastDNS" "Domains" "Bridge" "Bond" "IPv6PrivacyExtensions"
     ])
     (assertValueOneOf "DHCP" ["both" "none" "v4" "v6"])
     (assertValueOneOf "DHCPServer" boolValues)
@@ -104,6 +104,7 @@ let
     (assertValueOneOf "IPv4LLRoute" boolValues)
     (assertValueOneOf "LLMNR" boolValues)
     (assertValueOneOf "MulticastDNS" boolValues)
+    (assertValueOneOf "IPv6PrivacyExtensions" ["yes" "no" "prefer-public" "kernel"])
   ];
 
   checkAddress = checkUnitConfig "Address" [
diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix
index 5d72ad0f1bde..be7f52a76def 100644
--- a/nixos/modules/tasks/network-interfaces-systemd.nix
+++ b/nixos/modules/tasks/network-interfaces-systemd.nix
@@ -91,6 +91,7 @@ in
             (if i.useDHCP != null then i.useDHCP else cfg.useDHCP && interfaceIps i == [ ]));
           address = flip map (interfaceIps i)
             (ip: "${ip.address}/${toString ip.prefixLength}");
+          networkConfig.IPv6PrivacyExtensions = "kernel";
         } ];
       })))
       (mkMerge (flip mapAttrsToList cfg.bridges (name: bridge: {
diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix
index f4851988d63d..f80c5045c07d 100644
--- a/nixos/modules/tasks/network-interfaces.nix
+++ b/nixos/modules/tasks/network-interfaces.nix
@@ -155,6 +155,16 @@ let
         description = "Name of the interface.";
       };
 
+      preferTempAddress = mkOption {
+        type = types.bool;
+        default = cfg.enableIPv6;
+        defaultText = literalExample "config.networking.enableIpv6";
+        description = ''
+          When using SLAAC prefer a temporary (IPv6) address over the EUI-64
+          address for originating connections. This is used to reduce tracking.
+        '';
+      };
+
       useDHCP = mkOption {
         type = types.nullOr types.bool;
         default = null;
@@ -941,6 +951,11 @@ in
         message = ''
           The networking.interfaces."${i.name}" must not have any defined ips when it is a slave.
         '';
+      })) ++ (flip map interfaces (i: {
+        assertion = i.preferTempAddress -> cfg.enableIPv6;
+        message = ''
+          Temporary addresses are only needed when IPv6 is enabled.
+        '';
       })) ++ [
         {
           assertion = cfg.hostId == null || (stringLength cfg.hostId == 8 && isHexString cfg.hostId);
@@ -963,9 +978,10 @@ in
       "net.ipv6.conf.all.disable_ipv6" = mkDefault (!cfg.enableIPv6);
       "net.ipv6.conf.default.disable_ipv6" = mkDefault (!cfg.enableIPv6);
       "net.ipv6.conf.all.forwarding" = mkDefault (any (i: i.proxyARP) interfaces);
-    } // listToAttrs (concatLists (flip map (filter (i: i.proxyARP) interfaces)
-        (i: flip map [ "4" "6" ] (v: nameValuePair "net.ipv${v}.conf.${i.name}.proxy_arp" true))
-      ));
+    } // listToAttrs (flip concatMap (filter (i: i.proxyARP) interfaces)
+        (i: flip map [ "4" "6" ] (v: nameValuePair "net.ipv${v}.conf.${i.name}.proxy_arp" true)))
+      // listToAttrs (flip map (filter (i: i.preferTempAddress) interfaces)
+        (i: nameValuePair "net.ipv6.conf.${i.name}.use_tempaddr" 2));
 
     # Capabilities won't work unless we have at-least a 4.3 Linux
     # kernel because we need the ambient capability
diff --git a/nixos/modules/virtualisation/lxd.nix b/nixos/modules/virtualisation/lxd.nix
index b1ff0337994e..4988886baf60 100644
--- a/nixos/modules/virtualisation/lxd.nix
+++ b/nixos/modules/virtualisation/lxd.nix
@@ -38,6 +38,15 @@ in
     environment.systemPackages =
       [ pkgs.lxd ];
 
+    security.apparmor = {
+      enable = true;
+      profiles = [
+        "${pkgs.lxc}/etc/apparmor.d/usr.bin.lxc-start"
+        "${pkgs.lxc}/etc/apparmor.d/lxc-containers"
+      ];
+      packages = [ pkgs.lxc ];
+    };
+
     systemd.services.lxd =
       { description = "LXD Container Management Daemon";
 
@@ -47,6 +56,10 @@ in
         # TODO(wkennington): Add lvm2 and thin-provisioning-tools
         path = with pkgs; [ acl rsync gnutar xz btrfs-progs gzip dnsmasq squashfsTools iproute iptables ];
 
+        preStart = ''
+          mkdir -m 0755 -p /var/lib/lxc/rootfs
+        '';
+
         serviceConfig.ExecStart = "@${pkgs.lxd.bin}/bin/lxd lxd --syslog --group lxd";
         serviceConfig.Type = "simple";
         serviceConfig.KillMode = "process"; # when stopping, leave the containers alone
diff --git a/nixos/tests/docker-tools.nix b/nixos/tests/docker-tools.nix
index e7f2588f681b..e52a4c3f884e 100644
--- a/nixos/tests/docker-tools.nix
+++ b/nixos/tests/docker-tools.nix
@@ -9,28 +9,31 @@ import ./make-test.nix ({ pkgs, ... }: {
   nodes = {
     docker =
       { config, pkgs, ... }: {
-        virtualisation.docker.enable = true;
+        virtualisation = {
+          diskSize = 1024;
+          docker.enable = true;
+        };
       };
   };
 
   testScript =
-    let
-      dockerImage = pkgs.dockerTools.buildImage {
-        name = "hello-docker";
-        contents = [ pkgs.hello ];
-        tag = "sometag";
+    ''
+      $docker->waitForUnit("sockets.target");
 
-        # TODO: create another test checking whether runAsRoot works as intended.
+      $docker->succeed("docker load --input='${pkgs.dockerTools.examples.bash}'");
+      $docker->succeed("docker run ${pkgs.dockerTools.examples.bash.imageName} /bin/bash --version");
 
-        config = {
-          Cmd = [ "hello" ];
-        };
-      };
+      $docker->succeed("docker load --input='${pkgs.dockerTools.examples.nix}'");
+      $docker->succeed("docker run ${pkgs.dockerTools.examples.nix.imageName} /bin/nix-store -qR ${pkgs.nix}");
 
-    in ''
-      $docker->waitForUnit("sockets.target");
-      $docker->succeed("docker load --input='${dockerImage}'");
-      $docker->succeed("docker run hello-docker:sometag");
-    '';
+      # To test the pullImage tool
+      $docker->succeed("docker load --input='${pkgs.dockerTools.examples.nixFromDockerHub}'");
+      $docker->succeed("docker run nixos/nix:1.11 nix-store --version");
 
+      # To test runAsRoot and entry point
+      $docker->succeed("docker load --input='${pkgs.dockerTools.examples.nginx}'");
+      $docker->succeed("docker run --name nginx -d -p 8000:80 ${pkgs.dockerTools.examples.nginx.imageName}");
+      $docker->waitUntilSucceeds('curl http://localhost:8000/');
+      $docker->succeed("docker rm --force nginx");
+    '';
 })
diff --git a/nixos/tests/networking.nix b/nixos/tests/networking.nix
index 182328b32962..bcdbad3bab0c 100644
--- a/nixos/tests/networking.nix
+++ b/nixos/tests/networking.nix
@@ -476,6 +476,63 @@ let
         );
       '';
     };
+    privacy = {
+      name = "Privacy";
+      nodes.router = { config, pkgs, ... }: {
+        virtualisation.vlans = [ 1 ];
+        boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = true;
+        networking = {
+          useNetworkd = networkd;
+          interfaces.eth1 = {
+            ipv6Address = "fd00:1234:5678:1::1";
+            ipv6PrefixLength = 64;
+          };
+        };
+        services.radvd = {
+          enable = true;
+          config = ''
+            interface eth1 {
+              AdvSendAdvert on;
+              AdvManagedFlag on;
+              AdvOtherConfigFlag on;
+
+              prefix fd00:1234:5678:1::/64 {
+                AdvAutonomous on;
+                AdvOnLink on;
+              };
+            };
+          '';
+        };
+      };
+      nodes.client = { config, pkgs, ... }: with pkgs.lib; {
+        virtualisation.vlans = [ 1 ];
+        networking = {
+          useNetworkd = networkd;
+          useDHCP = true;
+          interfaces.eth1 = {
+            preferTempAddress = true;
+            ip4 = mkOverride 0 [ ];
+            ip6 = mkOverride 0 [ ];
+          };
+        };
+      };
+      testScript = { nodes, ... }:
+        ''
+          startAll;
+
+          $client->waitForUnit("network.target");
+          $router->waitForUnit("network-online.target");
+
+          # Wait until we have an ip address
+          $client->waitUntilSucceeds("ip addr show dev eth1 | grep -q 'fd00:1234:5678:1:'");
+
+          # Test vlan 1
+          $client->waitUntilSucceeds("ping -c 1 fd00:1234:5678:1::1");
+
+          # Test address used is temporary
+          $client->waitUntilSucceeds("! ip route get fd00:1234:5678:1::1 | grep -q ':[a-f0-9]*ff:fe[a-f0-9]*:'");
+        '';
+    };
   };
 
 in mapAttrs (const (attrs: makeTest (attrs // {
diff --git a/pkgs/applications/audio/sunvox/default.nix b/pkgs/applications/audio/sunvox/default.nix
new file mode 100644
index 000000000000..ccbceddefd2f
--- /dev/null
+++ b/pkgs/applications/audio/sunvox/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, unzip, alsaLib, libX11, libXi, SDL2 }:
+
+let
+  libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc alsaLib libX11 libXi SDL2 ];
+  arch =
+    if stdenv.isAarch64
+    then "arm64"
+    else if stdenv.isArm
+    then "arm_armhf_raspberry_pi"
+    else if stdenv.is64bit
+    then "x86_64"
+    else "x86";
+in
+stdenv.mkDerivation rec {
+  name = "SunVox-${version}";
+  version = "1.9.3b";
+
+  src = fetchurl {
+    url = "http://www.warmplace.ru/soft/sunvox/sunvox-${version}.zip";
+    sha256 = "0k74rcq7niw4p17vj3zp9lpgi932896dmzqv4ln43g0pz7l18c8b";
+  };
+
+  buildInputs = [ unzip ];
+
+  unpackPhase = "unzip $src";
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/share $out/bin
+    mv sunvox $out/share/
+
+    bin="$out/share/sunvox/sunvox/linux_${arch}/sunvox"
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+             --set-rpath "${libPath}" \
+             "$bin"
+
+    ln -s "$bin" $out/bin/sunvox
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Small, fast and powerful modular synthesizer with pattern-based sequencer";
+    license = licenses.unfreeRedistributable;
+    homepage = "http://www.warmplace.ru/soft/sunvox/";
+    maintainers = with maintainers; [ puffnfresh ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/applications/editors/vscode/default.nix b/pkgs/applications/editors/vscode/default.nix
index 8599ff8e93e4..4c825cc9891a 100644
--- a/pkgs/applications/editors/vscode/default.nix
+++ b/pkgs/applications/editors/vscode/default.nix
@@ -2,7 +2,7 @@
   makeWrapper, libXScrnSaver, libxkbfile, libsecret }:
 
 let
-  version = "1.20.0";
+  version = "1.20.1";
   channel = "stable";
 
   plat = {
@@ -12,9 +12,9 @@ let
   }.${stdenv.system};
 
   sha256 = {
-    "i686-linux" = "0lhfljcdb05v0p3kc6zimgd2z057397blfp56bhr7v7wnsi6i40k";
-    "x86_64-linux" = "138kvqa5cixry62yry0lwzxlk9fs8hb4zqzmsd8ag1jjfma8y45k";
-    "x86_64-darwin" = "1adnwlqf2kw8wfjf86a3xg83j1yqnlsdckksw82b06x3j11g91i8";
+    "i686-linux" = "0gycz857bl9ikfrylim970qgmyw7rcy3gbg2zsjddp9cgdk9basn";
+    "x86_64-linux" = "0rx0qyxv173s9wjw97f94h61f12lh42grnmabgsvwd87b8zx4qim";
+    "x86_64-darwin" = "0mqxmmkp3bsmy1g35prsgan61zzq5368gp720v37cwx1rskl0bfg";
   }.${stdenv.system};
 
   archive_fmt = if stdenv.system == "x86_64-darwin" then "zip" else "tar.gz";
diff --git a/pkgs/applications/misc/memo/default.nix b/pkgs/applications/misc/memo/default.nix
index 642b0c65efcd..fc1c08dc2b2c 100644
--- a/pkgs/applications/misc/memo/default.nix
+++ b/pkgs/applications/misc/memo/default.nix
@@ -1,4 +1,4 @@
-{ fetchFromGitHub, ack , tree, stdenv, ... }:
+{ fetchFromGitHub, ag, tree, stdenv, ... }:
 
 stdenv.mkDerivation rec {
 
@@ -15,6 +15,9 @@ stdenv.mkDerivation rec {
 
   installPhase = ''
     mkdir -p $out/{bin,share/man/man1,share/bash-completion/completions}
+    substituteInPlace memo \
+      --replace "ack "  "${ag}/bin/ag " \
+      --replace "tree " "${tree}/bin/tree "
     mv memo $out/bin/
     mv doc/memo.1 $out/share/man/man1/memo.1
     mv completion/memo.bash $out/share/bash-completion/completions/memo.sh
@@ -32,4 +35,4 @@ stdenv.mkDerivation rec {
     maintainers = [ stdenv.lib.maintainers.mrVanDalo ];
     platforms = stdenv.lib.platforms.all;
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/applications/misc/welle-io/default.nix b/pkgs/applications/misc/welle-io/default.nix
index b1db01873a3a..d705de1a8cd6 100644
--- a/pkgs/applications/misc/welle-io/default.nix
+++ b/pkgs/applications/misc/welle-io/default.nix
@@ -3,7 +3,7 @@
 , faad2, rtl-sdr, libusb, fftwSinglePrec }:
 let
 
-  version = "1.0-rc1";
+  version = "1.0-rc2";
 
 in stdenv.mkDerivation {
 
@@ -13,7 +13,7 @@ in stdenv.mkDerivation {
     owner = "AlbrechtL";
     repo = "welle.io";
     rev = "V${version}";
-    sha256 = "1xi59rmk3rdqqxxxrm2pbllrlsql46vxs95l1pkfx7bp8f7n7rsv";
+    sha256 = "01x4ldq6lvmdrmxi857594nj9xpn2h7848vvf3f54sh1zrawn4k4";
   };
 
   nativeBuildInputs = [ cmake pkgconfig ];
diff --git a/pkgs/applications/misc/wsjtx/default.nix b/pkgs/applications/misc/wsjtx/default.nix
new file mode 100644
index 000000000000..8a23134e3ed0
--- /dev/null
+++ b/pkgs/applications/misc/wsjtx/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, asciidoc, asciidoctor, autoconf, automake, cmake,
+  docbook_xsl, fftw, fftwFloat, gfortran, libtool, libpulseaudio, qtbase,
+  qtmultimedia, qtserialport, texinfo, libusb1 }:
+
+stdenv.mkDerivation rec {
+  name = "wsjtx-${version}";
+  version = "1.8.0";
+
+  # This is a composite source tarball containing both wsjtx and a hamlib fork
+  src = fetchurl {
+    url = "http://physics.princeton.edu/pulsar/K1JT/wsjtx-${version}.tgz";
+    sha256 = "21603ad4d5f43cd9c79a6e8cf468bde88c554654012b2c6c1ef9144cfbf668ce";
+  };
+
+  # Hamlib builds with autotools, wsjtx builds with cmake
+  # Omitting pkgconfig because it causes issues locating the built hamlib
+  nativeBuildInputs = [
+    asciidoc asciidoctor autoconf automake cmake docbook_xsl gfortran libtool
+    texinfo
+  ];
+  buildInputs = [ fftw fftwFloat libusb1 qtbase qtmultimedia qtserialport ];
+
+  # Composite build has its own patch step after it extracts the inner archives
+  postPatch = "cp ${./wsjtx.patch} wsjtx.patch";
+
+  meta = with stdenv.lib; {
+    description = "Weak-signal digital communication modes for amateur radio";
+    longDescription = ''
+      WSJT-X implements communication protocols or "modes" called FT8, JT4, JT9,
+      JT65, QRA64, ISCAT, MSK144, and WSPR, as well as one called Echo for
+      detecting and measuring your own radio signals reflected from the Moon.
+      These modes were all designed for making reliable, confirmed ham radio
+      contacts under extreme weak-signal conditions.
+    '';
+    homepage = http://physics.princeton.edu/pulsar/k1jt/wsjtx.html;
+    # Older licenses are for the statically-linked hamlib
+    license = with licenses; [ gpl3Plus gpl2Plus lgpl21Plus ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.lasandell ];
+  };
+}
diff --git a/pkgs/applications/misc/wsjtx/wsjtx.patch b/pkgs/applications/misc/wsjtx/wsjtx.patch
new file mode 100644
index 000000000000..a5bd7ec3e196
--- /dev/null
+++ b/pkgs/applications/misc/wsjtx/wsjtx.patch
@@ -0,0 +1,12 @@
+Index: wsjtx/CMakeLists.txt
+===================================================================
+--- wsjtx/CMakeLists.txt	(revision 8382)
++++ wsjtx/CMakeLists.txt	(working copy)
+@@ -866,6 +866,7 @@
+ find_package (Qt5Widgets 5 REQUIRED)
+ find_package (Qt5Multimedia 5 REQUIRED)
+ find_package (Qt5PrintSupport 5 REQUIRED)
++find_package (Qt5SerialPort 5 REQUIRED)
+ 
+ if (WIN32)
+   add_definitions (-DQT_NEEDS_QTMAIN)
diff --git a/pkgs/applications/networking/browsers/falkon/default.nix b/pkgs/applications/networking/browsers/falkon/default.nix
index 9356794bb5d6..90aec9831930 100644
--- a/pkgs/applications/networking/browsers/falkon/default.nix
+++ b/pkgs/applications/networking/browsers/falkon/default.nix
@@ -2,16 +2,17 @@
 , libpthreadstubs, libxcb, libXdmcp, qtsvg, qttools, qtwebengine, qtx11extras, kwallet, openssl }:
 
 stdenv.mkDerivation rec {
-  # Last qupvilla release is 2.1.2 so we add the .1 although it isn't actually a
-  # release but it is basically 2.1.2 with the falkon name
+  # KDE hasn't made a release of falkon yet so we just track git for now which is
+  # based on the most recent release of qupzilla
+  # This wip version is 2.1.99 so we add the .1
   name = "falkon-${version}.1";
-  version = "2.1.2";
+  version = "2.1.99";
 
   src = fetchFromGitHub {
     owner  = "KDE";
     repo   = "falkon";
-    rev    = "eecaf2e9d6b572a7f7d2e6dc324e3d79b61c31db";
-    sha256 = "01r5aw10jd0qz7xvad0cqzjbnsj7vwblh54wbq4x1m6xbkp6xcgy";
+    rev    = "dd3c570c41b4b3d0ad17202b78bf14cf1ac56495";
+    sha256 = "07d40cpckaprj74mr06k3mfriwb471bdmq60smls34y62ss55q9d";
   };
 
   preConfigure = ''
@@ -21,8 +22,6 @@ stdenv.mkDerivation rec {
     export FALKON_PREFIX=$out
   '';
 
-  dontUseCmakeConfigure = true;
-
   buildInputs = [
     libpthreadstubs libxcb libXdmcp
     kwallet
@@ -31,8 +30,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig qmake qttools ];
 
-  # on 2.1.2: RCC: Error in 'autoscroll.qrc': Cannot find file 'locale/ar_SA.qm'
-  enableParallelBuilding = false;
+  enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
     description = "QtWebEngine based cross-platform web browser";
@@ -40,6 +38,5 @@ stdenv.mkDerivation rec {
     license     = licenses.gpl3;
     maintainers = with maintainers; [ peterhoeg ];
     platforms   = platforms.unix;
-    broken      = true;
   };
 }
diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix
index 010f60881b5b..12ea714fb234 100644
--- a/pkgs/applications/networking/browsers/firefox/wrapper.nix
+++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -71,7 +71,7 @@ let
             ++ lib.optionals (cfg.enableQuakeLive or false)
             (with xorg; [ stdenv.cc libX11 libXxf86dga libXxf86vm libXext libXt alsaLib zlib libudev ])
             ++ lib.optional (enableAdobeFlash && (cfg.enableAdobeFlashDRM or false)) hal-flash
-            ++ lib.optional (config.pulseaudio or false) libpulseaudio;
+            ++ lib.optional (config.pulseaudio or true) libpulseaudio;
       gst-plugins = with gst_all; [ gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-ffmpeg ];
       gtk_modules = [ libcanberra_gtk2 ];
 
diff --git a/pkgs/applications/networking/browsers/google-chrome/default.nix b/pkgs/applications/networking/browsers/google-chrome/default.nix
index b1b1132f22b0..17c285d9bdf7 100644
--- a/pkgs/applications/networking/browsers/google-chrome/default.nix
+++ b/pkgs/applications/networking/browsers/google-chrome/default.nix
@@ -5,6 +5,7 @@
 , libXcursor, libXext, libXfixes, libXrender, libXScrnSaver, libXcomposite, libxcb
 , alsaLib, libXdamage, libXtst, libXrandr, expat, cups
 , dbus_libs, gtk2, gtk3, gdk_pixbuf, gcc-unwrapped, at_spi2_atk
+, kerberos
 
 # command line arguments which are always set e.g "--disable-gpu"
 , commandLineArgs ? ""
@@ -57,6 +58,7 @@ let
     liberation_ttf curl utillinux xdg_utils wget
     flac harfbuzz icu libpng opusWithCustomModes snappy speechd
     bzip2 libcap at_spi2_atk
+    kerberos
   ] ++ optional pulseSupport libpulseaudio
     ++ [ gtk ];
 
diff --git a/pkgs/applications/networking/nextcloud-client/default.nix b/pkgs/applications/networking/nextcloud-client/default.nix
index 652de194a5e7..3cbc03e8d73c 100644
--- a/pkgs/applications/networking/nextcloud-client/default.nix
+++ b/pkgs/applications/networking/nextcloud-client/default.nix
@@ -36,7 +36,10 @@ stdenv.mkDerivation rec {
     "-DINOTIFY_INCLUDE_DIR=${inotify-tools}/include"
   ];
 
-  postInstall = stdenv.lib.optionalString (withGnomeKeyring) ''
+  postInstall = ''
+    sed -i 's/\(Icon.*\)=nextcloud/\1=Nextcloud/g' \
+      $out/share/applications/nextcloud.desktop
+  '' + stdenv.lib.optionalString (withGnomeKeyring) ''
     wrapProgram "$out/bin/nextcloud" \
       --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ libgnome_keyring ]}
   '';
diff --git a/pkgs/common-updater/scripts/update-source-version b/pkgs/common-updater/scripts/update-source-version
index 5922f3f30cf2..4c32ae046f31 100755
--- a/pkgs/common-updater/scripts/update-source-version
+++ b/pkgs/common-updater/scripts/update-source-version
@@ -74,7 +74,7 @@ fi
 if [ -z "$newHash" ]; then
     nix-build --no-out-link -A "$attr.src" 2>"$attr.fetchlog" >/dev/null || true
     # FIXME: use nix-build --hash here once https://github.com/NixOS/nix/issues/1172 is fixed
-    newHash=$(egrep -v "killing process|dependencies couldn't be built" "$attr.fetchlog" | tail -n2 | grep "output path .* has .* hash .* when .* was expected" | head -n1 | tr -dc '\040-\177' | tr -d "'" | awk '{ print $(NF-4) }')
+    newHash=$(egrep -v "killing process|dependencies couldn't be built" "$attr.fetchlog" | tail -n2 | sed "s~output path .* has .* hash \(.*\) when .* was expected\|fixed-output derivation produced path '.*' with .* hash '\(.*\)' instead of the expected hash '.*'~\1\2~" | head -n1)
 fi
 
 if [ -z "$newHash" ]; then
diff --git a/pkgs/data/fonts/fixedsys-excelsior/default.nix b/pkgs/data/fonts/fixedsys-excelsior/default.nix
new file mode 100644
index 000000000000..b0c481dfcb5c
--- /dev/null
+++ b/pkgs/data/fonts/fixedsys-excelsior/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl } :
+
+let 
+  major = "3";
+  minor = "00";
+  version = "${major}.${minor}";
+
+in
+
+stdenv.mkDerivation rec {
+  name = "fixedsys-excelsior-${version}";
+
+  src = fetchurl {
+    url = http://www.fixedsysexcelsior.com/fonts/FSEX300.ttf;
+    sha256 = "6ee0f3573bc5e33e93b616ef6282f49bc0e227a31aa753ac76ed2e3f3d02056d";
+  };
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype/
+    cp $src $out/share/fonts/truetype/${name}.ttf
+  '';
+
+  outputHashMode = "recursive";
+
+  outputHashAlgo = "sha256";
+
+  outputHash = "32d6f07f1ff08c764357f8478892b2ba5ade23427af99759f34a0ba24bcd2e37";
+  
+  meta = {
+    description = "Pan-unicode version of Fixedsys, a classic DOS font.";
+    homepage = http://www.fixedsysexcelsior.com/;
+    platforms = stdenv.lib.platforms.all;
+    license = stdenv.lib.licenses.publicDomain;
+    maintainers = [ stdenv.lib.maintainers.ninjatrappeur ];
+  };
+}
diff --git a/pkgs/development/compilers/dmd/default.nix b/pkgs/development/compilers/dmd/default.nix
index de3544a3a638..094cdb06b698 100644
--- a/pkgs/development/compilers/dmd/default.nix
+++ b/pkgs/development/compilers/dmd/default.nix
@@ -3,9 +3,9 @@
 , curl, tzdata, gdb, darwin
 , callPackage
 , bootstrapVersion ? false
-, version ? "2.078.1"
-, dmdSha256 ? "0b9lphh4g3r9cyzv4wcfppv9j3w952vvwv615za23acgwav3mqg2"
-, druntimeSha256 ? "16jv40m073cflpkyl0vmg1g58cianybfcsgcvwli7pfryxbgsbrr"
+, version ? "2.078.2"
+, dmdSha256 ? "0x9q4aw4jl36dz7m5111y2sm8jdaj3zg36zhj6vqg1lqpdn3bhls"
+, druntimeSha256 ? "0nfqjcmwqc490bzi3582x1c3zigkf306g4nyd1cyd3vs8lfm6x66"
 , phobosSha256 ? "08ircpf4ilznz638kra272hz8fi5ccvw2cswj5hqckssl1lyqzs8"
 }:
 
@@ -111,7 +111,7 @@ let
     ''
 
     + stdenv.lib.optionalString stdenv.hostPlatform.isLinux ''
-        # See https://github.com/NixOS/nixpkgs/issues/29443
+        # See https://github.com/dlang/phobos/pull/5960
         substituteInPlace phobos/std/path.d \
             --replace "\"/root" "\"${ROOT_HOME_DIR}"
     '';
diff --git a/pkgs/development/compilers/jwasm/default.nix b/pkgs/development/compilers/jwasm/default.nix
new file mode 100644
index 000000000000..9800b33e7a9e
--- /dev/null
+++ b/pkgs/development/compilers/jwasm/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub
+, cmake }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "jwasm-${version}";
+  version = "git-2017-11-22";
+
+  src = fetchFromGitHub {
+    owner = "JWasm";
+    repo  = "JWasm";
+    rev    = "26f97c8b5c9d9341ec45538701116fa3649b7766";
+    sha256 = "0m972pc8vk8s9yv1pi85fsjgm6hj24gab7nalw2q04l0359nqi7w";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  installPhase = "mkdir -p $out/bin ; cp jwasm $out/bin/";
+
+  meta = {
+    description = "A MASM-compatible x86 assembler";
+    homepage = http://jwasm.github.io/;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.darwin ++ platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/aws-sdk-cpp/default.nix b/pkgs/development/libraries/aws-sdk-cpp/default.nix
index 26511c22d0b6..1983aab0e324 100644
--- a/pkgs/development/libraries/aws-sdk-cpp/default.nix
+++ b/pkgs/development/libraries/aws-sdk-cpp/default.nix
@@ -3,6 +3,7 @@
   apis ? ["*"]
 , # Whether to enable AWS' custom memory management.
   customMemoryManagement ? true
+, darwin
 }:
 
 let
@@ -29,7 +30,11 @@ in stdenv.mkDerivation rec {
   separateDebugInfo = stdenv.isLinux;
 
   nativeBuildInputs = [ cmake curl ];
-  buildInputs = [ zlib curl openssl ];
+  buildInputs = [ zlib curl openssl ]
+    ++ lib.optionals (stdenv.isDarwin &&
+                        ((builtins.elem "text-to-speech" apis) ||
+                         (builtins.elem "*" apis)))
+         (with darwin.apple_sdk.frameworks; [ CoreAudio AudioToolbox ]);
 
   cmakeFlags =
     lib.optional (!customMemoryManagement) "-DCUSTOM_MEMORY_MANAGEMENT=0"
diff --git a/pkgs/development/libraries/cpp-gsl/default.nix b/pkgs/development/libraries/cpp-gsl/default.nix
new file mode 100644
index 000000000000..ecd86354ee82
--- /dev/null
+++ b/pkgs/development/libraries/cpp-gsl/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, cmake, catch }:
+
+stdenv.mkDerivation rec {
+  pname = "GSL-unstable";
+  version = "2017-02-15";
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "Microsoft";
+    repo = "GSL";
+    rev = "c87c123d1b3e64ae2cf725584f0c004da4d90f1c";
+    sha256 = "0h8py468bvxnydkjs352d7a9s8hk0ihc7msjkcnzj2d7nzp5nsc1";
+  };
+
+  nativeBuildInputs = [ cmake catch ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/Microsoft/GSL;
+    description = "C++ Core Guideline support library";
+    longDescription = ''
+     The Guideline Support Library (GSL) contains functions and types that are suggested for
+     use by the C++ Core Guidelines maintained by the Standard C++ Foundation.
+     This package contains Microsoft's implementation of GSL.
+    '';
+    platforms = stdenv.lib.platforms.unix;
+    license = licenses.mit;
+    maintainers = with maintainers; [ yuriaisaka ];
+  };
+}
diff --git a/pkgs/development/libraries/openmpi/default.nix b/pkgs/development/libraries/openmpi/default.nix
index 3f764b1d8453..9aca076c5dcb 100644
--- a/pkgs/development/libraries/openmpi/default.nix
+++ b/pkgs/development/libraries/openmpi/default.nix
@@ -29,7 +29,7 @@ in stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ perl ];
 
-  configureFlags = with stdenv; []
+  configureFlags = with stdenv; [ "--disable-mca-dso" ]
     ++ lib.optional isLinux  "--with-libnl=${libnl.dev}"
     ++ lib.optional enableSGE "--with-sge"
     ++ lib.optional enablePrefix "--enable-mpirun-prefix-by-default"
diff --git a/pkgs/development/libraries/psol/default.nix b/pkgs/development/libraries/psol/default.nix
index dd6037e68329..270c24dc01f4 100644
--- a/pkgs/development/libraries/psol/default.nix
+++ b/pkgs/development/libraries/psol/default.nix
@@ -1,5 +1,5 @@
 { callPackage }:
 callPackage ./generic.nix {} {
-  version = "1.13.35.1"; # Latest beta, 2017-11-08
-  sha256  = "126823gpr3rdqakwixmr887rbvwhksr3xg14jnyzlp84q4hg1p0n";
+  version = "1.13.35.2"; # Latest stable, 2018-02-05
+  sha256  = "0xi2srf9gx0x2sz9r45zb35k2n0iv457if1lqzvbanls3f935cmr";
 }
diff --git a/pkgs/development/lisp-modules/clwrapper/cl-wrapper.sh b/pkgs/development/lisp-modules/clwrapper/cl-wrapper.sh
index a1cfae0e6069..522d2c252684 100755
--- a/pkgs/development/lisp-modules/clwrapper/cl-wrapper.sh
+++ b/pkgs/development/lisp-modules/clwrapper/cl-wrapper.sh
@@ -1,4 +1,4 @@
-#!@stdenv_shell@
+#!@bash@/bin/bash
 # Part of NixPkgs package collection
 # This script can be used at your option under the same license as NixPkgs or
 # under MIT/X11 license
diff --git a/pkgs/development/lisp-modules/clwrapper/common-lisp.sh b/pkgs/development/lisp-modules/clwrapper/common-lisp.sh
index 9f5a2b806891..88948e3253df 100755
--- a/pkgs/development/lisp-modules/clwrapper/common-lisp.sh
+++ b/pkgs/development/lisp-modules/clwrapper/common-lisp.sh
@@ -1,3 +1,3 @@
-#! /bin/sh
+#!@bash@/bin/bash
 
 source "@out@"/bin/cl-wrapper.sh "${NIX_LISP_COMMAND:-$(@ls@ "@lisp@/bin"/* | @head@ -n 1)}" "$@"
diff --git a/pkgs/development/lisp-modules/clwrapper/default.nix b/pkgs/development/lisp-modules/clwrapper/default.nix
index fb4a090c702a..c834ab7a305b 100644
--- a/pkgs/development/lisp-modules/clwrapper/default.nix
+++ b/pkgs/development/lisp-modules/clwrapper/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, asdf, which, lisp ? null}:
+{stdenv, fetchurl, asdf, which, bash, lisp ? null}:
 stdenv.mkDerivation {
   name = "cl-wrapper-script";
 
@@ -36,7 +36,7 @@ stdenv.mkDerivation {
 
   buildInputs = [which];
 
-  inherit asdf lisp;
+  inherit asdf lisp bash;
   stdenv_shell = stdenv.shell;
 
   setupHook = ./setup-hook.sh;
diff --git a/pkgs/development/tools/build-managers/dub/default.nix b/pkgs/development/tools/build-managers/dub/default.nix
index 8af11f057380..da404a63d85f 100644
--- a/pkgs/development/tools/build-managers/dub/default.nix
+++ b/pkgs/development/tools/build-managers/dub/default.nix
@@ -4,7 +4,7 @@ let
 
   dubBuild = stdenv.mkDerivation rec {
     name = "dubBuild-${version}";
-    version = "1.7.1";
+    version = "1.7.2";
 
     enableParallelBuilding = true;
 
@@ -12,9 +12,13 @@ let
       owner = "dlang";
       repo = "dub";
       rev = "v${version}";
-      sha256 = "09bcc9bq2z1rbm8sdip1l81y5p8q13r30k02lzifyasiplrnpvlv";
+      sha256 = "073ibvgm1gphcqs1yjrav9ryp677nh3b194nxmvicwgvdc0sb6w9";
     };
 
+    postUnpack = ''
+        patchShebangs .
+    '';
+
     patches = [
       # TODO Remove with next release which contains https://github.com/dlang/dub/pull/1354
       (fetchpatch {
@@ -23,12 +27,11 @@ let
       })
     ];
 
+    # Can be removed with https://github.com/dlang/dub/pull/1368
+    dubvar = "\\$DUB";
     postPatch = ''
-      # Avoid that the version file is overwritten
-      substituteInPlace build.sh \
-        --replace source/dub/version_.d /dev/null
-
-      patchShebangs .
+        substituteInPlace test/fetchzip.sh \
+            --replace "dub remove" "\"${dubvar}\" remove"
     '';
 
     nativeBuildInputs = [ dmd libevent rsync ];
@@ -70,6 +73,7 @@ let
     
     patches = dubBuild.patches;
 
+    postUnpack = dubBuild.postUnpack;
     postPatch = dubBuild.postPatch;
 
     nativeBuildInputs = dubBuild.nativeBuildInputs;
diff --git a/pkgs/development/tools/continuous-integration/buildkite-agent/default.nix b/pkgs/development/tools/continuous-integration/buildkite-agent/default.nix
index ab090e6dc129..515e22788e50 100644
--- a/pkgs/development/tools/continuous-integration/buildkite-agent/default.nix
+++ b/pkgs/development/tools/continuous-integration/buildkite-agent/default.nix
@@ -1,6 +1,6 @@
 { stdenv, buildGoPackage, fetchFromGitHub, makeWrapper, coreutils, git, openssh, bash, gnused, gnugrep }:
 let
-  version = "2.6.6";
+  version = "2.6.9";
   goPackagePath = "github.com/buildkite/agent";
 in
 buildGoPackage {
@@ -12,11 +12,15 @@ buildGoPackage {
     owner = "buildkite";
     repo = "agent";
     rev = "v${version}";
-    sha256 = "0rpi63mfzlm39517l4xjcka3m4dnfjzwvpi0i1rpf1z2288cnkyx";
+    sha256 = "0rlinj7dcr8vzl1pb15nfny8jkvvj50i8czf4ahv26avnfycm4pz";
   };
 
   nativeBuildInputs = [ makeWrapper ];
 
+  # on Linux, the TMPDIR is /build which is the same prefix as this package
+  # remove once #35068 is merged
+  noAuditTmpdir = stdenv.isLinux;
+
   postInstall = ''
     # Install bootstrap.sh
     mkdir -p $bin/libexec/buildkite-agent
@@ -44,6 +48,6 @@ buildGoPackage {
     homepage = https://buildkite.com/docs/agent;
     license = licenses.mit;
     maintainers = with maintainers; [ pawelpacana zimbatm ];
-    platforms = platforms.linux ++ platforms.darwin;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/tools/continuous-integration/jenkins/default.nix b/pkgs/development/tools/continuous-integration/jenkins/default.nix
index 1586d6360877..18ca5d4d8972 100644
--- a/pkgs/development/tools/continuous-integration/jenkins/default.nix
+++ b/pkgs/development/tools/continuous-integration/jenkins/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "jenkins-${version}";
-  version = "2.105";
+  version = "2.89.3";
 
   src = fetchurl {
-    url = "http://mirrors.jenkins-ci.org/war/${version}/jenkins.war";
-    sha256 = "0q6xyjkqlrwjgf7rzmyy8m0w7lhqyavici76zzngg159xkyh5cfh";
+    url = "http://mirrors.jenkins.io/war-stable/${version}/jenkins.war";
+    sha256 = "0flqd3r1nip9wc8sy0kiqjivgx0zkpzlkbz6n3gb1plc73lpdwbr";
   };
 
   buildCommand = ''
diff --git a/pkgs/development/tools/dtools/default.nix b/pkgs/development/tools/dtools/default.nix
index daa25de95080..d76bbb7f53a3 100644
--- a/pkgs/development/tools/dtools/default.nix
+++ b/pkgs/development/tools/dtools/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   name = "dtools-${version}";
-  version = "2.078.1";
+  version = "2.078.2";
 
   srcs = [
     (fetchFromGitHub {
       owner = "dlang";
       repo = "dmd";
       rev = "v${version}";
-      sha256 = "0b9lphh4g3r9cyzv4wcfppv9j3w952vvwv615za23acgwav3mqg2";
+      sha256 = "0x9q4aw4jl36dz7m5111y2sm8jdaj3zg36zhj6vqg1lqpdn3bhls";
       name = "dmd";
     })
     (fetchFromGitHub {
@@ -28,23 +28,11 @@ stdenv.mkDerivation rec {
       cd dtools
   '';
 
-  postPatch = ''
-      substituteInPlace posix.mak \
-          --replace "../dmd/generated/\$(OS)/release/\$(MODEL)/dmd" ${dmd.out}/bin/dmd
-
-      substituteInPlace posix.mak \
-          --replace gcc $CC
-
-      # To fix rdmd test with newer phobos
-      substituteInPlace rdmd.d \
-          --replace " std.stdiobase," ""
-  '';
-
   nativeBuildInputs = [ dmd ];
   buildInputs = [ curl ];
 
   makeCmd = ''
-    make -f posix.mak DMD=${dmd.out}/bin/dmd DMD_DIR=dmd
+    make -f posix.mak DMD_DIR=dmd DMD=${dmd.out}/bin/dmd CC=${stdenv.cc}/bin/cc
   '';
 
   buildPhase = ''
diff --git a/pkgs/development/tools/gotests/default.nix b/pkgs/development/tools/gotests/default.nix
new file mode 100644
index 000000000000..ccdab780e6cf
--- /dev/null
+++ b/pkgs/development/tools/gotests/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "gotests-${version}";
+  version = "1.5.2";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/cweill/gotests";
+  excludedPackages = "testdata";
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "cweill";
+    repo = "gotests";
+    sha256 = "0ff2jvpc1xb5jr6dv9izlpfavxaivzirqmdmicpznrqjz0d56pri";
+  };
+
+  meta = {
+    description = "Generate Go tests from your source code.";
+    homepage = https://github.com/cweill/gotests;
+    maintainers = with stdenv.lib.maintainers; [ vdemeester ];
+    license = stdenv.lib.licenses.asl20;
+  };
+}
diff --git a/pkgs/development/tools/gotests/deps.nix b/pkgs/development/tools/gotests/deps.nix
new file mode 100644
index 000000000000..6a333b58bec6
--- /dev/null
+++ b/pkgs/development/tools/gotests/deps.nix
@@ -0,0 +1,11 @@
+[
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/tools";
+      rev = "96b5a5404f303f074e6117d832a9873c439508f0";
+      sha256 = "1h6r9xyp1v3w2x8d108vzghn65l6ia2h895irypmrwymfcp30y42";
+    };
+  }
+]
diff --git a/pkgs/development/tools/haskell/lambdabot/default.nix b/pkgs/development/tools/haskell/lambdabot/default.nix
index 7282fb4970ee..edf967f7d110 100644
--- a/pkgs/development/tools/haskell/lambdabot/default.nix
+++ b/pkgs/development/tools/haskell/lambdabot/default.nix
@@ -7,15 +7,13 @@
 , configuration ? "[]"
 }:
 
-# FIXME: fix hoogle search
-
 let allPkgs = pkgs: mueval.defaultPkgs pkgs ++ [ pkgs.lambdabot-trusted ] ++ packages pkgs;
     mueval' = mueval.override {
       inherit haskellPackages;
       packages = allPkgs;
     };
     bins = lib.makeBinPath ([ mueval'
-                              (haskellPackages.ghcWithPackages allPkgs)
+                              (haskellPackages.ghcWithHoogle allPkgs)
                               haskellPackages.unlambda
                               haskellPackages.brainfuck
                             ]
diff --git a/pkgs/development/tools/misc/strace/default.nix b/pkgs/development/tools/misc/strace/default.nix
index 4c02b4daf1ef..6c19c51c8c86 100644
--- a/pkgs/development/tools/misc/strace/default.nix
+++ b/pkgs/development/tools/misc/strace/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "strace-${version}";
-  version = "4.20";
+  version = "4.21";
 
   src = fetchurl {
     url = "mirror://sourceforge/strace/${name}.tar.xz";
-    sha256 = "08y5b07vb8jc7ak5xc3x2kx1ly6xiwv1gnppcqjs81kks66i9wsv";
+    sha256 = "1dvrwi6v9j6b9j6852zzlc61hxgiciadi1xsl89wzbzqlkxnahbd";
   };
 
   nativeBuildInputs = [ perl ];
diff --git a/pkgs/games/cataclysm-dda/default.nix b/pkgs/games/cataclysm-dda/default.nix
index be6f32654305..a3adec384015 100644
--- a/pkgs/games/cataclysm-dda/default.nix
+++ b/pkgs/games/cataclysm-dda/default.nix
@@ -1,5 +1,6 @@
 { fetchFromGitHub, stdenv, pkgconfig, ncurses, lua, SDL2, SDL2_image, SDL2_ttf,
-SDL2_mixer, freetype, gettext, Cocoa, libicns }:
+SDL2_mixer, freetype, gettext, Cocoa, libicns,
+tiles ? true }:
 
 stdenv.mkDerivation rec {
   version = "0.C";
@@ -13,36 +14,44 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ pkgconfig ]
-    ++ stdenv.lib.optionals stdenv.isDarwin [ libicns ];
+    ++ stdenv.lib.optionals (tiles && stdenv.isDarwin) [ libicns ];
 
-  buildInputs = [ ncurses lua SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype gettext ]
-    ++ stdenv.lib.optionals stdenv.isDarwin [ Cocoa ];
+  buildInputs = with stdenv.lib; [ ncurses lua gettext ]
+    ++ optionals tiles [ SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype ]
+    ++ optionals (tiles && stdenv.isDarwin) [ Cocoa ];
 
   patches = [ ./patches/fix_locale_dir.patch ];
 
   postPatch = ''
     patchShebangs .
-    sed -i Makefile \
-      -e 's,-Werror,,g'
-
-    sed '1i#include <cmath>' \
-      -i src/{crafting,skill,weather_data,melee,vehicle,overmap,iuse_actor}.cpp
   '';
 
-  makeFlags = [
-    "PREFIX=$(out) LUA=1 TILES=1 SOUND=1 RELEASE=1 USE_HOME_DIR=1"
+  makeFlags = with stdenv.lib; [
+    "PREFIX=$(out)"
+    "LUA=1"
+    "RELEASE=1"
+    "USE_HOME_DIR=1"
     # "LANGUAGES=all"  # vanilla C:DDA installs all translations even without this flag!
-  ] ++ stdenv.lib.optionals stdenv.isDarwin [
-    "NATIVE=osx CLANG=1"
+  ] ++ optionals tiles [
+    "TILES=1"
+    "SOUND=1"
+  ] ++ optionals stdenv.isDarwin [
+    "NATIVE=osx"
+    "CLANG=1"
     "OSX_MIN=10.6"  # SDL for macOS only supports deploying on 10.6 and above
+  ] ++ optionals stdenv.cc.isGNU [
+    "WARNINGS+=-Wno-deprecated-declarations"
+    "WARNINGS+=-Wno-ignored-attributes"
+  ] ++ optionals stdenv.cc.isClang [
+    "WARNINGS+=-Wno-inconsistent-missing-override"
   ];
 
-  postBuild = stdenv.lib.optionalString stdenv.isDarwin ''
+  postBuild = stdenv.lib.optionalString (tiles && stdenv.isDarwin) ''
     # iconutil on macOS is not available in nixpkgs
     png2icns data/osx/AppIcon.icns data/osx/AppIcon.iconset/*
   '';
 
-  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+  postInstall = stdenv.lib.optionalString (tiles && stdenv.isDarwin) ''
     app=$out/Applications/Cataclysm.app
     install -D -m 444 data/osx/Info.plist -t $app/Contents
     install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources
@@ -83,7 +92,7 @@ stdenv.mkDerivation rec {
       substances or radiation, now more closely resemble insects, birds or fish
       than their original form.
     '';
-    homepage = http://en.cataclysmdda.com/;
+    homepage = http://cataclysmdda.org/;
     license = licenses.cc-by-sa-30;
     maintainers = [ maintainers.skeidel ];
     platforms = platforms.unix;
diff --git a/pkgs/games/cataclysm-dda/git.nix b/pkgs/games/cataclysm-dda/git.nix
index 3d8ec7d68448..fcc2481cb695 100644
--- a/pkgs/games/cataclysm-dda/git.nix
+++ b/pkgs/games/cataclysm-dda/git.nix
@@ -1,5 +1,6 @@
 { fetchFromGitHub, stdenv, pkgconfig, ncurses, lua, SDL2, SDL2_image, SDL2_ttf,
-SDL2_mixer, freetype, gettext, CoreFoundation, Cocoa }:
+SDL2_mixer, freetype, gettext, CoreFoundation, Cocoa,
+tiles ? true }:
 
 stdenv.mkDerivation rec {
   version = "2017-12-09";
@@ -14,28 +15,38 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig ];
 
-  buildInputs = [ ncurses lua SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype gettext ]
-    ++ stdenv.lib.optionals stdenv.isDarwin [ CoreFoundation Cocoa ];
+  buildInputs = with stdenv.lib; [ ncurses lua gettext ]
+    ++ optionals stdenv.isDarwin [ CoreFoundation ]
+    ++ optionals tiles [ SDL2 SDL2_image SDL2_ttf SDL2_mixer freetype ]
+    ++ optionals (tiles && stdenv.isDarwin) [ Cocoa ];
 
   patches = [ ./patches/fix_locale_dir_git.patch ];
 
   postPatch = ''
     patchShebangs .
-    sed -i Makefile \
-      -e 's,-Werror,,g'
-
-    sed '1i#include <cmath>' \
-      -i src/{crafting,skill,weather_data,melee,vehicle,overmap,iuse_actor}.cpp
+    sed -i data/xdg/com.cataclysmdda.cataclysm-dda.desktop \
+        -e "s,\(Exec=\)\(cataclysm-tiles\),\1$out/bin/\2,"
   '';
 
-  makeFlags = [
-    "PREFIX=$(out) LUA=1 TILES=1 SOUND=1 RELEASE=1 USE_HOME_DIR=1"
+  makeFlags = with stdenv.lib; [
+    "PREFIX=$(out)"
+    "LUA=1"
+    "RELEASE=1"
+    "USE_HOME_DIR=1"
     "LANGUAGES=all"
-  ] ++ stdenv.lib.optionals stdenv.isDarwin [
-    "NATIVE=osx CLANG=1"
+    "VERSION=git-${version}-${substring 0 8 src.rev}"
+  ] ++ optionals tiles [
+    "TILES=1"
+    "SOUND=1"
+  ] ++ optionals stdenv.isDarwin [
+    "NATIVE=osx"
+    "CLANG=1"
   ];
 
-  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+  postInstall = with stdenv.lib; optionalString (tiles && !stdenv.isDarwin) ''
+    install -D -m 444 data/xdg/com.cataclysmdda.cataclysm-dda.desktop -T $out/share/applications/cataclysm-dda.desktop
+    install -D -m 444 data/xdg/cataclysm-dda.svg -t $out/share/icons/hicolor/scalable/apps
+  '' + optionalString (tiles && stdenv.isDarwin) ''
     app=$out/Applications/Cataclysm.app
     install -D -m 444 data/osx/Info.plist -t $app/Contents
     install -D -m 444 data/osx/AppIcon.icns -t $app/Contents/Resources
@@ -78,7 +89,7 @@ stdenv.mkDerivation rec {
       substances or radiation, now more closely resemble insects, birds or fish
       than their original form.
     '';
-    homepage = http://en.cataclysmdda.com/;
+    homepage = http://cataclysmdda.org/;
     license = licenses.cc-by-sa-30;
     platforms = platforms.unix;
   };
diff --git a/pkgs/misc/apulse/default.nix b/pkgs/misc/apulse/default.nix
index 4b2323eaa716..343dbecb22c0 100644
--- a/pkgs/misc/apulse/default.nix
+++ b/pkgs/misc/apulse/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "apulse-${version}";
-  version = "0.1.10";
+  version = "0.1.11";
 
   src = fetchFromGitHub {
     owner = "i-rinat";
     repo = "apulse";
     rev = "v${version}";
-    sha256 = "018gaxn647wz1vjbr49hfrch9svnv0d1nzijc8ckb4fsr8vv95a1";
+    sha256 = "16l278q0czca2794fj388ql6qn1zrw24a0p6k7bayrrf5h32fdzd";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/misc/apulse/pressureaudio.nix b/pkgs/misc/apulse/pressureaudio.nix
new file mode 100644
index 000000000000..255fca842a73
--- /dev/null
+++ b/pkgs/misc/apulse/pressureaudio.nix
@@ -0,0 +1,82 @@
+{ stdenv, apulse, libpulseaudio, pkgconfig, intltool, autoreconfHook }:
+
+stdenv.mkDerivation {
+  name = "libpressureaudio-${apulse.version}";
+
+  src = libpulseaudio.src;
+
+  nativeBuildInputs = [ pkgconfig intltool autoreconfHook ];
+
+  configurePhase = ":";
+
+  buildPhase = ":";
+
+  installPhase = ''
+    echo "Copying libraries from apulse."
+    mkdir -p $out/lib
+    ls ${apulse}/lib/apulse $out/lib
+    cp -a ${apulse}/lib/apulse/* $out/lib/
+
+    echo "Copying headers from pulseaudio."
+    mkdir -p $out/include/pulse
+    cp -a src/pulse/*.h $out/include/pulse
+
+    echo "Generating custom pkgconfig definitions."
+    mkdir -p $out/lib/pkgconfig
+    for a in libpulse.pc libpulse-simple.pc libpulse-mainloop-glib.pc ; do
+        cat > $out/lib/pkgconfig/$a << EOF
+    prefix=$out
+    libdir=$out/lib
+    includedir=$out/include
+
+    EOF
+    done
+
+    cat >> $out/lib/pkgconfig/libpulse.pc << EOF
+    Name: libpulse
+    Description: PulseAudio Client Interface
+    Version: ${libpulseaudio.version}-rebootstrapped
+    Libs: -L$out/lib -lpulse 
+    Cflags: -I$out/include -D_REENTRANT
+    EOF
+
+    cat >> $out/lib/pkgconfig/libpulse-simple.pc << EOF
+    Name: libpulse-simple
+    Description: PulseAudio Simplified Synchronous Client Interface
+    Version: ${libpulseaudio.version}-rebootstrapped
+    Libs: -L$out/lib -lpulse-simple 
+    Cflags: -I$out/include -D_REENTRANT
+    Requires: libpulse
+    EOF
+
+    cat >> $out/lib/pkgconfig/libpulse-mainloop-glib.pc << EOF
+    Name: libpulse-mainloop-glib
+    Description: PulseAudio GLib 2.0 Main Loop Wrapper
+    Version: ${libpulseaudio.version}-rebootstrapped
+    Libs: -L$out/lib -lpulse-mainloop-glib 
+    Cflags: -I$out/include -D_REENTRANT
+    Requires: libpulse glib-2.0
+    EOF
+  '';
+
+  meta = apulse.meta // {
+    description = "libpulseaudio without any sound daemons over pure ALSA";
+    longDescription = ''
+      apulse (${apulse.meta.homepage}) implements most of libpulseaudio
+      API over pure ALSA in 5% LOC of the original PulseAudio.
+
+      But apulse is made to be used as a wrapper that substitutes its
+      replacement libs into LD_LIBRARY_PATH. The problem with that is
+      that you still have to link against the original libpulseaudio.
+
+      pressureaudio (http://git.r-36.net/pressureaudio/) wraps apulse
+      with everything you need to replace libpulseaudio completely.
+
+      This derivation is a reimplementation of pressureaudio in pure
+      nix.
+
+      You can simply override libpulseaudio with this and most
+      packages would just work.
+    '';
+  };
+}
diff --git a/pkgs/servers/http/nginx/modules.nix b/pkgs/servers/http/nginx/modules.nix
index 36d0ea6b1e88..780f20017982 100644
--- a/pkgs/servers/http/nginx/modules.nix
+++ b/pkgs/servers/http/nginx/modules.nix
@@ -152,8 +152,8 @@
       moduleSrc = fetchFromGitHub {
         owner  = "pagespeed";
         repo   = "ngx_pagespeed";
-        rev    = "v${version}-beta";
-        sha256 = "176skx7zmi7islc1hmdxcynix4lkvgmr78lknn13s9gskc7qi25w";
+        rev    = "v${version}-stable";
+        sha256 = "0ry7vmkb2bx0sspl1kgjlrzzz6lbz07313ks2lr80rrdm2zb16wp";
       };
 
       ngx_pagespeed = pkgs.runCommand
diff --git a/pkgs/servers/softether/4.25.nix b/pkgs/servers/softether/4.25.nix
new file mode 100644
index 000000000000..b1e9c5c1a455
--- /dev/null
+++ b/pkgs/servers/softether/4.25.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl
+, openssl, readline, ncurses, zlib }:
+
+let
+  os = if stdenv.isLinux then "1"
+       else if stdenv.isFreeBSD then "2"
+       else if stdenv.isSunOS then "3"
+       else if stdenv.isDarwin then "4"
+       else if stdenv.isOpenBSD then "5"
+       else "";
+  cpuBits = if stdenv.is64bit then "2" else "1";
+
+in
+
+stdenv.mkDerivation rec {
+  name = "softether-${version}";
+  version = "4.25";
+  build = "9656";
+  compiledDate = "2018.01.15";
+  dataDir = "/var/lib/softether";
+
+  src = fetchurl {
+    url = "http://www.softether-download.com/files/softether/v${version}-${build}-rtm-${compiledDate}-tree/Source_Code/softether-src-v${version}-${build}-rtm.tar.gz";
+    sha256 = "1y1m8lf0xfh7m70d15wj2jjf5a5qhi3j49ciwqmsscsqvb1xwimr";
+  };
+
+  buildInputs = [ openssl readline ncurses zlib ];
+
+  preConfigure = ''
+      echo "${os}
+      ${cpuBits}
+      " | ./configure
+      rm configure
+  '';
+
+  buildPhase = ''
+      mkdir -p $out/bin
+      sed -i \
+          -e "/INSTALL_BINDIR=/s|/usr/bin|/bin|g" \
+          -e "/_DIR=/s|/usr|${dataDir}|g" \
+          -e "s|\$(INSTALL|$out/\$(INSTALL|g" \
+          -e "/echo/s|echo $out/|echo |g" \
+          Makefile
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An Open-Source Free Cross-platform Multi-protocol VPN Program";
+    homepage = https://www.softether.org/;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.rick68 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/servers/web-apps/wallabag/default.nix b/pkgs/servers/web-apps/wallabag/default.nix
index e6137a2db7c2..07b530f4ef72 100644
--- a/pkgs/servers/web-apps/wallabag/default.nix
+++ b/pkgs/servers/web-apps/wallabag/default.nix
@@ -13,13 +13,11 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" ];
 
-  patchPhase = ''
+  patches = [ ./wallabag-data.patch ]; # exposes $WALLABAG_DATA
+
+  prePatch = ''
     rm Makefile # use the "shared hosting" package with bundled dependencies
-    substituteInPlace app/AppKernel.php \
-      --replace "__DIR__" "getenv('WALLABAG_DATA')"
-    substituteInPlace var/bootstrap.php.cache \
-      --replace "\$this->rootDir = \$this->getRootDir()" "\$this->rootDir = getenv('WALLABAG_DATA')"
-  ''; # exposes $WALLABAG_DATA
+  '';
 
   installPhase = ''
     mkdir $out/
@@ -31,11 +29,12 @@ stdenv.mkDerivation rec {
     longDescription = ''
       wallabag is a self hostable application for saving web pages.
 
-      To use, point the environment variable $WALLABAG_DATA to a directory called `app` that contains the folder `config` with wallabag's configuration files. These need to be updated every package upgrade. In `app`'s parent folder, a directory called `var` containing wallabag's data will be created.
+      Point the environment variable $WALLABAG_DATA to a data directory that contains the folder `app/config` which must be a clone of wallabag's configuration files with your customized `parameters.yml`. These need to be updated every package upgrade.
       After a package upgrade, empty the `var/cache` folder.
     '';
     license = licenses.mit;
     homepage = http://wallabag.org;
+    maintainers = with maintainers; [ schneefux ];
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/servers/web-apps/wallabag/wallabag-data.patch b/pkgs/servers/web-apps/wallabag/wallabag-data.patch
new file mode 100644
index 000000000000..086e93959800
--- /dev/null
+++ b/pkgs/servers/web-apps/wallabag/wallabag-data.patch
@@ -0,0 +1,26 @@
+diff --git a/app/AppKernel.php b/app/AppKernel.php
+index 40726f05..7d44e600 100644
+--- a/app/AppKernel.php
++++ b/app/AppKernel.php
+@@ -58,14 +58,19 @@ class AppKernel extends Kernel
+         return $bundles;
+     }
+ 
++    public function getProjectDir()
++    {
++        return getenv('WALLABAG_DATA') ?: dirname(__DIR__);
++    }
++
+     public function getCacheDir()
+     {
+-        return dirname(__DIR__) . '/var/cache/' . $this->getEnvironment();
++        return $this->getProjectDir() . '/var/cache/' . $this->getEnvironment();
+     }
+ 
+     public function getLogDir()
+     {
+-        return dirname(__DIR__) . '/var/logs';
++        return $this->getProjectDir() . '/var/logs';
+     }
+ 
+     public function registerContainerConfiguration(LoaderInterface $loader)
diff --git a/pkgs/servers/x11/quartz-wm/default.nix b/pkgs/servers/x11/quartz-wm/default.nix
index 45e4df2bb8b9..d724a81debbb 100644
--- a/pkgs/servers/x11/quartz-wm/default.nix
+++ b/pkgs/servers/x11/quartz-wm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, xorg, pixman, pkgconfig, AppKit, Xplugin }:
+{ stdenv, lib, fetchurl, xorg, pixman, pkgconfig, AppKit, Xplugin, darwin }:
 
 let version = "1.3.1";
 in stdenv.mkDerivation {
@@ -19,13 +19,11 @@ in stdenv.mkDerivation {
     xorg.libXext
     pixman
     pkgconfig
-    AppKit Xplugin
+    AppKit Xplugin darwin.apple_sdk.frameworks.Foundation
   ];
-  NIX_CFLAGS_COMPILE = "-F/System/Library/Frameworks -I/usr/include";
-  NIX_LDFLAGS = stdenv.lib.optional stdenv.isDarwin
-    "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation";
   meta = with lib; {
     license = licenses.apsl20;
     platforms = platforms.darwin;
+    maintainers = with maintainers; [ matthewbauer ];
   };
 }
diff --git a/pkgs/tools/misc/autojump/default.nix b/pkgs/tools/misc/autojump/default.nix
index 817510bfb761..ba38a55dda02 100644
--- a/pkgs/tools/misc/autojump/default.nix
+++ b/pkgs/tools/misc/autojump/default.nix
@@ -22,6 +22,9 @@ in
       mkdir -p "$out/etc/bash_completion.d"
       cp -v $out/share/autojump/autojump.bash "$out/etc/bash_completion.d"
 
+      mkdir -p $out/share/fish/vendor_completions.d/
+      cp -v $out/share/autojump/autojump.fish "$out/share/fish/vendor_completions.d/autojump.fish"
+
       cat <<SCRIPT > $out/bin/autojump-share
       #!/bin/sh
       # Run this script to find the autojump shared folder where all the shell
diff --git a/pkgs/tools/misc/fd/default.nix b/pkgs/tools/misc/fd/default.nix
index a18c78382715..3c8262068693 100644
--- a/pkgs/tools/misc/fd/default.nix
+++ b/pkgs/tools/misc/fd/default.nix
@@ -17,9 +17,9 @@ rustPlatform.buildRustPackage rec {
     mkdir -p "$out/man/man1"
     cp "$src/doc/fd.1" "$out/man/man1"
 
-    mkdir -p "$out/share/"{bash-completion/completions,fish/completions,zsh/site-functions}
+    mkdir -p "$out/share/"{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}
     cp target/release/build/fd-find-*/out/fd.bash "$out/share/bash-completion/completions/"
-    cp target/release/build/fd-find-*/out/fd.fish "$out/share/fish/completions/"
+    cp target/release/build/fd-find-*/out/fd.fish "$out/share/fish/vendor_completions.d/"
     cp target/release/build/fd-find-*/out/_fd "$out/share/zsh/site-functions/"
   '';
 
diff --git a/pkgs/tools/misc/figlet/default.nix b/pkgs/tools/misc/figlet/default.nix
index f68ae1ec2455..86434847b4a2 100644
--- a/pkgs/tools/misc/figlet/default.nix
+++ b/pkgs/tools/misc/figlet/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, fetchpatch }:
 
 stdenv.mkDerivation {
   name = "figlet-2.2.5";
@@ -9,12 +9,17 @@ stdenv.mkDerivation {
     sha256 = "0za1ax15x7myjl8jz271ybly8ln9kb9zhm1gf6rdlxzhs07w925z";
   };
 
-  installPhase = "make prefix=$out install";
+  patches = [
+    (fetchpatch {
+      url = https://git.alpinelinux.org/cgit/aports/plain/main/figlet/musl-fix-cplusplus-decls.patch?h=3.4-stable&id=71776c73a6f04b6f671430f702bcd40b29d48399;
+      name = "musl-fix-cplusplus-decls.patch";
+      sha256 = "1720zgrfk9makznqkbjrnlxm7nnhk6zx7g458fv53337n3g3zn7j";
+    })
+  ];
 
-  preConfigure = ''
-    mkdir -p $out/{man/man6,bin}
-    makeFlags="DESTDIR=$out/bin MANDIR=$out/man/man6 DEFAULTFONTDIR=$out/share/figlet CC=cc LD=cc"
-  '';
+  makeFlags = [ "prefix=$(out)" "CC:=$(CC)" "LD:=$(CC)" ];
+
+  doCheck = true;
 
   meta = {
     description = "Program for making large letters out of ordinary text";
diff --git a/pkgs/tools/misc/ipxe/default.nix b/pkgs/tools/misc/ipxe/default.nix
index 2d36ad17eec7..786b3992a5cc 100644
--- a/pkgs/tools/misc/ipxe/default.nix
+++ b/pkgs/tools/misc/ipxe/default.nix
@@ -1,4 +1,6 @@
-{ stdenv, fetchgit, perl, cdrkit, syslinux, xz, openssl }:
+{ stdenv, lib, fetchgit, perl, cdrkit, syslinux, xz, openssl
+, embedScript ? null
+}:
 
 let
   date = "20170922";
@@ -24,7 +26,7 @@ stdenv.mkDerivation {
   makeFlags =
     [ "ECHO_E_BIN_ECHO=echo" "ECHO_E_BIN_ECHO_E=echo" # No /bin/echo here.
       "ISOLINUX_BIN_LIST=${syslinux}/share/syslinux/isolinux.bin"
-    ];
+    ] ++ lib.optional (embedScript != null) "EMBED=${embedScript}";
 
 
   enabledOptions = [ "DOWNLOAD_PROTO_HTTPS" ];
@@ -46,6 +48,8 @@ stdenv.mkDerivation {
     ln -s undionly.kpxe $out/undionly.kpxe.0
   '';
 
+  enableParallelBuilding = true;
+
   meta = with stdenv.lib;
     { description = "Network boot firmware";
       homepage = http://ipxe.org/;
diff --git a/pkgs/tools/misc/ministat/default.nix b/pkgs/tools/misc/ministat/default.nix
new file mode 100644
index 000000000000..7b9549a80fea
--- /dev/null
+++ b/pkgs/tools/misc/ministat/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchgit }:
+
+stdenv.mkDerivation rec {
+  name = "ministat-${version}";
+  version = "20150715-1";
+
+  src = fetchgit {
+    url = "https://git.decadent.org.uk/git/ministat.git";
+    rev = "refs/tags/debian/${version}";
+    sha256 = "1p4g0yqgsy4hiqhr8gqp8d38zxzrss5qz70s0bw3i2pg4w668k6f";
+  };
+
+  postPatch = ''
+    patch -p1 < debian/patches/fix-ctype-usage.patch
+    patch -p1 < debian/patches/not-bsd
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/man/man1
+    cp ministat $out/bin
+    cp ministat.1 $out/share/man/man1/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple tool for statistical comparison of data sets";
+    homepage = https://git.decadent.org.uk/gitweb/?p=ministat.git;
+    license = licenses.beerware;
+    maintainers = [ maintainers.dezgeg ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/misc/yle-dl/default.nix b/pkgs/tools/misc/yle-dl/default.nix
index 2967892521ca..303722aac0b8 100644
--- a/pkgs/tools/misc/yle-dl/default.nix
+++ b/pkgs/tools/misc/yle-dl/default.nix
@@ -2,13 +2,13 @@
 
 pythonPackages.buildPythonApplication rec {
   name = "yle-dl-${version}";
-  version = "2.30";
+  version = "2.31";
 
   src = fetchFromGitHub {
     owner = "aajanki";
     repo = "yle-dl";
     rev = version;
-    sha256 = "08qqsg0rmp4xfzmla81f0a4vblqfw3rh90wvxm91vbm6937b4i7i";
+    sha256 = "0k93p9csyjm0w33diwl5s22kzs3g78jl3n9k8nxxpqrybfjl912f";
   };
 
   propagatedBuildInputs = with pythonPackages; [ lxml pyamf pycrypto requests future ffmpeg ];
diff --git a/pkgs/tools/networking/connman-ncurses/default.nix b/pkgs/tools/networking/connman-ncurses/default.nix
new file mode 100644
index 000000000000..8c4d4fa84865
--- /dev/null
+++ b/pkgs/tools/networking/connman-ncurses/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, dbus, json_c, ncurses, connman }:
+
+stdenv.mkDerivation rec {
+  name = "connman-ncurses-${version}";
+  version = "2015-07-21";
+
+  src = fetchFromGitHub {
+    owner = "eurogiciel-oss";
+    repo = "connman-json-client";
+    rev = "3c34b2ee62d2e188090d20e7ed2fd94bab9c47f2";
+    sha256 = "1831r0776fv481g8kgy1dkl750pzv47835dw11sslq2k6mm6i9p1";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  buildInputs = [ dbus ncurses json_c connman ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error";
+  
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp -va connman_ncurses "$out/bin/"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple ncurses UI for connman";
+    homepage = https://github.com/eurogiciel-oss/connman-json-client;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/pkgs/tools/networking/iperf/3.nix b/pkgs/tools/networking/iperf/3.nix
index b9e47ecd7f90..8b7187f07c76 100644
--- a/pkgs/tools/networking/iperf/3.nix
+++ b/pkgs/tools/networking/iperf/3.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, openssl, fetchpatch }:
 
 stdenv.mkDerivation rec {
-  name = "iperf-3.3";
+  name = "iperf-3.4";
 
   src = fetchurl {
     url = "http://downloads.es.net/pub/iperf/${name}.tar.gz";
-    sha256 = "1n442bjkm1dvzmcj8z1i99yrmba489yz3f5v27ybymhh4mqn4nbg";
+    sha256 = "04ciywjhklzfrnp40675ssnkqxv90ad4v56i8vh8bpsiswr86lki";
   };
 
   buildInputs = [ openssl ];
diff --git a/pkgs/tools/security/hash_extender/default.nix b/pkgs/tools/security/hash_extender/default.nix
new file mode 100644
index 000000000000..0c5691a1e106
--- /dev/null
+++ b/pkgs/tools/security/hash_extender/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, openssl }:
+
+stdenv.mkDerivation rec {
+  name = "hash_extender-${version}";
+  version = "2017-04-10";
+
+  src = fetchFromGitHub {
+    owner = "iagox86";
+    repo = "hash_extender";
+    rev = "d27581e062dd0b534074e11d7d311f65a6d7af21";
+    sha256 = "1npwbgqaynjh5x39halw43i116v89sxkpa1g1bbvc1lpi8hkhhcb";
+  };
+
+  buildInputs = [ openssl ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp hash_extender $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tool to automate hash length extension attacks";
+    homepage = https://github.com/iagox86/hash_extender;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ geistesk ];
+  };
+}
diff --git a/pkgs/tools/system/ddrescue/default.nix b/pkgs/tools/system/ddrescue/default.nix
index e6af7abeda2b..fc42c3b856f6 100644
--- a/pkgs/tools/system/ddrescue/default.nix
+++ b/pkgs/tools/system/ddrescue/default.nix
@@ -6,11 +6,11 @@
 let inherit (stdenv.lib) optionals; in
 
 stdenv.mkDerivation rec {
-  name = "ddrescue-1.22";
+  name = "ddrescue-1.23";
 
   src = fetchurl {
     url = "mirror://gnu/ddrescue/${name}.tar.lz";
-    sha256 = "19qhx9ggkkjl0g3a88g501wmybkj1y4n5lm5kp0km0blh0p7p189";
+    sha256 = "13cd6c0x91zq10vdlyl6r5rib47bmsn5sshmkin3igwj8pa2vbm9";
   };
 
   nativeBuildInputs = [ lzip ];
diff --git a/pkgs/tools/system/fio/default.nix b/pkgs/tools/system/fio/default.nix
index 89fb5f05ac97..1c98f7126937 100644
--- a/pkgs/tools/system/fio/default.nix
+++ b/pkgs/tools/system/fio/default.nix
@@ -1,8 +1,8 @@
 { stdenv, fetchFromGitHub, libaio, python, zlib }:
 
 let
-  version = "3.3";
-  sha256 = "0ipdpdn6rlsbppqjddyyk8c6rg1dl17d62dwwm0ijybi0m7imy1p";
+  version = "3.4";
+  sha256 = "0img4288ygil36bsgpr4yh06zfbp3mdkf7zbyqjcrjgpr4mai9zf";
 in
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index a5f4cf2d849b..b129edb97512 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -489,6 +489,8 @@ with pkgs;
 
   apulse = callPackage ../misc/apulse { };
 
+  libpressureaudio = callPackage ../misc/apulse/pressureaudio.nix { };
+
   archivemount = callPackage ../tools/filesystems/archivemount { };
 
   arandr = callPackage ../tools/X11/arandr { };
@@ -1573,6 +1575,8 @@ with pkgs;
 
   connman-gtk = callPackage ../tools/networking/connman-gtk { };
 
+  connman-ncurses = callPackage ../tools/networking/connman-ncurses { };
+
   connman-notify = callPackage ../tools/networking/connman-notify { };
 
   connmanui = callPackage ../tools/networking/connmanui { };
@@ -2697,6 +2701,8 @@ with pkgs;
 
   hashcat = callPackage ../tools/security/hashcat { };
 
+  hash_extender = callPackage ../tools/security/hash_extender { };
+
   hash-slinger = callPackage ../tools/security/hash-slinger { };
 
   hal-flash = callPackage ../os-specific/linux/hal-flash { };
@@ -3154,6 +3160,8 @@ with pkgs;
 
   minisign = callPackage ../tools/security/minisign { };
 
+  ministat = callPackage ../tools/misc/ministat { };
+
   mmv = callPackage ../tools/misc/mmv { };
 
   morituri = callPackage ../applications/audio/morituri { };
@@ -5740,7 +5748,8 @@ with pkgs;
 
   compcert = callPackage ../development/compilers/compcert { };
 
-
+  cpp-gsl = callPackage ../development/libraries/cpp-gsl { };
+  
   # Users installing via `nix-env` will likely be using the REPL,
   # which has a hard dependency on Z3, so make sure it is available.
   cryptol = haskellPackages.cryptol.overrideDerivation (oldAttrs: {
@@ -6360,6 +6369,8 @@ with pkgs;
 
   julia = julia_06;
 
+  jwasm =  callPackage ../development/compilers/jwasm { };
+
   kotlin = callPackage ../development/compilers/kotlin { };
 
   lazarus = callPackage ../development/compilers/fpc/lazarus.nix {
@@ -12319,7 +12330,8 @@ with pkgs;
 
   softether_4_18 = callPackage ../servers/softether/4.18.nix { };
   softether_4_20 = callPackage ../servers/softether/4.20.nix { };
-  softether = softether_4_20;
+  softether_4_25 = callPackage ../servers/softether/4.25.nix { };
+  softether = softether_4_25;
 
   qboot = callPackage ../applications/virtualization/qboot { stdenv = stdenv_32bit; };
 
@@ -13419,6 +13431,8 @@ with pkgs;
 
   gomodifytags = callPackage ../development/tools/gomodifytags { };
 
+  gotests = callPackage ../development/tools/gotests { };
+
   gogoclient = callPackage ../os-specific/linux/gogoclient { };
 
   nss_ldap = callPackage ../os-specific/linux/nss_ldap { };
@@ -13869,6 +13883,8 @@ with pkgs;
 
   faba-mono-icons = callPackage ../data/icons/faba-mono-icons { };
 
+  fixedsys-excelsior = callPackage ../data/fonts/fixedsys-excelsior { };
+
   emacs-all-the-icons-fonts = callPackage ../data/fonts/emacs-all-the-icons-fonts { };
 
   emojione = callPackage ../data/fonts/emojione {
@@ -17379,6 +17395,8 @@ with pkgs;
 
   surf = callPackage ../applications/networking/browsers/surf { gtk = gtk2; };
 
+  sunvox = callPackage ../applications/audio/sunvox { };
+
   swh_lv2 = callPackage ../applications/audio/swh-lv2 { };
 
   sylpheed = callPackage ../applications/networking/mailreaders/sylpheed { };
@@ -17985,6 +18003,8 @@ with pkgs;
       );
   };
 
+  wsjtx = qt5.callPackage ../applications/misc/wsjtx { };
+
   wtftw = callPackage ../applications/window-managers/wtftw {};
 
   wxhexeditor = callPackage ../applications/editors/wxhexeditor { };
@@ -18359,6 +18379,7 @@ with pkgs;
 
   cataclysm-dda = callPackage ../games/cataclysm-dda {
     inherit (darwin.apple_sdk.frameworks) Cocoa;
+    ncurses = ncurses5;
   };
 
   cataclysm-dda-git = callPackage ../games/cataclysm-dda/git.nix {
diff --git a/pkgs/top-level/dotnet-packages.nix b/pkgs/top-level/dotnet-packages.nix
index 1a37d58c70d1..43182b3f2aaa 100644
--- a/pkgs/top-level/dotnet-packages.nix
+++ b/pkgs/top-level/dotnet-packages.nix
@@ -331,13 +331,20 @@ let self = dotnetPackages // overrides; dotnetPackages = with self; {
 
   Dafny = buildDotnetPackage rec {
     baseName = "Dafny";
-    version = "1.9.8";
+    version = "2.1.0";
 
     src = fetchurl {
       url = "https://github.com/Microsoft/dafny/archive/v${version}.tar.gz";
-      sha256 = "0n4pk4cv7d2zsn4xmyjlxvpfl9avq79r06c7kzmrng24p3k4qj6s";
+      sha256 = "1iyhy0zpi6wvqif7826anzgdipgsy5bk775ds9qqwfw27j7x6fy5";
     };
 
+    postPatch = ''
+      sed -i \
+        -e 's/ Visible="False"//' \
+        -e "s/Exists(\$(CodeContractsInstallDir))/Exists('\$(CodeContractsInstallDir)')/" \
+        Source/*/*.csproj
+    '';
+
     preBuild = ''
       ln -s ${pkgs.z3} Binaries/z3
     '';
@@ -345,7 +352,7 @@ let self = dotnetPackages // overrides; dotnetPackages = with self; {
     buildInputs = [ Boogie ];
 
     xBuildFiles = [ "Source/Dafny.sln" ];
-    xBuildFlags = [ ];
+    xBuildFlags = [ "/p:Configuration=Checked" "/p:Platform=Any CPU" "/t:Rebuild" ];
 
     outputFiles = [ "Binaries/*" ];