summary refs log tree commit diff
diff options
context:
space:
mode:
authorOrivej Desh <orivej@gmx.fr>2017-10-05 07:41:39 +0000
committerOrivej Desh <orivej@gmx.fr>2017-10-05 07:41:39 +0000
commit66d4941afe2edc8e5287a70089c25464490114f0 (patch)
treeb1bbd01ad887ae401be7ddc5295431d11d2a95d0
parent514593ea31d7e67e8efa2f2ff26c9569d508a5ef (diff)
parentb14db2cddfb054c0ff46523fa95ba56153b230e0 (diff)
downloadnixpkgs-66d4941afe2edc8e5287a70089c25464490114f0.tar
nixpkgs-66d4941afe2edc8e5287a70089c25464490114f0.tar.gz
nixpkgs-66d4941afe2edc8e5287a70089c25464490114f0.tar.bz2
nixpkgs-66d4941afe2edc8e5287a70089c25464490114f0.tar.lz
nixpkgs-66d4941afe2edc8e5287a70089c25464490114f0.tar.xz
nixpkgs-66d4941afe2edc8e5287a70089c25464490114f0.tar.zst
nixpkgs-66d4941afe2edc8e5287a70089c25464490114f0.zip
Merge branch 'master' into staging
* master: (48 commits)
  Mathematica: 11.0.1 -> 11.2.0
  kbfs: 20170922.f76290 -> 20171004.40555d
  packer: 1.0.3 -> 1.1.0
  libxdg-basedir: 1.0.2 -> 1.2.0
  fscrypt: 0.2.1 -> 0.2.2
  devtodo: init at 0.1.20
  keybase: 1.0.30 -> 1.0.33
  elixir: Fix locale problem on NixOS
  keybase-gui: 1.0.25 -> 1.0.33
  terraform: 0.10.2 -> 0.10.7  (#30055)
  emby: 3.2.32.0 -> 3.2.33.0
  sbcl: 1.3.21 -> 1.4.0
  ardour: 5.11 -> 5.12
  axoloti: fix evaluation
  axoloti: init at 1.0.12-1
  melpa-packages: Add new lean packages
  fastlane: init at 2.60.1
  nixos/traefik: guard example path
  go-ethereum: 1.7.0 -> 1.7.1
  xzgv: 0.9.1 -> 0.9.2
  ...
-rw-r--r--lib/maintainers.nix3
-rw-r--r--nixos/modules/config/no-x-libs.nix2
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/misc/gitlab.nix3
-rw-r--r--nixos/modules/services/misc/gitlab.xml29
-rw-r--r--nixos/modules/services/network-filesystems/ipfs.nix11
-rw-r--r--nixos/modules/services/web-servers/traefik.nix115
-rw-r--r--nixos/tests/pgjwt.nix51
-rw-r--r--pkgs/applications/altcoins/go-ethereum.nix4
-rw-r--r--pkgs/applications/audio/ardour/default.nix8
-rw-r--r--pkgs/applications/audio/axoloti/default.nix101
-rw-r--r--pkgs/applications/audio/axoloti/dfu-util.nix31
-rw-r--r--pkgs/applications/audio/axoloti/libusb1.nix38
-rw-r--r--pkgs/applications/editors/android-studio/packages.nix6
-rw-r--r--pkgs/applications/editors/emacs-modes/melpa-generated.nix63
-rw-r--r--pkgs/applications/graphics/gcolor3/default.nix31
-rw-r--r--pkgs/applications/graphics/sane/backends/brscan4/default.nix6
-rw-r--r--pkgs/applications/graphics/xzgv/default.nix16
-rw-r--r--pkgs/applications/graphics/xzgv/fix-linker-paths.patch25
-rw-r--r--pkgs/applications/networking/cluster/terraform/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/terraform/providers/data.nix100
-rw-r--r--pkgs/applications/networking/gns3/default.nix6
-rw-r--r--pkgs/applications/networking/ipfs-migrator/default.nix27
-rw-r--r--pkgs/applications/networking/ipfs-migrator/deps.nix56
-rw-r--r--pkgs/applications/networking/ipfs-migrator/lru-repo-path-fix.patch13
-rw-r--r--pkgs/applications/science/electronics/caneda/default.nix41
-rw-r--r--pkgs/applications/science/math/mathematica/default.nix14
-rw-r--r--pkgs/applications/window-managers/wtftw/default.nix8
-rw-r--r--pkgs/build-support/fetchpatch/default.nix2
-rw-r--r--pkgs/development/compilers/crystal/default.nix89
-rw-r--r--pkgs/development/compilers/sbcl/default.nix4
-rw-r--r--pkgs/development/interpreters/elixir/generic-builder.nix6
-rw-r--r--pkgs/development/libraries/amrwb/default.nix26
-rw-r--r--pkgs/development/libraries/libxdg-basedir/default.nix24
-rw-r--r--pkgs/development/ocaml-modules/ocaml-migrate-parsetree/default.nix4
-rw-r--r--pkgs/development/tools/devtodo/default.nix23
-rw-r--r--pkgs/development/tools/jq/default.nix3
-rw-r--r--pkgs/development/tools/packer/default.nix10
-rw-r--r--pkgs/development/tools/packer/deps.nix11
-rw-r--r--pkgs/os-specific/linux/fscrypt/default.nix4
-rw-r--r--pkgs/servers/emby/default.nix4
-rw-r--r--pkgs/servers/sql/postgresql/pgjwt/default.nix6
-rw-r--r--pkgs/servers/sql/postgresql/pgtap/default.nix32
-rw-r--r--pkgs/tools/admin/fastlane/Gemfile2
-rw-r--r--pkgs/tools/admin/fastlane/Gemfile.lock139
-rw-r--r--pkgs/tools/admin/fastlane/default.nix17
-rw-r--r--pkgs/tools/admin/fastlane/gemset.nix469
-rw-r--r--pkgs/tools/cd-dvd/xorriso/default.nix6
-rw-r--r--pkgs/tools/misc/bonfire/default.nix44
-rw-r--r--pkgs/tools/misc/unicode/default.nix4
-rw-r--r--pkgs/tools/security/kbfs/default.nix8
-rw-r--r--pkgs/tools/security/keybase-gui/default.nix4
-rw-r--r--pkgs/tools/security/keybase/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix32
-rw-r--r--pkgs/top-level/perl-packages.nix8
55 files changed, 1502 insertions, 296 deletions
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index 437fb074402..ccde5c5e25b 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -136,6 +136,7 @@
   dancek = "Hannu Hartikainen <hannu.hartikainen@gmail.com>";
   danielfullmer = "Daniel Fullmer <danielrf12@gmail.com>";
   dasuxullebt = "Christoph-Simon Senjak <christoph.senjak@googlemail.com>";
+  david50407 = "David Kuo <me@davy.tw>";
   davidak = "David Kleuker <post@davidak.de>";
   davidrusu = "David Rusu <davidrusu.me@gmail.com>";
   davorb = "Davor Babic <davor@davor.se>";
@@ -457,6 +458,7 @@
   periklis = "theopompos@gmail.com";
   pesterhazy = "Paulus Esterhazy <pesterhazy@gmail.com>";
   peterhoeg = "Peter Hoeg <peter@hoeg.com>";
+  peterromfeldhk = "Peter Romfeld <peter.romfeld.hk@gmail.com>";
   peti = "Peter Simons <simons@cryp.to>";
   philandstuff = "Philip Potter <philip.g.potter@gmail.com>";
   phile314 = "Philipp Hausmann <nix@314.ch>";
@@ -589,6 +591,7 @@
   taku0 = "Takuo Yonezawa <mxxouy6x3m_github@tatapa.org>";
   tari = "Peter Marheine <peter@taricorp.net>";
   tavyc = "Octavian Cerna <octavian.cerna@gmail.com>";
+  TealG = "Teal Gaure <~@Teal.Gr>";
   teh = "Tom Hunger <tehunger@gmail.com>";
   telotortium = "Robert Irelan <rirelan@gmail.com>";
   teto = "Matthieu Coudron <mcoudron@hotmail.com>";
diff --git a/nixos/modules/config/no-x-libs.nix b/nixos/modules/config/no-x-libs.nix
index ec3103b4a40..ae3e17ac27b 100644
--- a/nixos/modules/config/no-x-libs.nix
+++ b/nixos/modules/config/no-x-libs.nix
@@ -35,7 +35,7 @@ with lib;
       networkmanager_pptp = pkgs.networkmanager_pptp.override { withGnome = false; };
       networkmanager_vpnc = pkgs.networkmanager_vpnc.override { withGnome = false; };
       networkmanager_iodine = pkgs.networkmanager_iodine.override { withGnome = false; };
-      pinentry = pkgs.pinentry.override { gcr = null; gtk2 = null; qt4 = null; };
+      pinentry = pkgs.pinentry.override { gtk2 = null; qt4 = null; };
     };
   };
 }
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index f21d083bd21..8ac7e5b52d6 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -622,6 +622,7 @@
   ./services/web-servers/phpfpm/default.nix
   ./services/web-servers/shellinabox.nix
   ./services/web-servers/tomcat.nix
+  ./services/web-servers/traefik.nix
   ./services/web-servers/uwsgi.nix
   ./services/web-servers/varnish/default.nix
   ./services/web-servers/winstone.nix
diff --git a/nixos/modules/services/misc/gitlab.nix b/nixos/modules/services/misc/gitlab.nix
index 280c66d0aaf..0fa9e417785 100644
--- a/nixos/modules/services/misc/gitlab.nix
+++ b/nixos/modules/services/misc/gitlab.nix
@@ -414,7 +414,7 @@ in {
           Make sure the secret is an RSA private key in PEM format. You can
           generate one with
 
-          openssl genrsa 2048openssl genpkey -algorithm RSA -out - -pkeyopt rsa_keygen_bits:2048
+          openssl genrsa 2048
         '';
       };
 
@@ -567,6 +567,7 @@ in {
         mkdir -p ${cfg.statePath}/log
         mkdir -p ${cfg.statePath}/tmp/pids
         mkdir -p ${cfg.statePath}/tmp/sockets
+        mkdir -p ${cfg.statePath}/shell
 
         rm -rf ${cfg.statePath}/config ${cfg.statePath}/shell/hooks
         mkdir -p ${cfg.statePath}/config
diff --git a/nixos/modules/services/misc/gitlab.xml b/nixos/modules/services/misc/gitlab.xml
index f9636f8e127..4b00f50abd6 100644
--- a/nixos/modules/services/misc/gitlab.xml
+++ b/nixos/modules/services/misc/gitlab.xml
@@ -66,6 +66,35 @@ services.gitlab = {
     db = "uPgq1gtwwHiatiuE0YHqbGa5lEIXH7fMsvuTNgdzJi8P0Dg12gibTzBQbq5LT7PNzcc3BP9P1snHVnduqtGF43PgrQtU7XL93ts6gqe9CBNhjtaqUwutQUDkygP5NrV6";
     secret = "devzJ0Tz0POiDBlrpWmcsjjrLaltyiAdS8TtgT9YNBOoUcDsfppiY3IXZjMVtKgXrFImIennFGOpPN8IkP8ATXpRgDD5rxVnKuTTwYQaci2NtaV1XxOQGjdIE50VGsR3";
     otp = "e1GATJVuS2sUh7jxiPzZPre4qtzGGaS22FR50Xs1TerRVdgI3CBVUi5XYtQ38W4xFeS4mDqi5cQjExE838iViSzCdcG19XSL6qNsfokQP9JugwiftmhmCadtsnHErBMI";
+    jws = ''
+      -----BEGIN RSA PRIVATE KEY-----
+      MIIEpAIBAAKCAQEArrtx4oHKwXoqUbMNqnHgAklnnuDon3XG5LJB35yPsXKv/8GK
+      ke92wkI+s1Xkvsp8tg9BIY/7c6YK4SR07EWL+dB5qwctsWR2Q8z+/BKmTx9D99pm
+      hnsjuNIXTF7BXrx3RX6BxZpH5Vzzh9nCwWKT/JCFqtwH7afNGGL7aMf+hdaiUg/Q
+      SD05yRObioiO4iXDolsJOhrnbZvlzVHl1ZYxFJv0H6/Snc0BBA9Fl/3uj6ANpbjP
+      eXF1SnJCqT87bj46r5NdVauzaRxAsIfqHroHK4UZ98X5LjGQFGvSqTvyjPBS4I1i
+      s7VJU28ObuutHxIxSlH0ibn4HZqWmKWlTS652wIDAQABAoIBAGtPcUTTw2sJlR3x
+      4k2wfAvLexkHNbZhBdKEa5JiO5mWPuLKwUiZEY2CU7Gd6csG3oqNWcm7/IjtC7dz
+      xV8p4yp8T4yq7vQIJ93B80NqTLtBD2QTvG2RCMJEPMzJUObWxkVmyVpLQyZo7KOd
+      KE/OM+aj94OUeEYLjRkSCScz1Gvq/qFG/nAy7KPCmN9JDHuhX26WHo2Rr1OnPNT/
+      7diph0bB9F3b8gjjNTqXDrpdAqVOgR/PsjEBz6DMY+bdyMIn87q2yfmMexxRofN6
+      LulpzSaa6Yup8N8H6PzVO6KAkQuf1aQRj0sMwGk1IZEnj6I0KbuHIZkw21Nc6sf2
+      ESFySDECgYEA1PnCNn5tmLnwe62Ttmrzl20zIS3Me1gUVJ1NTfr6+ai0I9iMYU21
+      5czuAjJPm9JKQF2vY8UAaCj2ZoObtHa/anb3xsCd8NXoM3iJq5JDoXI1ldz3Y+ad
+      U/bZUg1DLRvAniTuXmw9iOTwTwPxlDIGq5k+wG2Xmi1lk7zH8ezr9BMCgYEA0gfk
+      EhgcmPH8Z5cU3YYwOdt6HSJOM0OyN4k/5gnkv+HYVoJTj02gkrJmLr+mi1ugKj46
+      7huYO9TVnrKP21tmbaSv1dp5hS3letVRIxSloEtVGXmmdvJvBRzDWos+G+KcvADi
+      fFCz6w8v9NmO40CB7y/3SxTmSiSxDQeoi9LhDBkCgYEAsPgMWm25sfOnkY2NNUIv
+      wT8bAlHlHQT2d8zx5H9NttBpR3P0ShJhuF8N0sNthSQ7ULrIN5YGHYcUH+DyLAWU
+      TuomP3/kfa+xL7vUYb269tdJEYs4AkoppxBySoz8qenqpz422D0G8M6TpIS5Y5Qi
+      GMrQ6uLl21YnlpiCaFOfSQMCgYEAmZxj1kgEQmhZrnn1LL/D7czz1vMMNrpAUhXz
+      wg9iWmSXkU3oR1sDIceQrIhHCo2M6thwyU0tXjUft93pEQocM/zLDaGoVxtmRxxV
+      J08mg8IVD3jFoyFUyWxsBIDqgAKRl38eJsXvkO+ep3mm49Z+Ma3nM+apN3j2dQ0w
+      3HLzXaECgYBFLMEAboVFwi5+MZjGvqtpg2PVTisfuJy2eYnPwHs+AXUgi/xRNFjI
+      YHEa7UBPb5TEPSzWImQpETi2P5ywcUYL1EbN/nqPWmjFnat8wVmJtV4sUpJhubF4
+      Vqm9LxIWc1uQ1q1HDCejRIxIN3aSH+wgRS3Kcj8kCTIoXd1aERb04g==
+      -----END RSA PRIVATE KEY-----
+    '';
   };
   extraConfig = {
     gitlab = {
diff --git a/nixos/modules/services/network-filesystems/ipfs.nix b/nixos/modules/services/network-filesystems/ipfs.nix
index 36e5efecf43..d4a695ef588 100644
--- a/nixos/modules/services/network-filesystems/ipfs.nix
+++ b/nixos/modules/services/network-filesystems/ipfs.nix
@@ -7,7 +7,7 @@ let
 
   ipfsFlags = toString ([
     (optionalString  cfg.autoMount                   "--mount")
-    (optionalString  cfg.autoMigrate                 "--migrate")
+    #(optionalString  cfg.autoMigrate                 "--migrate")
     (optionalString  cfg.enableGC                    "--enable-gc")
     (optionalString (cfg.serviceFdlimit != null)     "--manage-fdlimit=false")
     (optionalString (cfg.defaultMode == "offline")   "--offline")
@@ -36,6 +36,7 @@ let
 
   baseService = recursiveUpdate commonEnv {
     wants = [ "ipfs-init.service" ];
+    # NB: migration must be performed prior to pre-start, else we get the failure message!
     preStart = ''
       ipfs repo fsck # workaround for BUG #4212 (https://github.com/ipfs/go-ipfs/issues/4214)
       ipfs --local config Addresses.API ${cfg.apiAddress}
@@ -97,11 +98,17 @@ in {
         description = "systemd service that is enabled by default";
       };
 
+      /*
       autoMigrate = mkOption {
         type = types.bool;
         default = false;
-        description = "Whether IPFS should try to migrate the file system automatically";
+        description = ''
+          Whether IPFS should try to migrate the file system automatically.
+
+          The daemon will need to be able to download a binary from https://ipfs.io to perform the migration.
+        '';
       };
+      */
 
       autoMount = mkOption {
         type = types.bool;
diff --git a/nixos/modules/services/web-servers/traefik.nix b/nixos/modules/services/web-servers/traefik.nix
new file mode 100644
index 00000000000..4ede4fc2096
--- /dev/null
+++ b/nixos/modules/services/web-servers/traefik.nix
@@ -0,0 +1,115 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.traefik;
+  configFile =
+    if cfg.configFile == null then
+      pkgs.runCommand "config.toml" {
+        buildInputs = [ pkgs.remarshal ];
+      } ''
+        remarshal -if json -of toml \
+          < ${pkgs.writeText "config.json" (builtins.toJSON cfg.configOptions)} \
+          > $out
+      ''
+    else cfg.configFile;
+
+in {
+  options.services.traefik = {
+    enable = mkEnableOption "Traefik web server";
+
+    configFile = mkOption {
+      default = null;
+      example = literalExample "/path/to/config.toml";
+      type = types.nullOr types.path;
+      description = ''
+        Path to verbatim traefik.toml to use.
+        (Using that option has precedence over <literal>configOptions</literal>)
+      '';
+    };
+
+    configOptions = mkOption {
+      description = ''
+        Config for Traefik.
+      '';
+      type = types.attrs;
+      default = {
+        defaultEntryPoints = ["http"];
+        entryPoints.http.address = ":80";
+      };
+      example = {
+        defaultEntrypoints = [ "http" ];
+        web.address = ":8080";
+        entryPoints.http.address = ":80";
+
+        file = {};
+        frontends = {
+          frontend1 = {
+            backend = "backend1";
+            routes.test_1.rule = "Host:localhost";
+          };
+        };
+        backends.backend1 = {
+          servers.server1.url = "http://localhost:8000";
+        };
+      };
+    };
+
+    dataDir = mkOption {
+      default = "/var/lib/traefik";
+      type = types.path;
+      description = ''
+      Location for any persistent data traefik creates, ie. acme
+      '';
+    };
+
+    package = mkOption {
+      default = pkgs.traefik;
+      defaultText = "pkgs.traefik";
+      type = types.package;
+      description = "Traefik package to use.";
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.services.traefik = {
+      description = "Traefik web server";
+      after = [ "network-online.target" ];
+      wantedBy = [ "multi-user.target" ];
+      serviceConfig = {
+        PermissionsStartOnly = true;
+        ExecStart = ''${cfg.package.bin}/bin/traefik --configfile=${configFile}'';
+        ExecStartPre = [
+          ''${pkgs.coreutils}/bin/mkdir -p "${cfg.dataDir}"''
+          ''${pkgs.coreutils}/bin/chmod 700 "${cfg.dataDir}"''
+          ''${pkgs.coreutils}/bin/chown -R traefik:traefik "${cfg.dataDir}"''
+        ];
+        Type = "simple";
+        User = "traefik";
+        Group = "traefik";
+        Restart = "on-failure";
+        StartLimitInterval = 86400;
+        StartLimitBurst = 5;
+        AmbientCapabilities = "cap_net_bind_service";
+        CapabilityBoundingSet = "cap_net_bind_service";
+        NoNewPrivileges = true;
+        LimitNPROC = 64;
+        LimitNOFILE = 1048576;
+        PrivateTmp = true;
+        PrivateDevices = true;
+        ProtectHome = true;
+        ProtectSystem = "full";
+        ReadWriteDirectories = cfg.dataDir;
+      };
+    };
+
+    users.extraUsers.traefik = {
+      group = "traefik";
+      home = cfg.dataDir;
+      createHome = true;
+    };
+
+    users.extraGroups.traefik = {};
+  };
+}
diff --git a/nixos/tests/pgjwt.nix b/nixos/tests/pgjwt.nix
index 2cf2963ae31..d186c42a2a9 100644
--- a/nixos/tests/pgjwt.nix
+++ b/nixos/tests/pgjwt.nix
@@ -1,42 +1,37 @@
-import ./make-test.nix ({ pkgs, ...} : 
+import ./make-test.nix ({ pkgs, lib, ...}:
 let
-  test = pkgs.writeText "test.sql" ''
-    CREATE EXTENSION pgcrypto;
-    CREATE EXTENSION pgjwt;
-    select sign('{"sub":"1234567890","name":"John Doe","admin":true}', 'secret');
-    select * from verify('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ', 'secret');
+  test = with pkgs; runCommand "patch-test" {
+    nativeBuildInputs = [ pgjwt ];
+  }
+  ''
+    sed -e '12 i CREATE EXTENSION pgcrypto;\nCREATE EXTENSION pgtap;\nSET search_path TO tap,public;' ${pgjwt.src}/test.sql > $out;
   '';
 in
-{
+with pkgs; {
   name = "pgjwt";
-  meta = with pkgs.stdenv.lib.maintainers; {
-    maintainers = [ spinus ];
+  meta = with lib.maintainers; {
+    maintainers = [ spinus willibutz ];
   };
 
   nodes = {
-    master =
-      { pkgs, config, ... }:
-
-      {
-        services.postgresql = let mypg = pkgs.postgresql95; in {
-            enable = true;
-            package = mypg;
-            extraPlugins =[pkgs.pgjwt];
-            initialScript =  pkgs.writeText "postgresql-init.sql"
-          ''
-          CREATE ROLE postgres WITH superuser login createdb;
-          '';
-          };
+    master = { pkgs, config, ... }:
+    {
+      services.postgresql = {
+        enable = true;
+        extraPlugins = [ pgjwt pgtap ];
       };
+    };
   };
 
-  testScript = ''
+  testScript = { nodes, ... }:
+  let
+    sqlSU = "${nodes.master.config.services.postgresql.superUser}";
+    pgProve = "${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}";
+  in
+  ''
     startAll;
     $master->waitForUnit("postgresql");
-    $master->succeed("timeout 10 bash -c 'while ! psql postgres -c \"SELECT 1;\";do sleep 1;done;'");
-    $master->succeed("cat ${test} | psql postgres");
-    # I can't make original test working :[
-    # $master->succeed("${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}/bin/pg_prove -d postgres ${pkgs.pgjwt.src}/test.sql");
-
+    $master->copyFileFromHost("${test}","/tmp/test.sql");
+    $master->succeed("${pkgs.sudo}/bin/sudo -u ${sqlSU} PGOPTIONS=--search_path=tap,public ${pgProve}/bin/pg_prove -d postgres -v -f /tmp/test.sql");
   '';
 })
diff --git a/pkgs/applications/altcoins/go-ethereum.nix b/pkgs/applications/altcoins/go-ethereum.nix
index 45c990d88a5..279e767173a 100644
--- a/pkgs/applications/altcoins/go-ethereum.nix
+++ b/pkgs/applications/altcoins/go-ethereum.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   name = "go-ethereum-${version}";
-  version = "1.7.0";
+  version = "1.7.1";
   goPackagePath = "github.com/ethereum/go-ethereum";
 
   # Fix for usb-related segmentation faults on darwin
@@ -16,7 +16,7 @@ buildGoPackage rec {
     owner = "ethereum";
     repo = "go-ethereum";
     rev = "v${version}";
-    sha256 = "0ybjaiyrfb320rab6a5r9iiqvkrcd8b2qvixzx0kjmc4a7l1q5zh";
+    sha256 = "1rhqnqp2d951d4084z7dc07q0my4wd5401968a0nqj030a9vgng2";
   };
 
   # Fix cyclic referencing on Darwin
diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix
index a4debfe3744..850848abcde 100644
--- a/pkgs/applications/audio/ardour/default.nix
+++ b/pkgs/applications/audio/ardour/default.nix
@@ -16,7 +16,7 @@ let
   # "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH.
 
   # Version to build.
-  tag = "5.11";
+  tag = "5.12";
 
 in
 
@@ -25,12 +25,12 @@ stdenv.mkDerivation rec {
 
   src = fetchgit {
     url = "git://git.ardour.org/ardour/ardour.git";
-    rev = "bd40b9132cbac2d2b79ba0ef480bd41d837f8f71";
-    sha256 = "0xxxjg90jzj5cj364mlhk8srkgaghxif2jj1015bra25pffk41ay";
+    rev = "ae0dcdc0c5d13483271065c360e378202d20170a";
+    sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr";
   };
 
   buildInputs =
-    [ alsaLib aubio boost cairomm curl doxygen dbus fftw fftwSinglePrec flac 
+    [ alsaLib aubio boost cairomm curl doxygen dbus fftw fftwSinglePrec flac
       glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo
       libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
       libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lv2
diff --git a/pkgs/applications/audio/axoloti/default.nix b/pkgs/applications/audio/axoloti/default.nix
new file mode 100644
index 00000000000..986e476779c
--- /dev/null
+++ b/pkgs/applications/audio/axoloti/default.nix
@@ -0,0 +1,101 @@
+{ stdenv, fetchFromGitHub, fetchurl, makeWrapper, unzip
+, gnumake, gcc-arm-embedded, dfu-util-axoloti, jdk, ant, libfaketime }:
+
+stdenv.mkDerivation rec {
+  version = "1.0.12-1";
+  name = "axoloti-${version}";
+
+  src = fetchFromGitHub {
+    owner = "axoloti";
+    repo = "axoloti";
+    rev = "${version}";
+    sha256 = "13njmv8zac0kaaxgkv4y4zfjcclafn9cw0m8lj2k4926wnwjmf50";
+  };
+
+  chibi_version = "2.6.9";
+  chibi_name = "ChibiOS_${chibi_version}";
+
+  chibios = fetchurl {
+    url = "mirror://sourceforge/project/chibios/ChibiOS_RT%20stable/Version%20${chibi_version}/${chibi_name}.zip";
+    sha256 = "0lb5s8pkj80mqhsy47mmq0lqk34s2a2m3xagzihalvabwd0frhlj";
+  };
+
+  buildInputs = [ makeWrapper unzip gcc-arm-embedded dfu-util-axoloti jdk ant libfaketime ];
+
+  patchPhase = ''
+    unzip ${chibios}
+    mv ${chibi_name} chibios
+    (cd chibios/ext; unzip -q -o fatfs-0.9-patched.zip)
+
+    # Remove source of non-determinism in ChibiOS
+    substituteInPlace "chibios/os/various/shell.c" \
+      --replace "#ifdef __DATE__" "#if 0"
+
+    # Hardcode full path to compiler tools
+    for f in "firmware/Makefile.patch" \
+             "firmware/Makefile" \
+             "firmware/flasher/Makefile" \
+             "firmware/mounter/Makefile"; do
+      substituteInPlace "$f" \
+        --replace "arm-none-eabi-" "${gcc-arm-embedded}/bin/arm-none-eabi-"
+    done
+
+    # Hardcode path to "make"
+    for f in "firmware/compile_firmware_linux.sh" \
+             "firmware/compile_patch_linux.sh"; do
+      substituteInPlace "$f" \
+        --replace "make" "${gnumake}/bin/make"
+    done
+
+    # Hardcode dfu-util path
+    substituteInPlace "platform_linux/upload_fw_dfu.sh" \
+      --replace "/bin/dfu-util" ""
+    substituteInPlace "platform_linux/upload_fw_dfu.sh" \
+      --replace "./dfu-util" "${dfu-util-axoloti}/bin/dfu-util"
+
+    # Fix build version
+    substituteInPlace "build.xml" \
+      --replace "(git missing)" "${version}"
+
+    # Remove build time
+    substituteInPlace "build.xml" \
+      --replace "<tstamp>" ""
+    substituteInPlace "build.xml" \
+      --replace \
+        '<format property="build.time" pattern="dd/MM/yyyy HH:mm:ss z"/>' \
+        '<property name="build.time" value=""/>'
+    substituteInPlace "build.xml" \
+      --replace "</tstamp>" ""
+    substituteInPlace "build.xml" \
+      --replace \
+       '{line.separator}</echo>' \
+       '{line.separator}</echo> <touch file="src/main/java/axoloti/Version.java" millis="0" />'
+  '';
+
+  buildPhase = ''
+    find . -exec touch -d '1970-01-01 00:00' {} \;
+    (cd platform_linux; sh compile_firmware.sh)
+    faketime "1970-01-01 00:00:00" ant -Dbuild.runtime=true
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/axoloti
+
+    cp -r doc firmware chibios platform_linux CMSIS *.txt $out/share/axoloti/
+    install -vD dist/Axoloti.jar $out/share/axoloti/
+
+    makeWrapper ${jdk}/bin/java $out/bin/axoloti --add-flags "-Daxoloti_release=$out/share/axoloti -Daxoloti_runtime=$out/share/axoloti -jar $out/share/axoloti/Axoloti.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.axoloti.com;
+    description = ''
+      Sketching embedded digital audio algorithms.
+
+      To fix permissions of the Axoloti USB device node, add a similar udev rule to <literal>services.udev.extraRules</literal>:
+      <literal>SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="0442", OWNER="someuser", GROUP="somegroup"</literal>
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ TealG ];
+  };
+}
diff --git a/pkgs/applications/audio/axoloti/dfu-util.nix b/pkgs/applications/audio/axoloti/dfu-util.nix
new file mode 100644
index 00000000000..2076e45de54
--- /dev/null
+++ b/pkgs/applications/audio/axoloti/dfu-util.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, libusb1-axoloti }:
+
+stdenv.mkDerivation rec {
+  name="dfu-util-${version}";
+  version = "0.8";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libusb1-axoloti ];
+
+  src = fetchurl {
+    url = "http://dfu-util.sourceforge.net/releases/${name}.tar.gz";
+    sha256 = "0n7h08avlzin04j93m6hkq9id6hxjiiix7ff9gc2n89aw6dxxjsm";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Device firmware update (DFU) USB programmer";
+    longDescription = ''
+      dfu-util is a program that implements the host (PC) side of the USB
+      DFU 1.0 and 1.1 (Universal Serial Bus Device Firmware Upgrade) protocol.
+
+      DFU is intended to download and upload firmware to devices connected over
+      USB. It ranges from small devices like micro-controller boards up to mobile
+      phones. With dfu-util you are able to download firmware to your device or
+      upload firmware from it.
+    '';
+    homepage = http://dfu-util.gnumonks.org/;
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/applications/audio/axoloti/libusb1.nix b/pkgs/applications/audio/axoloti/libusb1.nix
new file mode 100644
index 00000000000..cf71c006046
--- /dev/null
+++ b/pkgs/applications/audio/axoloti/libusb1.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, pkgconfig, systemd ? null, libobjc, IOKit, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  name = "libusb-1.0.19";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/libusb/${name}.tar.bz2";
+    sha256 = "0h38p9rxfpg9vkrbyb120i1diq57qcln82h5fr7hvy82c20jql3c";
+  };
+
+  outputs = [ "out" "dev" ]; # get rid of propagating systemd closure
+
+  buildInputs = [ pkgconfig ];
+  propagatedBuildInputs =
+    stdenv.lib.optional stdenv.isLinux systemd ++
+    stdenv.lib.optionals stdenv.isDarwin [ libobjc IOKit ];
+
+  patches = [
+    (fetchpatch {
+      name = "libusb.stdfu.patch";
+      url = "https://raw.githubusercontent.com/axoloti/axoloti/1.0.12/platform_linux/src/libusb.stdfu.patch";
+      sha256 = "194j7j61i4q6x0ihm9ms8dxd4vliw20n2rj6cm9h17qzdl9xr33d";
+    })
+  ];
+
+  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
+
+  preFixup = stdenv.lib.optionalString stdenv.isLinux ''
+    sed 's,-ludev,-L${systemd.lib}/lib -ludev,' -i $out/lib/libusb-1.0.la
+  '';
+
+  meta = {
+    homepage = http://www.libusb.info;
+    description = "User-space USB library";
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/applications/editors/android-studio/packages.nix b/pkgs/applications/editors/android-studio/packages.nix
index 6d7ed2e489b..8ee5f0319aa 100644
--- a/pkgs/applications/editors/android-studio/packages.nix
+++ b/pkgs/applications/editors/android-studio/packages.nix
@@ -27,9 +27,9 @@ in rec {
 
   preview = mkStudio rec {
     pname = "android-studio-preview";
-    version = "3.0.0.14"; # "Android Studio 3.0 Beta 6"
-    build = "171.4333198";
-    sha256Hash = "071a3j0bnsspvhvhh10h9ygay3bi66glriiy8gl8vrwx1dnv55zk";
+    version = "3.0.0.15"; # "Android Studio 3.0 Beta 7"
+    build = "171.4365657";
+    sha256Hash = "0am3rq0ag982ik95mpcxvx2zlv0h4l6747b29mlsbqih66868db6";
 
     meta = stable.meta // {
       description = "The Official IDE for Android (preview version)";
diff --git a/pkgs/applications/editors/emacs-modes/melpa-generated.nix b/pkgs/applications/editors/emacs-modes/melpa-generated.nix
index b0449cc7c42..ce9c4b3a46f 100644
--- a/pkgs/applications/editors/emacs-modes/melpa-generated.nix
+++ b/pkgs/applications/editors/emacs-modes/melpa-generated.nix
@@ -10171,6 +10171,27 @@
           license = lib.licenses.free;
         };
       }) {};
+    company-lean = callPackage ({ company, dash, dash-functional, emacs, f, fetchFromGitHub, fetchurl, lean-mode, lib, melpaBuild, s }:
+    melpaBuild {
+        pname = "company-lean";
+        version = "20170920.708";
+        src = fetchFromGitHub {
+          owner = "leanprover";
+          repo = "lean-mode";
+          rev = "fa75bf97442a42e76e77fcf1b3c64e58f4f4169a";
+          sha256 = "1qyg0yjfmpnj8y3bbip3mvlhmh0ccm0j0p3crmb3az84fycvrsnr";
+        };
+        recipeFile = fetchurl {
+          url = "https://raw.githubusercontent.com/milkypostman/melpa/42f4d6438c8aeb94ebc1782f2f5e2abd17f0ffde/recipes/company-lean";
+          sha256 = "1hqkn7w5dyznf7i3r3132q8x31r74q188jsm5kdrjqgbwak2p91a";
+          name = "company-lean";
+        };
+        packageRequires = [ company dash dash-functional emacs f lean-mode s ];
+        meta = {
+          homepage = "https://melpa.org/#/company-lean";
+          license = lib.licenses.free;
+        };
+      }) {};
     company-lua = callPackage ({ company, f, fetchFromGitHub, fetchurl, lib, lua-mode, melpaBuild, s }:
     melpaBuild {
         pname = "company-lua";
@@ -32722,6 +32743,27 @@
           license = lib.licenses.free;
         };
       }) {};
+    helm-lean = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, helm, lean-mode, lib, melpaBuild }:
+    melpaBuild {
+        pname = "helm-lean";
+        version = "20170919.934";
+        src = fetchFromGitHub {
+          owner = "leanprover";
+          repo = "lean-mode";
+          rev = "fa75bf97442a42e76e77fcf1b3c64e58f4f4169a";
+          sha256 = "1qyg0yjfmpnj8y3bbip3mvlhmh0ccm0j0p3crmb3az84fycvrsnr";
+        };
+        recipeFile = fetchurl {
+          url = "https://raw.githubusercontent.com/milkypostman/melpa/42f4d6438c8aeb94ebc1782f2f5e2abd17f0ffde/recipes/helm-lean";
+          sha256 = "0j5ax14lhlyd9mpqk1jwh7nfp090kj71r045v2qjfaw2fa23b7si";
+          name = "helm-lean";
+        };
+        packageRequires = [ dash emacs helm lean-mode ];
+        meta = {
+          homepage = "https://melpa.org/#/helm-lean";
+          license = lib.licenses.free;
+        };
+      }) {};
     helm-lobsters = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, helm, lib, melpaBuild }:
     melpaBuild {
         pname = "helm-lobsters";
@@ -41631,6 +41673,27 @@
           license = lib.licenses.free;
         };
       }) {};
+    lean-mode = callPackage ({ dash, dash-functional, emacs, f, fetchFromGitHub, fetchurl, flycheck, lib, melpaBuild, s }:
+    melpaBuild {
+        pname = "lean-mode";
+        version = "20170920.755";
+        src = fetchFromGitHub {
+          owner = "leanprover";
+          repo = "lean-mode";
+          rev = "fa75bf97442a42e76e77fcf1b3c64e58f4f4169a";
+          sha256 = "1qyg0yjfmpnj8y3bbip3mvlhmh0ccm0j0p3crmb3az84fycvrsnr";
+        };
+        recipeFile = fetchurl {
+          url = "https://raw.githubusercontent.com/milkypostman/melpa/42f4d6438c8aeb94ebc1782f2f5e2abd17f0ffde/recipes/lean-mode";
+          sha256 = "0rdraxsirkrzbinjwg4qam15iy3qiixqgwsckngzw8d9a4s9l6sj";
+          name = "lean-mode";
+        };
+        packageRequires = [ dash dash-functional emacs f flycheck s ];
+        meta = {
+          homepage = "https://melpa.org/#/lean-mode";
+          license = lib.licenses.free;
+        };
+      }) {};
     leanote = callPackage ({ async, cl-lib ? null, emacs, fetchFromGitHub, fetchurl, let-alist, lib, melpaBuild, pcache, request, s }:
     melpaBuild {
         pname = "leanote";
diff --git a/pkgs/applications/graphics/gcolor3/default.nix b/pkgs/applications/graphics/gcolor3/default.nix
new file mode 100644
index 00000000000..afad1e6c3af
--- /dev/null
+++ b/pkgs/applications/graphics/gcolor3/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, gnome3, libtool, intltool, pkgconfig, gtk3, hicolor_icon_theme, wrapGAppsHook } :
+
+let
+  version = "2.2";
+in stdenv.mkDerivation {
+  name = "gcolor3-${version}";
+
+  src = fetchFromGitHub {
+    owner = "hjdskes";
+    repo = "gcolor3";
+    rev = "v${version}";
+    sha256 = "1rbahsi33pfggpj5cigy6wy5333g3rpm8v2q0b35c6m7pwhmf2gr";
+  };
+
+  nativeBuildInputs = [ gnome3.gnome_common libtool intltool pkgconfig hicolor_icon_theme wrapGAppsHook ];
+
+  buildInputs = [ gtk3 ];
+
+  configureScript = "./autogen.sh";
+
+  # clang-4.0: error: argument unused during compilation: '-pthread'
+  NIX_CFLAGS_COMPILE = stdenv.lib.optional stdenv.cc.isClang "-Wno-error=unused-command-line-argument";
+
+  meta = {
+    description = "A simple color chooser written in GTK3";
+    homepage = https://hjdskes.github.io/projects/gcolor3/;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ jtojnar ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/applications/graphics/sane/backends/brscan4/default.nix b/pkgs/applications/graphics/sane/backends/brscan4/default.nix
index 7037e944f3f..42d129e5388 100644
--- a/pkgs/applications/graphics/sane/backends/brscan4/default.nix
+++ b/pkgs/applications/graphics/sane/backends/brscan4/default.nix
@@ -10,17 +10,17 @@ let
   udevRules = callPackage ./udev_rules_type1.nix {};
 
 in stdenv.mkDerivation rec {
-  name = "brscan4-0.4.4-2";
+  name = "brscan4-0.4.4-4";
   src = 
     if stdenv.system == "i686-linux" then
       fetchurl {
         url = "http://download.brother.com/welcome/dlf006646/${name}.i386.deb";
-        sha256 = "1rd6qmg49lvack8rg9kkqs3vxfvvqf2x45h93pkrhk8a4aj5c8ll";
+        sha256 = "13mhjbzf9nvpdzrc2s98684r7likg76zxs1wlz2h8w59fsqgx4k2";
       }
     else if stdenv.system == "x86_64-linux" then
       fetchurl {
         url = "http://download.brother.com/welcome/dlf006645/${name}.amd64.deb";
-        sha256 = "1r3cq1k2a2bghibkckmk00x7y59ic31gv7jcsw7380szf1j3la59";
+        sha256 = "0xy5px96y1saq9l80vwvfn6anr2q42qlxdhm6ci2a0diwib5q9fd";
       }
     else throw "${name} is not supported on ${stdenv.system} (only i686-linux and x86_64 linux are supported)";
 
diff --git a/pkgs/applications/graphics/xzgv/default.nix b/pkgs/applications/graphics/xzgv/default.nix
index 763b84d797e..a15ffee3d4a 100644
--- a/pkgs/applications/graphics/xzgv/default.nix
+++ b/pkgs/applications/graphics/xzgv/default.nix
@@ -1,23 +1,23 @@
-{ stdenv, fetchurl, gtk2, pkgconfig, texinfo }:
+{ stdenv, fetchurl, gtk2, libexif, pkgconfig, texinfo }:
 
 stdenv.mkDerivation rec {
   name = "xzgv-${version}";
-  version = "0.9.1";
+  version = "0.9.2";
   src = fetchurl {
     url = "mirror://sourceforge/xzgv/xzgv-${version}.tar.gz";
-    sha256 = "1rh432wnvzs434knzbda0fslhfx0gngryrrnqkfm6gwd2g5mxcph";
+    sha256 = "17l1xr9v07ggwga3vn0z1i4lnwjrr20rr8z1kjbw71aaijxl18i5";
   };
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ gtk2 texinfo ];
-  patches = [ ./fix-linker-paths.patch ];
+  nativeBuildInputs = [ pkgconfig texinfo ];
+  buildInputs = [ gtk2 libexif ];
   postPatch = ''
     substituteInPlace config.mk \
       --replace /usr/local $out
-    substituteInPlace config.mk \
-      --replace "CFLAGS=-O2 -Wall" "CFLAGS=-Wall"
     substituteInPlace Makefile \
       --replace "all: src man" "all: src man info"
   '';
+  preInstall = ''
+    mkdir -p $out/share/{app-install/desktop,applications,info,pixmaps}
+  '';
   meta = with stdenv.lib; {
     homepage = http://sourceforge.net/projects/xzgv/;
     description = "Picture viewer for X with a thumbnail-based selector";
diff --git a/pkgs/applications/graphics/xzgv/fix-linker-paths.patch b/pkgs/applications/graphics/xzgv/fix-linker-paths.patch
deleted file mode 100644
index c5b1ae0879b..00000000000
--- a/pkgs/applications/graphics/xzgv/fix-linker-paths.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-taken from http://sourceforge.net/p/xzgv/code/53/tree//trunk/xzgv/src/Makefile?diff=514dada434309d2ec11f5eff:52
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -9,8 +9,10 @@
- # This gets definitions for CC, CFLAGS, BINDIR etc.
- include ../config.mk
- 
--CFLAGS+=`pkg-config --cflags gtk+-2.0` `pkg-config --cflags gdk-pixbuf-2.0`
--LDFLAGS+=`pkg-config --libs gtk+-2.0` `pkg-config --libs gdk-pixbuf-2.0`
-+CFLAGS+=`pkg-config --cflags gtk+-2.0` `pkg-config --cflags gdk-pixbuf-2.0` \
-+	`pkg-config --cflags x11`
-+LDFLAGS+=`pkg-config --libs gtk+-2.0` `pkg-config --libs gdk-pixbuf-2.0` \
-+	`pkg-config --libs x11` -lm
- 
- all: xzgv
- 
-@@ -23,7 +25,7 @@
- 	backend.o
- 
- xzgv: $(OBJS)
--	$(CC) $(LDFLAGS) -o xzgv $(OBJS)
-+	$(CC) -o xzgv $(OBJS) $(LDFLAGS)
- 
- installdirs:
- 	/bin/sh ../mkinstalldirs $(BINDIR)
diff --git a/pkgs/applications/networking/cluster/terraform/default.nix b/pkgs/applications/networking/cluster/terraform/default.nix
index cc7a93bdb53..e6e3585a4d1 100644
--- a/pkgs/applications/networking/cluster/terraform/default.nix
+++ b/pkgs/applications/networking/cluster/terraform/default.nix
@@ -91,8 +91,8 @@ in {
   };
 
   terraform_0_10 = pluggable (generic {
-    version = "0.10.2";
-    sha256 = "1q7za7jcfqv914a3ynfl7hrqbgwcahgm418kivjrac6p1q26w502";
+    version = "0.10.7";
+    sha256 = "0gjvrra255m973nzi7rpqp5dn5npnd79cnv8vjcs7wmkdj1hli0l";
     patches = [ ./provider-path.patch ];
     passthru = { inherit plugins; };
   });
diff --git a/pkgs/applications/networking/cluster/terraform/providers/data.nix b/pkgs/applications/networking/cluster/terraform/providers/data.nix
index 0778e221c12..d29bd964860 100644
--- a/pkgs/applications/networking/cluster/terraform/providers/data.nix
+++ b/pkgs/applications/networking/cluster/terraform/providers/data.nix
@@ -11,8 +11,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-archive";
-      version = "0.1.0";
-      sha256  = "1g7bjak1vgxpnmp4b9cb3mq8gqp1a7738fj0sxzflfk8k35p27ri";
+      version = "1.0.0";
+      sha256  = "0z85fpd70m2w59vxp82d8ipylaazf6l890rkjca4dm14rkq352zn";
     };
   arukas =
     {
@@ -32,8 +32,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-aws";
-      version = "0.1.4";
-      sha256  = "0hqyvp1bgyfqq2lkjq5m5qxybagnxl9zrqiqfnlrfigdp0y31iz8";
+      version = "1.0.0";
+      sha256  = "1x3ldlx2iryxwfaws8ng9n0k06p7n8xqc6sjyxw73jdasxbh8wgi";
     };
   azure =
     {
@@ -46,8 +46,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-azurerm";
-      version = "0.1.6";
-      sha256  = "01hjr42gpkpwpz0chnkw8pf0yid0hqpdnfz65q5h2p8h627hg0c6";
+      version = "0.2.2";
+      sha256  = "1jdkj1zylrlcd2qkfkl81i0ybdpmvbvvsk0f4ahafiqp550srf2d";
     };
   bitbucket =
     {
@@ -102,15 +102,15 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-consul";
-      version = "0.1.0";
-      sha256  = "1d179m42iv2dy6wjzldllffwg6qxbg6gnvxrp6nzy75v7qp2aq94";
+      version = "1.0.0";
+      sha256  = "1008lrvdqn3kk8gwvq094nwknh00b429jmwi0hq4brick7vyvbvz";
     };
   datadog =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-datadog";
-      version = "0.1.0";
-      sha256  = "1k3p0zxffhabs1xb6aw9189vbmh3ax10q4xi1qgjfjvla22byqmk";
+      version = "0.1.1";
+      sha256  = "0nyqybi3fl9qlhpx2n0vjz7kn3bqhf4wy93zhq3j3853zxpcjpzc";
     };
   digitalocean =
     {
@@ -130,8 +130,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-dns";
-      version = "0.1.1";
-      sha256  = "0ccp02rbvfvrb808mg053q5y7ghvxsl7p1gzw7pkm934i6j90g9n";
+      version = "1.0.0";
+      sha256  = "05ismwpmpkv9qxn6g5i29y18s1pw4yf2pyvv9ak8hj8idh4z6gz2";
     };
   dnsimple =
     {
@@ -151,15 +151,15 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-dyn";
-      version = "0.1.0";
-      sha256  = "1w727r2gz5hjmbzw9zir0n5nrr818adh4qj50n3vijqwbxciyq2p";
+      version = "1.0.0";
+      sha256  = "0ph3516syca8f1zxmz66mh6y5kd8sc74kl0n8zixcgd6rvq0dysr";
     };
   external =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-external";
-      version = "0.1.0";
-      sha256  = "160f0avv6wbh11z54wy0qcq0zrcj4s31kn7a9x6zikv7v4hfnbza";
+      version = "1.0.0";
+      sha256  = "1sh0m8d6wp76h1b89j820yl3caji0f0wlgq3pwa5nk99h73rlndn";
     };
   fastly =
     {
@@ -186,8 +186,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-google";
-      version = "0.1.3";
-      sha256  = "1aa1hz0yc4g746m6dl04hc70rcrzx0py8kpdch3kim475bspclnf";
+      version = "1.0.1";
+      sha256  = "0l0bpcfjnzlgf3g60iyfr3axw0244w99cf04z7y3bcszk5njipri";
     };
   grafana =
     {
@@ -207,8 +207,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-http";
-      version = "0.1.0";
-      sha256  = "1iy5fsl1j4wswbajnw0k6lagc2sz52idnswj1vmfc66x87ls0mah";
+      version = "1.0.0";
+      sha256  = "1lks997sxfydm6a9s6vfyljs3j1r7qpg1k1s5ilpg5ckv77nad6g";
     };
   icinga2 =
     {
@@ -221,8 +221,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-ignition";
-      version = "0.2.0";
-      sha256  = "07qsyjzbz34nh7qrmw97sg0zrqbchky9r3ywrdz96pmpr1yjmwr7";
+      version = "1.0.0";
+      sha256  = "0hr2zshrx4qfb7xdknsxsa4522kkf84rsqqbliz7ac9nsqpaarf4";
     };
   influxdb =
     {
@@ -249,8 +249,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-local";
-      version = "0.1.0";
-      sha256  = "02m0wg0jasnzrayamjsc2hzi0ibj83v4d0hmw2xbrxk7vmk71lgq";
+      version = "1.0.0";
+      sha256  = "1dxdpmai8f0g1gj6khgv769lhg6ssfmgqskg4c5qf1jnv8yn8mkd";
     };
   logentries =
     {
@@ -284,8 +284,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-nomad";
-      version = "0.1.0";
-      sha256  = "03sb31l59hxpp6zmnizxdm21jipz4mrzz9czk6ahhx7c8q0n0na8";
+      version = "1.0.0";
+      sha256  = "01fvw7yw8dhjclipnn9h1blagbp2849ahmnqj3ysh13i0x1qbq4r";
     };
   ns1 =
     {
@@ -298,8 +298,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-null";
-      version = "0.1.0";
-      sha256  = "069yhsqi4jc14cay1gk7mwwmrg8xv90kj1k5qy3a2ypfbss4fcjp";
+      version = "1.0.0";
+      sha256  = "12vpa09xrq8z1pjq0bwzq3889c4fl6c5kvynwqy0z1pdx21m60ha";
     };
   oneandone =
     {
@@ -312,15 +312,15 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-opc";
-      version = "0.1.2";
-      sha256  = "0c4ywav89lln9417zwflrp3qhcs7qf96rgcvm1msmpgglrhzwp2i";
+      version = "0.1.3";
+      sha256  = "00h531pikjrmra2sr24lnx2z0dvycshd0qpz3wa733mkvvm47p07";
     };
   openstack =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-openstack";
-      version = "0.2.1";
-      sha256  = "1zsswsgv7lzhfd0v8llbm18gsfg6xji0r3f9rnvpjqkffj4088ca";
+      version = "0.2.2";
+      sha256  = "1027pqv1cvyvakn4kgivd720g9na38nam5bb5fjyd4d04xpq9v90";
     };
   opsgenie =
     {
@@ -340,8 +340,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-packet";
-      version = "0.1.0";
-      sha256  = "0dk10d4b10pdlhqgm6fqg0cn0ff78ss1x76inj6gfwrnbn2amhp0";
+      version = "1.0.0";
+      sha256  = "0ibz9k1yfqkfsmqmv1pl2jwzbld0l6f7zd8y80iw0v5wswclswya";
     };
   pagerduty =
     {
@@ -375,22 +375,22 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-rabbitmq";
-      version = "0.1.0";
-      sha256  = "0vn8456f2al1f6rs1gn157c86qz1fxz8sqphbr9lvdhy1jw1q2vp";
+      version = "0.2.0";
+      sha256  = "1pbib43d1iqy8xl03zqwnz77362cb9cq8awcpid714n1sz7nd4im";
     };
   rancher =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-rancher";
-      version = "0.2.0";
-      sha256  = "05aci6cjrs7rv6hqhvcqy1i0nr8azds8flnrc7vba0nyy6v192qg";
+      version = "1.0.0";
+      sha256  = "1fs8p0l8f79b1s2g0p5zlq1has9i7w3bmv76vrm79076v7w2v0d6";
     };
   random =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-random";
-      version = "0.1.0";
-      sha256  = "1lbv5yiw4qfsqm3gxf37gwadgp7g6ki0n70mj00d8l6v6jd0mdl5";
+      version = "1.0.0";
+      sha256  = "0im4dsnbpbc9qln92lxcrygm9d705bvlhigpx492172cq1fqnw61";
     };
   rundeck =
     {
@@ -431,29 +431,29 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-template";
-      version = "0.1.1";
-      sha256  = "1qrslnkvcj18jzxmsbf72gm54s8dnw5k5z15nffwgy09vv7mzpcn";
+      version = "1.0.0";
+      sha256  = "0jl6bp6gwg96sdk5j6s13vv1j9gxjpy2yva3barmzv9138i665mz";
     };
   terraform =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-terraform";
-      version = "0.1.0";
-      sha256  = "1w465853gwffpydb7idvg7bk8ygadgy08s04fxsqc8i2683jbpiz";
+      version = "1.0.0";
+      sha256  = "0icyyi4h48yh5235p5svm4p0jzbqqm1f3846dqy37czhjfcrn3gh";
     };
   tls =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-tls";
-      version = "0.1.0";
-      sha256  = "1n1k4dcqm8lp7mgj88xj8xc09mn769np4wg3cggnpcs6igbgdgg7";
+      version = "1.0.0";
+      sha256  = "063ai5zipmkwq0nr5c25gqsr970r8aba12ynxg9x8cnay0zn9s95";
     };
   triton =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-triton";
-      version = "0.1.2";
-      sha256  = "1jyrmc7932w7d8q96lmd0axf32psfic5d7hmwm1a25vzjzfn9nlw";
+      version = "0.2.1";
+      sha256  = "0ds2anr65xx9kdjv6x68lcxgl3js6l0m2cbx3kwx5465m01m3gxz";
     };
   ultradns =
     {
@@ -480,7 +480,7 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-vsphere";
-      version = "0.2.2";
-      sha256  = "0d5d4wip57zmv9kqh4zr9mz8ylffa2qcf1vmx827rwyqdr25xvaz";
+      version = "0.4.1";
+      sha256  = "0afxvjx9zb9ym0cs8j15s6nfp20rmmifjdc098wcfjmgnw6p7f01";
     };
 }
diff --git a/pkgs/applications/networking/gns3/default.nix b/pkgs/applications/networking/gns3/default.nix
index bec700367da..5aa1649ff5f 100644
--- a/pkgs/applications/networking/gns3/default.nix
+++ b/pkgs/applications/networking/gns3/default.nix
@@ -2,7 +2,7 @@
 
 let
   stableVersion = "2.0.3";
-  previewVersion = "2.1.0rc1";
+  previewVersion = "2.1.0rc2";
   addVersion = args:
     let version = if args.stable then stableVersion else previewVersion;
         branch = if args.stable then "stable" else "preview";
@@ -16,7 +16,7 @@ in {
   };
   guiPreview = mkGui {
     stable = false;
-    sha256Hash = "0rmvanzc0fjw9giqwnf98yc49cxaz637w8b865dv08lcf1fg9j8l";
+    sha256Hash = "1frfhys5s5lnqzk216y3wj2pli5g3b5imfzcmddxdcibksx13i17";
   };
 
   serverStable = mkServer {
@@ -25,6 +25,6 @@ in {
   };
   serverPreview = mkServer {
     stable = false;
-    sha256Hash = "181689fpjxq4hy2lyxk4zciqhgnhj5srvb4xsxdlbf68n89fj2zf";
+    sha256Hash = "0vm4hir8yqj7xhykgg3x5rv1nj1qq6sg19sjj7r5w60brrlsw7v9";
   };
 }
diff --git a/pkgs/applications/networking/ipfs-migrator/default.nix b/pkgs/applications/networking/ipfs-migrator/default.nix
new file mode 100644
index 00000000000..6a4afdb1c17
--- /dev/null
+++ b/pkgs/applications/networking/ipfs-migrator/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "ipfs-migrator-${version}";
+  version = "6";
+
+  goPackagePath = "github.com/ipfs/fs-repo-migrations";
+
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "ipfs";
+    repo = "fs-repo-migrations";
+    rev = "a89e9769b9cac25ad9ca31c7e9a4445c7966d35b";
+    sha256 = "0x4mbkx7wlqjmkg6852hljq947v9y9k3hjd5yfj7kka1hpvxd7bn";
+  };
+
+  patches = [ ./lru-repo-path-fix.patch ];
+
+  meta = with stdenv.lib; {
+    description = "Migration tool for ipfs repositories";
+    homepage = https://ipfs.io/;
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ elitak ];
+  };
+}
diff --git a/pkgs/applications/networking/ipfs-migrator/deps.nix b/pkgs/applications/networking/ipfs-migrator/deps.nix
new file mode 100644
index 00000000000..2d52ca0ef70
--- /dev/null
+++ b/pkgs/applications/networking/ipfs-migrator/deps.nix
@@ -0,0 +1,56 @@
+[
+  {
+    goPackagePath = "github.com/dustin/go-humanize";
+    fetch = {
+      type = "git";
+      url = https://github.com/dustin/go-humanize;
+      rev = "79e699ccd02f240a1f1fbbdcee7e64c1c12e41aa";
+      sha256 = "0awfqszgjw8qrdw31v74jnvj1jbp7czhd8aq59j57yyj4hy50fzj";
+    };
+  }
+  {
+    goPackagePath = "github.com/jbenet/goprocess";
+    fetch = {
+      type = "git";
+      url = https://github.com/jbenet/goprocess;
+      rev = "b497e2f366b8624394fb2e89c10ab607bebdde0b";
+      sha256 = "1lnvkzki7vnqn5c4m6bigk0k85haicmg27w903kwg30rdvblm82s";
+    };
+  }
+  {
+    goPackagePath = "github.com/jbenet/go-random";
+    fetch = {
+      type = "git";
+      url = https://github.com/jbenet/go-random;
+      rev = "384f606e91f542a98e779e652eed88051618f0f7";
+      sha256 = "0gcshzl9n3apzc0jaxqrjsc038yfrzfyhpdqgbpcnajin83l2msa";
+    };
+  }
+  {
+    goPackagePath = "github.com/jbenet/go-random-files";
+    fetch = {
+      type = "git";
+      url = https://github.com/jbenet/go-random-files;
+      rev = "737479700b40b4b50e914e963ce8d9d44603e3c8";
+      sha256 = "1klpdc4qkrfy31r7qh00fcz42blswzabmcnry9byd5adhszxj9bw";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/golang-lru";
+    fetch = {
+      type = "git";
+      url = https://github.com/hashicorp/golang-lru;
+      rev = "0a025b7e63adc15a622f29b0b2c4c3848243bbf6";
+      sha256 = "1iq7lbpsz7ks052mpznmkf8s4k43p51z4dik2n9ivrxk666q2wxi";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "71a035914f99bb58fe82eac0f1289f10963d876c";
+      sha256 = "06m16c9vkwc8m2mcxcxa7p8mb26ikc810lgzd5m8k1r6lp3hc8wm";
+    };
+  }
+]
diff --git a/pkgs/applications/networking/ipfs-migrator/lru-repo-path-fix.patch b/pkgs/applications/networking/ipfs-migrator/lru-repo-path-fix.patch
new file mode 100644
index 00000000000..a933a7b5358
--- /dev/null
+++ b/pkgs/applications/networking/ipfs-migrator/lru-repo-path-fix.patch
@@ -0,0 +1,13 @@
+diff --git a/ipfs-1-to-2/go-datastore/lru/datastore.go b/ipfs-1-to-2/go-datastore/lru/datastore.go
+index 7eb18eb..cd8dcb7 100644
+--- a/ipfs-1-to-2/go-datastore/lru/datastore.go
++++ b/ipfs-1-to-2/go-datastore/lru/datastore.go
+@@ -3,7 +3,7 @@ package lru
+ import (
+ 	"errors"
+ 
+-	lru "github.com/ipfs/fs-repo-migrations/ipfs-1-to-2/golang-lru"
++	lru "github.com/hashicorp/golang-lru"
+ 
+ 	ds "github.com/ipfs/fs-repo-migrations/ipfs-1-to-2/go-datastore"
+ 	dsq "github.com/ipfs/fs-repo-migrations/ipfs-1-to-2/go-datastore/query"
diff --git a/pkgs/applications/science/electronics/caneda/default.nix b/pkgs/applications/science/electronics/caneda/default.nix
index 2d6b12a5bb0..8f81a03044b 100644
--- a/pkgs/applications/science/electronics/caneda/default.nix
+++ b/pkgs/applications/science/electronics/caneda/default.nix
@@ -1,37 +1,20 @@
-{stdenv, fetchgit, qt4, cmake, libxml2, libxslt}:
-
-let
-
-  srcComponents = fetchgit {
-    url = git://caneda.git.sourceforge.net/gitroot/caneda/components;
-    rev = "34cd36b620e0dfc57ba2d2b6168734ea9a2cfa9a";
-    sha256 = "840f07921eecbf10e38e44e5c61c716295a16c98fbb75016d9a44e7dfee40e59";
-  };
-
-in
+{stdenv, fetchFromGitHub, cmake, qtbase, qttools, qtsvg, qwt }:
 
 stdenv.mkDerivation rec {
-  name = "caneda-git-2012-02-16";
-
-  src = fetchgit {
-    url = git://caneda.git.sourceforge.net/gitroot/caneda/caneda;
-    rev = "fff9e2f7988fe5d062548cafeda1e5cd660769d1";
-    sha256 = "dfbcac97f5a1b41ad9a63392394f37fb294cbf78c576673c9bc4a5370957b2c8";
+  name = "caneda-${version}";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "Caneda";
+    repo = "Caneda";
+    rev = version;
+    sha256 = "0hx8qid50j9xvg2kpbpqmbdyakgyjn6m373m1cvhp70v2gp1v8l2";
   };
 
-  hardeningDisable = [ "format" ];
-
-  buildInputs = [ cmake qt4 libxml2 libxslt ];
-
-  patches = [
-    ./gcc6.patch
-  ];
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ qtbase qttools qtsvg qwt ];
 
-  postInstall = ''
-    mkdir $out/share/caneda/components
-    cp -R ${srcComponents}/* $out/share/caneda/components
-    chmod u+w -R $out/share/caneda/components
-  '';
+  enableParallelBuilding = true;
 
   meta = {
     description = "Open source EDA software focused on easy of use and portability";
diff --git a/pkgs/applications/science/math/mathematica/default.nix b/pkgs/applications/science/math/mathematica/default.nix
index 1e23cfea27f..1c86097f2ee 100644
--- a/pkgs/applications/science/math/mathematica/default.nix
+++ b/pkgs/applications/science/math/mathematica/default.nix
@@ -3,6 +3,7 @@
 , patchelf
 , requireFile
 , alsaLib
+, dbus
 , fontconfig
 , freetype
 , gcc
@@ -12,6 +13,7 @@
 , opencv
 , openssl
 , unixODBC
+, xkeyboard_config
 , xorg
 , zlib
 , libxml2
@@ -26,7 +28,7 @@ let
       throw "Mathematica requires i686-linux or x86_64 linux";
 in
 stdenv.mkDerivation rec {
-  version = "11.0.1";
+  version = "11.2.0";
 
   name = "mathematica-${version}";
 
@@ -37,7 +39,7 @@ stdenv.mkDerivation rec {
       already part of the store. Find the file on your Mathematica CD
       and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
     '';
-    sha256 = "1qqwz8gbw74rnnyirpbdanwx3d25s4x0i4zc7bs6kp959x66cdkw";
+    sha256 = "4a1293cc1c404303aa1cab1bd273c7be151d37ac5ed928fbbb18e9c5ab2d8df9";
   };
 
   buildInputs = [
@@ -45,6 +47,7 @@ stdenv.mkDerivation rec {
     patchelf
     alsaLib
     coreutils
+    dbus
     fontconfig
     freetype
     gcc.cc
@@ -54,6 +57,7 @@ stdenv.mkDerivation rec {
     opencv
     openssl
     unixODBC
+    xkeyboard_config
     libxml2
     libuuid
     zlib
@@ -100,6 +104,12 @@ stdenv.mkDerivation rec {
     for path in mathematica MathKernel Mathematica WolframKernel wolfram math; do
       sed -i -e 's#export LD_LIBRARY_PATH$#export LD_LIBRARY_PATH=${zlib}/lib:\''${LD_LIBRARY_PATH}#' $path
     done
+
+    # Fix xkeyboard config path for Qt
+    for path in mathematica Mathematica; do
+      line=$(grep -n QT_PLUGIN_PATH $path | sed 's/:.*//')
+      sed -i -e "$line iexport QT_XKB_CONFIG_ROOT=\"${xkeyboard_config}/share/X11/xkb\"" $path
+    done
   '';
 
   preFixup = ''
diff --git a/pkgs/applications/window-managers/wtftw/default.nix b/pkgs/applications/window-managers/wtftw/default.nix
index 4a1404b711a..598bd23c164 100644
--- a/pkgs/applications/window-managers/wtftw/default.nix
+++ b/pkgs/applications/window-managers/wtftw/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchFromGitHub, rustPlatform, cargo, libXinerama, libX11, xlibs, pkgconfig }:
 
 rustPlatform.buildRustPackage rec {
-  name = "wtftw-0.0pre20161001";
+  name = "wtftw-0.0pre20170921";
   src = fetchFromGitHub {
     owner = "kintaro";
     repo = "wtftw";
-    rev = "b72a1bd24430a614d953d6ecf61732805277cc0c";
-    sha256 = "1ajxkncqh4azyhmsdyk07r1kbhwv81vl1ix3w4iaz8cyln4gs0kp";
+    rev = "13712d4c051938520b90b6639d4ff813f6fe5f48";
+    sha256 = "1r74nhcwiy2rmifzjhdal3jcqz4jz48nfvhdyw4gasa6nxp3msdl";
   };
 
   depsSha256 = "0z7h8ybh2db3xl8qxbzby5lncdaijixzmbn1j8a45lbky1xiix71";
@@ -25,7 +25,7 @@ rustPlatform.buildRustPackage rec {
     cp -p target/release/wtftw $out/bin/
     echo "[Desktop Entry]
       Name=wtftw
-      Exec=/bin/wtftw
+      Exec=$out/bin/wtftw
       Type=XSession
       DesktopName=wtftw" > $out/share/xsessions/wtftw.desktop
   '';
diff --git a/pkgs/build-support/fetchpatch/default.nix b/pkgs/build-support/fetchpatch/default.nix
index a9bfac320fb..e3159d20530 100644
--- a/pkgs/build-support/fetchpatch/default.nix
+++ b/pkgs/build-support/fetchpatch/default.nix
@@ -27,4 +27,4 @@ fetchurl ({
       "$tmpfile" > "$out"
     ${args.postFetch or ""}
   '';
-} // builtins.removeAttrs args ["stripLen" "addPrefixes" "excludes"])
+} // builtins.removeAttrs args ["stripLen" "addPrefixes" "excludes" "postFetch"])
diff --git a/pkgs/development/compilers/crystal/default.nix b/pkgs/development/compilers/crystal/default.nix
index ae94a76ab23..6b817d06553 100644
--- a/pkgs/development/compilers/crystal/default.nix
+++ b/pkgs/development/compilers/crystal/default.nix
@@ -1,81 +1,71 @@
-{ stdenv, fetchurl, boehmgc, libatomic_ops, pcre, libevent, libiconv, llvm_4, makeWrapper }:
+{ stdenv, fetchurl, boehmgc, libatomic_ops, pcre, libevent, libiconv, llvm, makeWrapper }:
 
 stdenv.mkDerivation rec {
-  version = "0.23.0";
-  name = "crystal-${version}-1";
-  arch =
-    {
-      "x86_64-linux" = "linux-x86_64";
-      "i686-linux" = "linux-i686";
-      "x86_64-darwin" = "darwin-x86_64";
-    }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
-
-  prebuiltBinary = fetchurl {
-    url = "https://github.com/crystal-lang/crystal/releases/download/${version}/crystal-${version}-1-${arch}.tar.gz";
-    sha256 =
-      {
-        "x86_64-linux" = "0nhs7swbll8hrk15kmmywngkhij80x62axiskb1gjmiwvzhlh0qx";
-        "i686-linux" = "03xp8d3lqflzzm26lpdn4yavj87qzgd6xyrqxp2pn9ybwrq8fx8a";
-        "x86_64-darwin" = "1prz6c1gs8z7dgpdy2id2mjn1c8f5p2bf9b39985bav448njbyjz";
-      }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
-  };
+  name = "crystal-${version}";
+  version = "0.23.1";
 
   src = fetchurl {
     url = "https://github.com/crystal-lang/crystal/archive/${version}.tar.gz";
-    sha256 = "05ymwmjkl1b4m888p725kybpiap5ag2vj8l07d59j02inm5r0rcv";
+    sha256 = "8cf1b9a4eab29fca2f779ea186ae18f7ce444ce189c621925fa1a0c61dd5ff55";
+  };
+
+  prebuiltName = "crystal-0.23.0-1";
+  prebuiltSrc = let arch = {
+    "x86_64-linux" = "linux-x86_64";
+    "i686-linux" = "linux-i686";
+    "x86_64-darwin" = "darwin-x86_64";
+  }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
+  in fetchurl {
+    url = "https://github.com/crystal-lang/crystal/releases/download/0.23.0/${prebuiltName}-${arch}.tar.gz";
+    sha256 = {
+      "x86_64-linux" = "0nhs7swbll8hrk15kmmywngkhij80x62axiskb1gjmiwvzhlh0qx";
+      "i686-linux" = "03xp8d3lqflzzm26lpdn4yavj87qzgd6xyrqxp2pn9ybwrq8fx8a";
+      "x86_64-darwin" = "1prz6c1gs8z7dgpdy2id2mjn1c8f5p2bf9b39985bav448njbyjz";
+    }."${stdenv.system}";
   };
 
+  srcs = [ src prebuiltSrc ];
+
   # crystal on Darwin needs libiconv to build
-  buildInputs = [
-    boehmgc libatomic_ops pcre libevent llvm_4 makeWrapper
+  libs = [
+    boehmgc libatomic_ops pcre libevent
   ] ++ stdenv.lib.optionals stdenv.isDarwin [
     libiconv
   ];
 
-  libPath = stdenv.lib.makeLibraryPath ([
-    boehmgc libatomic_ops pcre libevent
-  ] ++ stdenv.lib.optionals stdenv.isDarwin [
-    libiconv
-  ]);
+  nativeBuildInputs = [ makeWrapper ];
 
-  unpackPhase = ''
-    tar zxf ${src}
-    tar zxf ${prebuiltBinary}
-  '';
+  buildInputs = libs ++ [ llvm ];
+
+  libPath = stdenv.lib.makeLibraryPath libs;
 
-  sourceRoot = ".";
+  sourceRoot = "${name}";
 
   fixPrebuiltBinary = if stdenv.isDarwin then ''
-    wrapProgram $(pwd)/crystal-${version}-1/embedded/bin/crystal \
+    wrapProgram ../${prebuiltName}/embedded/bin/crystal \
         --suffix DYLD_LIBRARY_PATH : $libPath
   ''
   else ''
     patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
-      crystal-${version}-1/embedded/bin/crystal
+      ../${prebuiltName}/embedded/bin/crystal
     patchelf --set-rpath ${ stdenv.lib.makeLibraryPath [ stdenv.cc.cc ] } \
-      crystal-${version}-1/embedded/bin/crystal
+      ../${prebuiltName}/embedded/bin/crystal
   '';
 
-  buildPhase = ''
-    # patch the script which launches the prebuilt compiler
-    substituteInPlace $(pwd)/crystal-${version}-1/bin/crystal --replace \
-      "/usr/bin/env bash" "${stdenv.shell}"
-    substituteInPlace $(pwd)/crystal-${version}/bin/crystal --replace \
-      "/usr/bin/env bash" "${stdenv.shell}"
-
+  preBuild = ''
+    patchShebangs bin/crystal
+    patchShebangs ../${prebuiltName}/bin/crystal
     ${fixPrebuiltBinary}
-
-    cd crystal-${version}
-    make release=1 PATH="../crystal-${version}-1/bin:$PATH"
-    make doc
+    export PATH="$(pwd)/../${prebuiltName}/bin:$PATH"
   '';
 
+  makeFlags = [ "CRYSTAL_CONFIG_VERSION=${version}" "release=1" "all" "doc" ];
+
   installPhase = ''
     install -Dm755 .build/crystal $out/bin/crystal
     wrapProgram $out/bin/crystal \
         --suffix CRYSTAL_PATH : $out/lib/crystal \
         --suffix LIBRARY_PATH : $libPath
-
     install -dm755 $out/lib/crystal
     cp -r src/* $out/lib/crystal/
 
@@ -93,12 +83,13 @@ stdenv.mkDerivation rec {
 
   dontStrip = true;
 
+  enableParallelBuilding = true;
+
   meta = {
     description = "A compiled language with Ruby like syntax and type inference";
     homepage = https://crystal-lang.org/;
     license = stdenv.lib.licenses.asl20;
-    maintainers = with stdenv.lib.maintainers; [ sifmelcara ];
+    maintainers = with stdenv.lib.maintainers; [ sifmelcara david50407 ];
     platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
   };
 }
-
diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix
index 2ee7d2b7e11..85004767e58 100644
--- a/pkgs/development/compilers/sbcl/default.nix
+++ b/pkgs/development/compilers/sbcl/default.nix
@@ -9,11 +9,11 @@
 
 stdenv.mkDerivation rec {
   name    = "sbcl-${version}";
-  version = "1.3.21";
+  version = "1.4.0";
 
   src = fetchurl {
     url    = "mirror://sourceforge/project/sbcl/sbcl/${version}/${name}-source.tar.bz2";
-    sha256 = "13hmavfmxsqp2s89aa6kljpgjm6c2063bgrz0maq1ms1y3052k38";
+    sha256 = "0s87ax5hg9hz6b8kc9yrjckgz56s9iv96l2dcq216cbqkykrrm88";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/interpreters/elixir/generic-builder.nix b/pkgs/development/interpreters/elixir/generic-builder.nix
index 8f83a338484..78598ce3d81 100644
--- a/pkgs/development/interpreters/elixir/generic-builder.nix
+++ b/pkgs/development/interpreters/elixir/generic-builder.nix
@@ -22,6 +22,8 @@ in
 
     buildInputs = [ erlang rebar makeWrapper ];
 
+    LOCALE_ARCHIVE = stdenv.lib.optionalString stdenv.isLinux
+      "${pkgs.glibcLocales}/lib/locale/locale-archive";
     LANG = "en_US.UTF-8";
     LC_TYPE = "en_US.UTF-8";
 
@@ -30,8 +32,8 @@ in
     inherit debugInfo;
 
     buildFlags = if debugInfo
-     then "ERL_COMPILER_OPTIONS=debug_info"
-     else "";
+      then "ERL_COMPILER_OPTIONS=debug_info"
+      else "";
 
     preBuild = ''
       # The build process uses ./rebar. Link it to the nixpkgs rebar
diff --git a/pkgs/development/libraries/amrwb/default.nix b/pkgs/development/libraries/amrwb/default.nix
index e1c729050d4..15331c22599 100644
--- a/pkgs/development/libraries/amrwb/default.nix
+++ b/pkgs/development/libraries/amrwb/default.nix
@@ -1,33 +1,25 @@
-{stdenv, fetchurl, unzip}:
+{ stdenv, fetchurl, unzip }:
 
-stdenv.mkDerivation {
-  # The 'src' 7.0.0.3 expects amrwb 700, but there is only 710 available now,
-  # so I guess in 3gpp they updated to 7.1.0, but amrwb did not update the libraries.
-  # I guess amrwb uses the first version numbers to match those of 3gpp,
-  # so I set the name to 7.1.0.3 in this case
-  name = "amrwb-7.1.0.3";
+stdenv.mkDerivation rec {
+  name = "amrwb-${version}";
+  version = "11.0.0.0";
 
   srcAmr = fetchurl {
-    url = http://www.3gpp.org/ftp/Specs/latest/Rel-7/26_series/26204-710.zip;
-    sha256 = "1wnx72m20y8bdlyndyy8rskr0hi4llk1h1hcr34awxfmi9l4922i";
+    url = http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-b00.zip;
+    sha256 = "1v4zhs6f1mf1xkrzhljh05890in0rpr5d5pcak9h4igxhd2c91f8";
   };
 
   src = fetchurl {
-    url = http://www.penguin.cz/~utx/ftp/amr/amrwb-7.0.0.3.tar.bz2;
-    sha256 = "0nn94i3gw3d5fgks43wdhshdlhpd4rcrzj46f2vsby0viwkxxp8z";
+    url = "http://www.penguin.cz/~utx/ftp/amr/amrwb-${version}.tar.bz2";
+    sha256 = "1p6m9nd08mv525w14py9qzs9zwsa5i3vxf5bgcmcvc408jqmkbsw";
   };
 
   buildInputs = [ unzip ];
 
-  patchPhase = ''
-    sed -i s/26204-700/26204-710/g Makefile.am Makefile.in configure configure.ac \
-      prepare_sources.sh.in
-  '';
-
   configureFlags = [ "--cache-file=config.cache" "--with-downloader=true" ];
 
   postConfigure = ''
-    cp $srcAmr 26204-710.zip 
+    cp $srcAmr 26204-b00.zip
   '';
 
   meta = {
diff --git a/pkgs/development/libraries/libxdg-basedir/default.nix b/pkgs/development/libraries/libxdg-basedir/default.nix
index a8a6200519e..f0e63efc0d1 100644
--- a/pkgs/development/libraries/libxdg-basedir/default.nix
+++ b/pkgs/development/libraries/libxdg-basedir/default.nix
@@ -1,16 +1,24 @@
-{stdenv, fetchurl}:
+{stdenv, fetchurl, fetchpatch}:
 
 stdenv.mkDerivation rec {
-  name = "libxdg-basedir-1.0.2";
+  name = "libxdg-basedir-1.2.0";
   src = fetchurl {
-    url = "http://n.ethz.ch/student/nevillm/download/libxdg-basedir/${name}.tar.gz";
-    sha256 = "0fibbzba228gdk05lfi8cgfrsp80a2gnjbwka0pzpkig0fz8pp9i";
+    url = "https://nevill.ch/libxdg-basedir/downloads/${name}.tar.gz";
+    sha256 = "2757a949618742d80ac59ee2f0d946adc6e71576406cdf798e6ced507708cdf4";
   };
 
-  meta = {
-    homepage = http://n.ethz.ch/student/nevillm/download/libxdg-basedir/;
+  patches = [
+    # Overflow bug
+    (fetchpatch {
+      url = "https://github.com/devnev/libxdg-basedir/commit/14e000f696ef8b83264b0ca4407669bdb365fb23.patch";
+      sha256 = "0lpy1ijir0x0hhb0fz0w5vxy1wl1cw9kkd6gva0rkp41i6vrp2wq";
+    })
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/devnev/libxdg-basedir;
     description = "Implementation of the XDG Base Directory specification";
-    license = "BSD";
-    platforms = stdenv.lib.platforms.unix;
+    license = licenses.mit;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/default.nix b/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/default.nix
index 3610cded1c9..108a2c30f2d 100644
--- a/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/default.nix
+++ b/pkgs/development/ocaml-modules/ocaml-migrate-parsetree/default.nix
@@ -6,13 +6,13 @@ else
 
 stdenv.mkDerivation rec {
    name = "ocaml${ocaml.version}-ocaml-migrate-parsetree-${version}";
-   version = "1.0.4";
+   version = "1.0.5";
 
    src = fetchFromGitHub {
      owner = "let-def";
      repo = "ocaml-migrate-parsetree";
      rev = "v${version}";
-     sha256 = "0xwjll827anqngnqy746m2pd44mkhsaaqaqbir6z91xcqix2isvy";
+     sha256 = "1wj66nb16zijacpfrcm7yi0hlg315v71nxri3ia7r0sa3mlzxl34";
    };
 
    buildInputs = [ ocaml findlib ocamlbuild jbuilder ];
diff --git a/pkgs/development/tools/devtodo/default.nix b/pkgs/development/tools/devtodo/default.nix
new file mode 100644
index 00000000000..36c489b1171
--- /dev/null
+++ b/pkgs/development/tools/devtodo/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, readline, ncurses }:
+
+stdenv.mkDerivation rec {
+  name = "devtodo-${version}";
+  version = "0.1.20";
+
+  src = fetchurl {
+    url = "http://swapoff.org/files/devtodo/${name}.tar.gz";
+    sha256 = "029y173njydzlznxmdizrrz4wcky47vqhl87fsb7xjcz9726m71p";
+  };
+
+  buildInputs = [ readline ncurses ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://swapoff.org/devtodo1.html;
+    description = "A hierarchical command-line task manager";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.woffs ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/development/tools/jq/default.nix b/pkgs/development/tools/jq/default.nix
index a84b5f42640..491d65d8882 100644
--- a/pkgs/development/tools/jq/default.nix
+++ b/pkgs/development/tools/jq/default.nix
@@ -28,6 +28,9 @@ stdenv.mkDerivation rec {
   # jq is linked to libjq:
   configureFlags = stdenv.lib.optional (!stdenv.isDarwin) "LDFLAGS=-Wl,-rpath,\\\${libdir}";
 
+  installCheckPhase = "$out/bin/jq --help";
+  doInstallCheck = true;
+
   meta = with stdenv.lib; {
     description = ''A lightweight and flexible command-line JSON processor'';
     license = licenses.mit;
diff --git a/pkgs/development/tools/packer/default.nix b/pkgs/development/tools/packer/default.nix
index 11909ec1a19..f8dc96c2394 100644
--- a/pkgs/development/tools/packer/default.nix
+++ b/pkgs/development/tools/packer/default.nix
@@ -1,21 +1,19 @@
 { stdenv, buildGoPackage, fetchFromGitHub }:
 buildGoPackage rec {
   name = "packer-${version}";
-  version = "1.0.3";
+  version = "1.1.0";
 
-  goPackagePath = "github.com/mitchellh/packer";
+  goPackagePath = "github.com/hashicorp/packer";
 
   subPackages = [ "." ];
 
   src = fetchFromGitHub {
-    owner = "mitchellh";
+    owner = "hashicorp";
     repo = "packer";
     rev = "v${version}";
-    sha256 = "1bd0rv93pxlv58c0x1d4dsjq4pg5qwrm2p7qw83pca7izlncgvfr";
+    sha256 = "09hwq6dxyzhpl97akwbb02bjrisz9rf296avg5zj2p5qdsf4y777";
   };
 
-  goDeps = ./deps.nix;
-
   meta = with stdenv.lib; {
     description = "A tool for creating identical machine images for multiple platforms from a single source configuration";
     homepage    = https://www.packer.io;
diff --git a/pkgs/development/tools/packer/deps.nix b/pkgs/development/tools/packer/deps.nix
deleted file mode 100644
index 544facda015..00000000000
--- a/pkgs/development/tools/packer/deps.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-[
-  {
-    goPackagePath = "github.com/hashicorp/packer";
-    fetch = {
-      type = "git";
-      url = "https://github.com/hashicorp/packer";
-      rev = "07decf99adc272a386e3a013846248810d9aa690";
-      sha256 = "17rrzrlr48spadb9fymn1a0blqggs2mfmqbwfxs0pnw66mhd0fzz";
-    };
-  }
-]
diff --git a/pkgs/os-specific/linux/fscrypt/default.nix b/pkgs/os-specific/linux/fscrypt/default.nix
index 1564069a0a9..8efef4fac4b 100644
--- a/pkgs/os-specific/linux/fscrypt/default.nix
+++ b/pkgs/os-specific/linux/fscrypt/default.nix
@@ -4,7 +4,7 @@
 
 buildGoPackage rec {
   name = "fscrypt-${version}";
-  version = "0.2.1";
+  version = "0.2.2";
 
   goPackagePath = "github.com/google/fscrypt";
 
@@ -12,7 +12,7 @@ buildGoPackage rec {
     owner = "google";
     repo = "fscrypt";
     rev = version;
-    sha256 = "0ais6l0dxinnspi6cjnzyk55cdkfsz2bzbaybg6cb4q8a5kzaccq";
+    sha256 = "0a85vj1zsybhzvvgdvlw6ywh2a6inmrmc95pfa1js4vkx0ixf1kh";
   };
 
   buildInputs = [ libargon2 pam ];
diff --git a/pkgs/servers/emby/default.nix b/pkgs/servers/emby/default.nix
index 678fb42acd5..ad4ed0a11ad 100644
--- a/pkgs/servers/emby/default.nix
+++ b/pkgs/servers/emby/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "emby-${version}";
-  version = "3.2.32.0";
+  version = "3.2.33.0";
 
   src = fetchurl {
     url = "https://github.com/MediaBrowser/Emby/releases/download/${version}/Emby.Mono.zip";
-    sha256 = "0bwcqwh9g8yrkh1schfr30jf5m2w3r2raczq5x94vjfs8i6dmqh0";
+    sha256 = "1f8rcpbj6j46d46r6pmxvwz0mzxcjra47zx4ffvk8vi78m8kr56g";
   };
 
   buildInputs = with pkgs; [
diff --git a/pkgs/servers/sql/postgresql/pgjwt/default.nix b/pkgs/servers/sql/postgresql/pgjwt/default.nix
index b4955f8184c..3e01d9bfe2c 100644
--- a/pkgs/servers/sql/postgresql/pgjwt/default.nix
+++ b/pkgs/servers/sql/postgresql/pgjwt/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchFromGitHub }:
 stdenv.mkDerivation rec {
   name = "pgjwt-${version}";
-  version = "0.0.1";
+  version = "unstable-2017-04-24";
   src = fetchFromGitHub {
     owner = "michelp";
     repo = "pgjwt";
-    rev = "12a41eef15e6d3a22399e03178560d5174d496a3";
-    sha256 = "1dgx7kqkf9d7j5qj3xykx238xm8jg0s6c8h7zyl4lx8dmbz9sgsv";
+    rev = "546a2911027b716586e241be7fd4c6f1785237cd";
+    sha256 = "1riz0xvwb6y02j0fljbr9hcbqb2jqs4njlivmavy9ysbcrrv1vrf";
   };
   dontBuild = true;
   installPhase = ''
diff --git a/pkgs/servers/sql/postgresql/pgtap/default.nix b/pkgs/servers/sql/postgresql/pgtap/default.nix
new file mode 100644
index 00000000000..b17446ca778
--- /dev/null
+++ b/pkgs/servers/sql/postgresql/pgtap/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, postgresql, perl, perlPackages, which }:
+
+stdenv.mkDerivation rec {
+  name = "pgtap-${version}";
+  version = "0.97.0";
+
+  src = fetchFromGitHub {
+    owner = "theory";
+    repo = "pgtap";
+    rev = "v${version}";
+    sha256 = "1vzc8pxzi0rbywmrvx7i5awngsvzcz75i4jl9bk2vqr223chax6f";
+  };
+
+  nativeBuildInputs = [ postgresql perl perlPackages.TAPParserSourceHandlerpgTAP which ];
+
+  installPhase = ''
+    install -D {sql/pgtap--${version}.sql,pgtap.control} -t $out/share/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "pgTAP is a unit testing framework for PostgreSQL";
+    longDescription = ''
+      pgTAP is a unit testing framework for PostgreSQL written in PL/pgSQL and PL/SQL.
+      It includes a comprehensive collection of TAP-emitting assertion functions,
+      as well as the ability to integrate with other TAP-emitting test frameworks.
+      It can also be used in the xUnit testing style.
+    '';
+    maintainers = with maintainers; [ willibutz ];
+    homepage = http://pgtap.org;
+    inherit (postgresql.meta) platforms;
+  };
+}
diff --git a/pkgs/tools/admin/fastlane/Gemfile b/pkgs/tools/admin/fastlane/Gemfile
new file mode 100644
index 00000000000..1fa8dbca63b
--- /dev/null
+++ b/pkgs/tools/admin/fastlane/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'fastlane'
diff --git a/pkgs/tools/admin/fastlane/Gemfile.lock b/pkgs/tools/admin/fastlane/Gemfile.lock
new file mode 100644
index 00000000000..5f15a9d0455
--- /dev/null
+++ b/pkgs/tools/admin/fastlane/Gemfile.lock
@@ -0,0 +1,139 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    CFPropertyList (2.3.5)
+    addressable (2.5.2)
+      public_suffix (>= 2.0.2, < 4.0)
+    babosa (1.0.2)
+    claide (1.0.2)
+    colored (1.2)
+    colored2 (3.1.2)
+    commander-fastlane (4.4.5)
+      highline (~> 1.7.2)
+    declarative (0.0.10)
+    declarative-option (0.1.0)
+    domain_name (0.5.20170404)
+      unf (>= 0.0.5, < 1.0.0)
+    dotenv (2.2.1)
+    excon (0.59.0)
+    faraday (0.13.1)
+      multipart-post (>= 1.2, < 3)
+    faraday-cookie_jar (0.0.6)
+      faraday (>= 0.7.4)
+      http-cookie (~> 1.0.0)
+    faraday_middleware (0.12.2)
+      faraday (>= 0.7.4, < 1.0)
+    fastimage (2.1.0)
+    fastlane (2.60.1)
+      CFPropertyList (>= 2.3, < 3.0.0)
+      addressable (>= 2.3, < 3.0.0)
+      babosa (>= 1.0.2, < 2.0.0)
+      bundler (>= 1.12.0, < 2.0.0)
+      colored
+      commander-fastlane (>= 4.4.5, < 5.0.0)
+      dotenv (>= 2.1.1, < 3.0.0)
+      excon (>= 0.45.0, < 1.0.0)
+      faraday (~> 0.9)
+      faraday-cookie_jar (~> 0.0.6)
+      faraday_middleware (~> 0.9)
+      fastimage (>= 2.1.0, < 3.0.0)
+      gh_inspector (>= 1.0.1, < 2.0.0)
+      google-api-client (>= 0.13.1, < 0.14.0)
+      highline (>= 1.7.2, < 2.0.0)
+      json (< 3.0.0)
+      mini_magick (~> 4.5.1)
+      multi_json
+      multi_xml (~> 0.5)
+      multipart-post (~> 2.0.0)
+      plist (>= 3.1.0, < 4.0.0)
+      public_suffix (~> 2.0.0)
+      rubyzip (>= 1.1.0, < 2.0.0)
+      security (= 0.1.3)
+      slack-notifier (>= 1.3, < 2.0.0)
+      terminal-notifier (>= 1.6.2, < 2.0.0)
+      terminal-table (>= 1.4.5, < 2.0.0)
+      tty-screen (~> 0.5.0)
+      word_wrap (~> 1.0.0)
+      xcodeproj (>= 1.5.0, < 2.0.0)
+      xcpretty (>= 0.2.4, < 1.0.0)
+      xcpretty-travis-formatter (>= 0.0.3)
+    gh_inspector (1.0.3)
+    google-api-client (0.13.6)
+      addressable (~> 2.5, >= 2.5.1)
+      googleauth (~> 0.5)
+      httpclient (>= 2.8.1, < 3.0)
+      mime-types (~> 3.0)
+      representable (~> 3.0)
+      retriable (>= 2.0, < 4.0)
+    googleauth (0.5.3)
+      faraday (~> 0.12)
+      jwt (~> 1.4)
+      logging (~> 2.0)
+      memoist (~> 0.12)
+      multi_json (~> 1.11)
+      os (~> 0.9)
+      signet (~> 0.7)
+    highline (1.7.8)
+    http-cookie (1.0.3)
+      domain_name (~> 0.5)
+    httpclient (2.8.3)
+    json (2.1.0)
+    jwt (1.5.6)
+    little-plugger (1.1.4)
+    logging (2.2.2)
+      little-plugger (~> 1.1)
+      multi_json (~> 1.10)
+    memoist (0.16.0)
+    mime-types (3.1)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2016.0521)
+    mini_magick (4.5.1)
+    multi_json (1.12.2)
+    multi_xml (0.6.0)
+    multipart-post (2.0.0)
+    nanaimo (0.2.3)
+    os (0.9.6)
+    plist (3.3.0)
+    public_suffix (2.0.5)
+    representable (3.0.4)
+      declarative (< 0.1.0)
+      declarative-option (< 0.2.0)
+      uber (< 0.2.0)
+    retriable (3.1.1)
+    rouge (2.0.7)
+    rubyzip (1.2.1)
+    security (0.1.3)
+    signet (0.7.3)
+      addressable (~> 2.3)
+      faraday (~> 0.9)
+      jwt (~> 1.5)
+      multi_json (~> 1.10)
+    slack-notifier (1.5.1)
+    terminal-notifier (1.8.0)
+    terminal-table (1.8.0)
+      unicode-display_width (~> 1.1, >= 1.1.1)
+    tty-screen (0.5.0)
+    uber (0.1.0)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.7.4)
+    unicode-display_width (1.3.0)
+    word_wrap (1.0.0)
+    xcodeproj (1.5.2)
+      CFPropertyList (~> 2.3.3)
+      claide (>= 1.0.2, < 2.0)
+      colored2 (~> 3.1)
+      nanaimo (~> 0.2.3)
+    xcpretty (0.2.8)
+      rouge (~> 2.0.7)
+    xcpretty-travis-formatter (0.0.4)
+      xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  fastlane
+
+BUNDLED WITH
+   1.14.6
diff --git a/pkgs/tools/admin/fastlane/default.nix b/pkgs/tools/admin/fastlane/default.nix
new file mode 100644
index 00000000000..b9008c919bf
--- /dev/null
+++ b/pkgs/tools/admin/fastlane/default.nix
@@ -0,0 +1,17 @@
+{ lib, bundlerEnv, ruby }:
+
+bundlerEnv rec {
+  inherit ruby;
+  pname = "fastlane";
+  gemdir = ./.;
+
+  meta = with lib; {
+    description     = "A tool to automate building and releasing iOS and Android apps";
+    longDescription = "fastlane is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application.";
+    homepage        = https://github.com/fastlane/fastlane;
+    license         = licenses.mit;
+    maintainers     = with maintainers; [
+      peterromfeldhk
+    ];
+  };
+}
diff --git a/pkgs/tools/admin/fastlane/gemset.nix b/pkgs/tools/admin/fastlane/gemset.nix
new file mode 100644
index 00000000000..0d9c1f55835
--- /dev/null
+++ b/pkgs/tools/admin/fastlane/gemset.nix
@@ -0,0 +1,469 @@
+{
+  addressable = {
+    dependencies = ["public_suffix"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
+      type = "gem";
+    };
+    version = "2.5.2";
+  };
+  babosa = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05rgxg4pz4bc4xk34w5grv0yp1j94wf571w84lf3xgqcbs42ip2f";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  CFPropertyList = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06dddgcai6nay552h8wmnb2m93xx5hni48s16vkbf9vbym4nfw5x";
+      type = "gem";
+    };
+    version = "2.3.5";
+  };
+  claide = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0az54rp691hc42yl1xyix2cxv58byhaaf4gxbpghvvq29l476rzc";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  colored = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b0x5jmsyi0z69bm6sij1k89z7h0laag3cb4mdn7zkl9qmxb90lx";
+      type = "gem";
+    };
+    version = "1.2";
+  };
+  colored2 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jlbqa9q4mvrm73aw9mxh23ygzbjiqwisl32d8szfb5fxvbjng5i";
+      type = "gem";
+    };
+    version = "3.1.2";
+  };
+  commander-fastlane = {
+    dependencies = ["highline"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04gpg733wv878acvrzp4kc3k934v10l3v8bcz3fjq5imjsrjdnbp";
+      type = "gem";
+    };
+    version = "4.4.5";
+  };
+  declarative = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0642xvwzzbgi3kp1bg467wma4g3xqrrn0sk369hjam7w579gnv5j";
+      type = "gem";
+    };
+    version = "0.0.10";
+  };
+  declarative-option = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g4ibxq566f1frnhdymzi9hxxcm4g2gw4n21mpjk2mhwym4q6l0p";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  domain_name = {
+    dependencies = ["unf"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12hs8yijhak7p2hf1xkh98g0mnp5phq3mrrhywzaxpwz1gw5r3kf";
+      type = "gem";
+    };
+    version = "0.5.20170404";
+  };
+  dotenv = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pgzlvs0sswnqlgfm9gkz2hlhkc0zd3vnlp2vglb1wbgnx37pjjv";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  excon = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0mnc9lqlzwqj5ayp0lh7impisqm55mdg3mw5q4gi9yjic5sidc40";
+      type = "gem";
+    };
+    version = "0.59.0";
+  };
+  faraday = {
+    dependencies = ["multipart-post"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gyqsj7vlqynwvivf9485zwmcj04v1z7gq362z0b8zw2zf4ag0hw";
+      type = "gem";
+    };
+    version = "0.13.1";
+  };
+  faraday-cookie_jar = {
+    dependencies = ["faraday" "http-cookie"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6";
+      type = "gem";
+    };
+    version = "0.0.6";
+  };
+  faraday_middleware = {
+    dependencies = ["faraday"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
+      type = "gem";
+    };
+    version = "0.12.2";
+  };
+  fastimage = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fh80nwjxm63phcdg55haz9q877fxgvnkazjihaqbf8ginn6g00v";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  fastlane = {
+    dependencies = ["CFPropertyList" "addressable" "babosa" "colored" "commander-fastlane" "dotenv" "excon" "faraday" "faraday-cookie_jar" "faraday_middleware" "fastimage" "gh_inspector" "google-api-client" "highline" "json" "mini_magick" "multi_json" "multi_xml" "multipart-post" "plist" "public_suffix" "rubyzip" "security" "slack-notifier" "terminal-notifier" "terminal-table" "tty-screen" "word_wrap" "xcodeproj" "xcpretty" "xcpretty-travis-formatter"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sg8xh1rjigiq438knkpdq685kyw34ki3h7baj65qh9mkkc8drxy";
+      type = "gem";
+    };
+    version = "2.60.1";
+  };
+  gh_inspector = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lxvp8xpjd2cazzcp90phy567spp4v41bnk9awgx8absndv70k1x";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  google-api-client = {
+    dependencies = ["addressable" "googleauth" "httpclient" "mime-types" "representable" "retriable"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ac9qa0kwnirkvwz2w9zf07lqcgbmnvgd1wg8xxyjbadwsbpyf1y";
+      type = "gem";
+    };
+    version = "0.13.6";
+  };
+  googleauth = {
+    dependencies = ["faraday" "jwt" "logging" "memoist" "multi_json" "os" "signet"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xpmvrzhczak25nm0k3r9aa083lmfnzi94mir3g1xyrgzz66vxli";
+      type = "gem";
+    };
+    version = "0.5.3";
+  };
+  highline = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nf5lgdn6ni2lpfdn4gk3gi47fmnca2bdirabbjbz1fk9w4p8lkr";
+      type = "gem";
+    };
+    version = "1.7.8";
+  };
+  http-cookie = {
+    dependencies = ["domain_name"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
+      type = "gem";
+    };
+    version = "1.0.3";
+  };
+  httpclient = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
+      type = "gem";
+    };
+    version = "2.8.3";
+  };
+  json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  jwt = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "124zz1142bi2if7hl5pcrcamwchv4icyr5kaal9m2q6wqbdl6aw4";
+      type = "gem";
+    };
+    version = "1.5.6";
+  };
+  little-plugger = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
+      type = "gem";
+    };
+    version = "1.1.4";
+  };
+  logging = {
+    dependencies = ["little-plugger" "multi_json"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
+      type = "gem";
+    };
+    version = "2.2.2";
+  };
+  memoist = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pq8fhqh8w25qcw9v3vzfb0i6jp0k3949ahxc3wrwz2791dpbgbh";
+      type = "gem";
+    };
+    version = "0.16.0";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m";
+      type = "gem";
+    };
+    version = "3.1";
+  };
+  mime-types-data = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm";
+      type = "gem";
+    };
+    version = "3.2016.0521";
+  };
+  mini_magick = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1a59k5l29vj060yscaqk370rg5vyr132kbw6x3zar7khzjqjqd8p";
+      type = "gem";
+    };
+    version = "4.5.1";
+  };
+  multi_json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1raim9ddjh672m32psaa9niw67ywzjbxbdb8iijx3wv9k5b0pk2x";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
+  multi_xml = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  multipart-post = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  nanaimo = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0z6rbji02x75vm5jw4hbpp75khp4z5yfgbaz1h9l8aa00hqf0fxd";
+      type = "gem";
+    };
+    version = "0.2.3";
+  };
+  os = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1llv8w3g2jwggdxr5a5cjkrnbbfnvai3vxacxxc0fy84xmz3hymz";
+      type = "gem";
+    };
+    version = "0.9.6";
+  };
+  plist = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0k0pyqrjcz9kn1b3ahsfs9aqym7s7yzz0vavya0zn0mca3jw2zqc";
+      type = "gem";
+    };
+    version = "3.3.0";
+  };
+  public_suffix = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "040jf98jpp6w140ghkhw2hvc1qx41zvywx5gj7r2ylr1148qnj7q";
+      type = "gem";
+    };
+    version = "2.0.5";
+  };
+  representable = {
+    dependencies = ["declarative" "declarative-option" "uber"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qm9rgi1j5a6nv726ka4mmixivlxfsg91h8rpp72wwd4vqbkkm07";
+      type = "gem";
+    };
+    version = "3.0.4";
+  };
+  retriable = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pnriyn9zh120hxm92vb12hfsf7c98nawyims1shxj3ldpl0l3ar";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  rouge = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sfikq1q8xyqqx690iiz7ybhzx87am4w50w8f2nq36l3asw4x89d";
+      type = "gem";
+    };
+    version = "2.0.7";
+  };
+  rubyzip = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06js4gznzgh8ac2ldvmjcmg9v1vg9llm357yckkpylaj6z456zqz";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  security = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ryjxs0j66wrbky2c08yf0mllwalvpg12rpxzbdx2rdhj3cbrlxa";
+      type = "gem";
+    };
+    version = "0.1.3";
+  };
+  signet = {
+    dependencies = ["addressable" "faraday" "jwt" "multi_json"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "149668991xqibvm8kvl10kzy891yd6f994b4gwlx6c3vl24v5jq6";
+      type = "gem";
+    };
+    version = "0.7.3";
+  };
+  slack-notifier = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xavibxh00gy62mm79l6id9l2fldjmdqifk8alqfqy5z38ffwah6";
+      type = "gem";
+    };
+    version = "1.5.1";
+  };
+  terminal-notifier = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0vy75sbq236v1p83jj6r3a9d52za5lqj2vj24np9lrszdczm9zcb";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  terminal-table = {
+    dependencies = ["unicode-display_width"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
+      type = "gem";
+    };
+    version = "1.8.0";
+  };
+  tty-screen = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "005rpl9l1r9i7wypb4kv057y01fxqvanznx62msx6z451cfjsfn3";
+      type = "gem";
+    };
+    version = "0.5.0";
+  };
+  uber = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1p1mm7mngg40x05z52md3mbamkng0zpajbzqjjwmsyw0zw3v9vjv";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  unf = {
+    dependencies = ["unf_ext"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  unf_ext = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14hr2dzqh33kqc0xchs8l05pf3kjcayvad4z1ip5rdjxrkfk8glb";
+      type = "gem";
+    };
+    version = "0.0.7.4";
+  };
+  unicode-display_width = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12pi0gwqdnbx1lv5136v3vyr0img9wr0kxcn4wn54ipq4y41zxq8";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  word_wrap = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1iyc5bc7dbgsd8j3yk1i99ral39f23l6wapi0083fbl19hid8mpm";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  xcodeproj = {
+    dependencies = ["CFPropertyList" "claide" "colored2" "nanaimo"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0v40167wxhjfczjqp7axvblivrzgbmqldaj9vb15pw45qh6xly51";
+      type = "gem";
+    };
+    version = "1.5.2";
+  };
+  xcpretty = {
+    dependencies = ["rouge"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1b8x9m53a1hbw0lamffjm4m1ydigj3azl97jc5w7prv1bm27s2y3";
+      type = "gem";
+    };
+    version = "0.2.8";
+  };
+  xcpretty-travis-formatter = {
+    dependencies = ["xcpretty"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1wn5pcxja1jkc8y5b6s3pks5inc1vmjkq7fqmlbkl39z8l1vdis2";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/tools/cd-dvd/xorriso/default.nix b/pkgs/tools/cd-dvd/xorriso/default.nix
index b91a59006e9..8f2577c4344 100644
--- a/pkgs/tools/cd-dvd/xorriso/default.nix
+++ b/pkgs/tools/cd-dvd/xorriso/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, libcdio, zlib, bzip2, readline, acl, attr }:
+{ fetchurl, stdenv, libcdio, zlib, bzip2, readline, acl, attr, libiconv }:
 
 stdenv.mkDerivation rec {
   name = "xorriso-1.4.8";
@@ -10,8 +10,8 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  buildInputs = [ libcdio zlib bzip2 readline attr ]
-    ++ stdenv.lib.optional stdenv.isLinux acl;
+  buildInputs = [ libcdio zlib bzip2 readline libiconv ]
+    ++ stdenv.lib.optionals stdenv.isLinux [ acl attr ];
 
   meta = with stdenv.lib; {
     description = "ISO 9660 Rock Ridge file system manipulator";
diff --git a/pkgs/tools/misc/bonfire/default.nix b/pkgs/tools/misc/bonfire/default.nix
new file mode 100644
index 00000000000..7937a212951
--- /dev/null
+++ b/pkgs/tools/misc/bonfire/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, python3Packages, fetchFromGitHub }:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  version = "2017-01-19";
+  pname = "bonfire";
+  name = "${pname}-unstable-${version}";
+
+  # use latest git version with --endpoint flag
+  # https://github.com/blue-yonder/bonfire/pull/18
+  src = fetchFromGitHub {
+    owner = "blue-yonder";
+    repo = "${pname}";
+    rev = "d0af9ca10394f366cfa3c60f0741f1f0918011c2";
+    sha256 = "193zcvzbhxwwkwbgmnlihhhazwkajycxf4r71jz1m12w301sjhq5";
+  };
+
+  postPatch = ''
+    # https://github.com/blue-yonder/bonfire/pull/24
+    substituteInPlace requirements.txt \
+      --replace "arrow>=0.5.4,<0.8" "arrow>=0.5.4,<0.11" \
+      --replace "keyring>=9,<10"    "keyring>=9,<11"
+    # pip fails when encountering the git hash for the package version
+    substituteInPlace setup.py \
+      --replace "version=version," "version='${version}',"
+    # remove extraneous files  
+    substituteInPlace setup.cfg \
+      --replace "data_files = *.rst, *.txt" ""
+  '';
+
+  buildInputs = [ httpretty pytest pytestcov ];
+
+  propagatedBuildInputs = [ arrow click keyring parsedatetime requests six termcolor ];
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.python.org/pypi/bonfire;
+    description = "CLI Graylog Client with Follow Mode";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.womfoo ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/tools/misc/unicode/default.nix b/pkgs/tools/misc/unicode/default.nix
index 2b1f5da6e2f..d2a4ed39e9a 100644
--- a/pkgs/tools/misc/unicode/default.nix
+++ b/pkgs/tools/misc/unicode/default.nix
@@ -12,8 +12,8 @@ python3Packages.buildPythonApplication rec {
   };
 
   ucdtxt = fetchurl {
-    url = http://www.unicode.org/Public/11.0.0/ucd/UnicodeData-11.0.0d1.txt;
-    sha256 = "0y9l0sap7yq7c7c8d0fivzycqaw0zncbxzh1inggg42308z974rn";
+    url = http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt;
+    sha256 = "1cfak1j753zcrbgixwgppyxhm4w8vda8vxhqymi7n5ljfi6kwhjj";
   };
 
   postFixup = ''
diff --git a/pkgs/tools/security/kbfs/default.nix b/pkgs/tools/security/kbfs/default.nix
index 7b3e7d99a43..ba024328ba5 100644
--- a/pkgs/tools/security/kbfs/default.nix
+++ b/pkgs/tools/security/kbfs/default.nix
@@ -2,18 +2,18 @@
 
 buildGoPackage rec {
   name = "kbfs-${version}";
-  version = "20170922.f76290";
+  version = "20171004.40555d";
 
   goPackagePath = "github.com/keybase/kbfs";
-  subPackages = [ "kbfsfuse" ];
+  subPackages = [ "kbfsfuse" "kbfsgit/git-remote-keybase" ];
 
   dontRenameImports = true;
 
   src = fetchFromGitHub {
     owner = "keybase";
     repo = "kbfs";
-    rev = "f76290f6e1a8cbaa6046980c67c548fbff9e123a";
-    sha256 = "1v086wmc0hly4b91y6xndfdhj981n2yr6nnb3rl6f4kwx291ih54";
+    rev = "40555dbc9c93a05f3a82053860df30e45c7bd779";
+    sha256 = "08wj8fh1ja8kfzvbza5csy9mpfy39lifnzvfrnbj7vyyv88qc3h0";
   };
 
   buildFlags = [ "-tags production" ];
diff --git a/pkgs/tools/security/keybase-gui/default.nix b/pkgs/tools/security/keybase-gui/default.nix
index a45a6ea2a04..ce98740e89b 100644
--- a/pkgs/tools/security/keybase-gui/default.nix
+++ b/pkgs/tools/security/keybase-gui/default.nix
@@ -37,10 +37,10 @@ let
 in
 stdenv.mkDerivation rec {
   name = "keybase-gui-${version}";
-  version = "1.0.25-20170714172717.73f9070";
+  version = "1.0.33-20171003193427.d9ceb86ac";
   src = fetchurl {
     url = "https://s3.amazonaws.com/prerelease.keybase.io/linux_binaries/deb/keybase_${version}_amd64.deb";
-    sha256 = "0yrq18rrc30f7ymajvd71r29z1by7h6abyaxx2gmrg648qgc6zv4";
+    sha256 = "0sqani2fy5jzqmz35md1bdw2vwpx91l87b6s3x9z53halzq7vfy6";
   };
   phases = ["unpackPhase" "installPhase" "fixupPhase"];
   unpackPhase = ''
diff --git a/pkgs/tools/security/keybase/default.nix b/pkgs/tools/security/keybase/default.nix
index 229a45b8731..049867afcd7 100644
--- a/pkgs/tools/security/keybase/default.nix
+++ b/pkgs/tools/security/keybase/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   name = "keybase-${version}";
-  version = "1.0.30";
+  version = "1.0.33";
 
   goPackagePath = "github.com/keybase/client";
   subPackages = [ "go/keybase" ];
@@ -13,7 +13,7 @@ buildGoPackage rec {
     owner  = "keybase";
     repo   = "client";
     rev    = "v${version}";
-    sha256 = "0vivc71xfi4y3ydd29b17qxzi10r3a1ppmjjws6vrs0gz58bz1j8";
+    sha256 = "1zgvriyir2ga0p4ah9ia1sbl9ydnrnw5ggq4c1ya8gcfgn8vzdsf";
   };
 
   postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index ac875f6c9fe..7e18101db93 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -560,6 +560,8 @@ with pkgs;
 
   bonnie = callPackage ../tools/filesystems/bonnie { };
 
+  bonfire = callPackage ../tools/misc/bonfire { };
+
   container-linux-config-transpiler = callPackage ../development/tools/container-linux-config-transpiler { };
 
   djmount = callPackage ../tools/filesystems/djmount { };
@@ -675,6 +677,13 @@ with pkgs;
     libssl = openssl;
   };
 
+  axoloti = callPackage ../applications/audio/axoloti { };
+  dfu-util-axoloti = callPackage ../applications/audio/axoloti/dfu-util.nix { };
+  libusb1-axoloti = callPackage ../applications/audio/axoloti/libusb1.nix {
+    inherit (darwin) libobjc;
+    inherit (darwin.apple_sdk.frameworks) IOKit;
+  };
+
   azureus = callPackage ../tools/networking/p2p/azureus { };
 
   backblaze-b2 = callPackage ../development/tools/backblaze-b2 { };
@@ -2031,6 +2040,8 @@ with pkgs;
 
   lprof = callPackage ../tools/graphics/lprof { };
 
+  fastlane = callPackage ../tools/admin/fastlane { };
+
   fatresize = callPackage ../tools/filesystems/fatresize {};
 
   fdk_aac = callPackage ../development/libraries/fdk-aac { };
@@ -2477,6 +2488,8 @@ with pkgs;
 
   pgjwt = callPackage ../servers/sql/postgresql/pgjwt {};
 
+  pgtap = callPackage ../servers/sql/postgresql/pgtap {};
+
   pigz = callPackage ../tools/compression/pigz { };
 
   pixz = callPackage ../tools/compression/pixz { };
@@ -2699,6 +2712,7 @@ with pkgs;
   iperf = iperf3;
 
   ipfs = callPackage ../applications/networking/ipfs { };
+  ipfs-migrator = callPackage ../applications/networking/ipfs-migrator { };
 
   ipmitool = callPackage ../tools/system/ipmitool {
     static = false;
@@ -3871,16 +3885,14 @@ with pkgs;
   pinentry = callPackage ../tools/security/pinentry {
     libcap = if stdenv.isDarwin then null else libcap;
     qt4 = null;
-    gtk2 = null;
-    gcr = gnome3.gcr;
   };
 
   pinentry_ncurses = pinentry.override {
-    gcr = null;
+    gtk2 = null;
   };
 
-  pinentry_gtk2 = pinentry_ncurses.override {
-    inherit gtk2;
+  pinentry_gnome = pinentry_ncurses.override {
+    gcr = gnome3.gcr;
   };
 
   pinentry_qt4 = pinentry_ncurses.override {
@@ -5411,7 +5423,9 @@ with pkgs;
     '';
   });
 
-  crystal = callPackage ../development/compilers/crystal { };
+  crystal = callPackage ../development/compilers/crystal {
+    llvm = llvm_4;
+  };
 
   devpi-client = callPackage ../development/tools/devpi-client {};
 
@@ -7081,6 +7095,8 @@ with pkgs;
 
   dejagnu = callPackage ../development/tools/misc/dejagnu { };
 
+  devtodo = callPackage ../development/tools/devtodo { };
+
   dfeet = callPackage ../development/tools/misc/d-feet { };
 
   dfu-programmer = callPackage ../development/tools/misc/dfu-programmer { };
@@ -14651,6 +14667,8 @@ with pkgs;
 
   gcolor2 = callPackage ../applications/graphics/gcolor2 { };
 
+  gcolor3 = callPackage ../applications/graphics/gcolor3 { };
+
   get_iplayer = callPackage ../applications/misc/get_iplayer {};
 
   getxbook = callPackage ../applications/misc/getxbook {};
@@ -18612,7 +18630,7 @@ with pkgs;
 
   eagle = callPackage ../applications/science/electronics/eagle { };
 
-  caneda = callPackage ../applications/science/electronics/caneda { };
+  caneda = libsForQt5.callPackage ../applications/science/electronics/caneda { };
 
   geda = callPackage ../applications/science/electronics/geda {
     guile = guile_2_0;
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 20a4a0d6452..91f69ca3a47 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -12858,11 +12858,11 @@ let self = _self // overrides; _self = with self; {
     };
   };
 
-  TAPParserSourceHandlerpgTAP = buildPerlModule {
-    name = "TAP-Parser-SourceHandler-pgTAP-3.30";
+  TAPParserSourceHandlerpgTAP = buildPerlModule rec {
+    name = "TAP-Parser-SourceHandler-pgTAP-3.33";
     src = fetchurl {
-      url = mirror://cpan/authors/id/D/DW/DWHEELER/TAP-Parser-SourceHandler-pgTAP-3.30.tar.gz;
-      sha256 = "08gadqf898r23sx07sn13555cp9zkwp8igjlh1fza2ycfivpfl9f";
+      url = "mirror://cpan/authors/id/D/DW/DWHEELER/${name}.tar.gz";
+      sha256 = "35q46y2hbp2ij5n9ir76lmspqj3n8gb0z9l5ipb5g7q90l160m4k";
     };
     meta = {
       homepage = http://search.cpan.org/dist/Tap-Parser-Sourcehandler-pgTAP/;