summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/maintainers.nix2
-rw-r--r--nixos/doc/manual/development/sources.xml10
-rwxr-xr-xnixos/maintainers/scripts/ec2/create-amis.sh15
-rw-r--r--nixos/modules/config/fonts/fontconfig-penultimate.nix221
-rw-r--r--nixos/modules/config/fonts/fontconfig.nix52
-rw-r--r--nixos/modules/rename.nix2
-rw-r--r--nixos/modules/virtualisation/amazon-options.nix8
-rw-r--r--nixos/modules/virtualisation/docker.nix12
-rw-r--r--nixos/modules/virtualisation/ec2-amis.nix32
-rw-r--r--nixos/tests/docker.nix17
-rw-r--r--pkgs/applications/editors/leo-editor/default.nix10
-rw-r--r--pkgs/applications/graphics/nomacs/default.nix66
-rw-r--r--pkgs/applications/graphics/nomacs/fix-appdata-install.patch13
-rw-r--r--pkgs/applications/misc/dmenu2/default.nix4
-rw-r--r--pkgs/applications/misc/doomseeker/default.nix8
-rw-r--r--pkgs/applications/misc/epdfview/default.nix20
-rw-r--r--pkgs/applications/misc/jp2a/default.nix13
-rw-r--r--pkgs/applications/networking/cluster/terraform/0.8.5.nix34
-rw-r--r--pkgs/applications/networking/corebird/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix176
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-cola/default.nix28
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-imerge/default.nix20
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-radar/default.nix6
-rw-r--r--pkgs/applications/version-management/gitkraken/default.nix27
-rw-r--r--pkgs/applications/version-management/src/default.nix4
-rw-r--r--pkgs/data/fonts/fontconfig-penultimate/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gspell/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gspell/src.nix6
-rw-r--r--pkgs/development/haskell-modules/default.nix6
-rw-r--r--pkgs/development/libraries/libappindicator/default.nix9
-rw-r--r--pkgs/development/libraries/openssl/default.nix15
-rw-r--r--pkgs/development/libraries/openssl/openssl-fix-cpuid_setup.patch105
-rw-r--r--pkgs/games/steam/runtime-wrapped.nix2
-rw-r--r--pkgs/os-specific/linux/kernel/linux-testing.nix6
-rw-r--r--pkgs/tools/filesystems/snapraid/default.nix14
-rw-r--r--pkgs/tools/misc/kt/default.nix22
-rw-r--r--pkgs/tools/networking/isync/unstable.nix6
-rw-r--r--pkgs/tools/networking/ua/default.nix31
-rw-r--r--pkgs/tools/networking/ua/deps.nix57
-rw-r--r--pkgs/top-level/all-packages.nix12
-rw-r--r--pkgs/top-level/release-small.nix2
41 files changed, 688 insertions, 419 deletions
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index e639eb5aefb..776b87c80f7 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -25,6 +25,7 @@
   aforemny = "Alexander Foremny <alexanderforemny@googlemail.com>";
   afranchuk = "Alex Franchuk <alex.franchuk@gmail.com>";
   aherrmann = "Andreas Herrmann <andreash87@gmx.ch>";
+  ahmedtd = "Taahir Ahmed <ahmed.taahir@gmail.com>";
   ak = "Alexander Kjeldaas <ak@formalprivacy.com>";
   akaWolf = "Artjom Vejsel <akawolf0@gmail.com>";
   akc = "Anders Claesson <akc@akc.is>";
@@ -521,6 +522,7 @@
   tvorog = "Marsel Zaripov <marszaripov@gmail.com>";
   twey = "James ‘Twey’ Kay <twey@twey.co.uk>";
   uralbash = "Svintsov Dmitry <root@uralbash.ru>";
+  utdemir = "Utku Demir <me@utdemir.com>";
   #urkud = "Yury G. Kudryashov <urkud+nix@ya.ru>"; inactive since 2012
   uwap = "uwap <me@uwap.name>";
   vandenoever = "Jos van den Oever <jos@vandenoever.info>";
diff --git a/nixos/doc/manual/development/sources.xml b/nixos/doc/manual/development/sources.xml
index 0b2528e9a77..a2896cd7a13 100644
--- a/nixos/doc/manual/development/sources.xml
+++ b/nixos/doc/manual/development/sources.xml
@@ -8,7 +8,7 @@
 
 <para>By default, NixOS’s <command>nixos-rebuild</command> command
 uses the NixOS and Nixpkgs sources provided by the
-<literal>nixos-unstable</literal> channel (kept in
+<literal>nixos</literal> channel (kept in
 <filename>/nix/var/nix/profiles/per-user/root/channels/nixos</filename>).
 To modify NixOS, however, you should check out the latest sources from
 Git.  This is as follows:
@@ -41,7 +41,7 @@ branch based on your current NixOS version:
 $ nixos-version
 17.09pre104379.6e0b727 (Hummingbird)
 
-$ git checkout -b local e3938c8
+$ git checkout -b local 6e0b727
 </screen>
 
 Or, to base your local branch on the latest version available in a
@@ -87,7 +87,11 @@ $ ln -s <replaceable>/my/sources</replaceable>/nixpkgs ~/.nix-defexpr/nixpkgs
 
 You may want to delete the symlink
 <filename>~/.nix-defexpr/channels_root</filename> to prevent root’s
-NixOS channel from clashing with your own tree.</para>
+NixOS channel from clashing with your own tree (this may break the
+command-not-found utility though). If you want to go back to the default
+state, you may just remove the <filename>~/.nix-defexpr</filename>
+directory completely, log out and log in again and it should have been
+recreated with a link to the root channels.</para>
 
 <!-- FIXME: not sure what this means.
 <para>You should not pass the base directory
diff --git a/nixos/maintainers/scripts/ec2/create-amis.sh b/nixos/maintainers/scripts/ec2/create-amis.sh
index 1e397b0f176..24ced8da531 100755
--- a/nixos/maintainers/scripts/ec2/create-amis.sh
+++ b/nixos/maintainers/scripts/ec2/create-amis.sh
@@ -3,21 +3,20 @@
 
 # To start with do: nix-shell -p awscli --run "aws configure"
 
-
+set -e
 set -o pipefail
-#set -x
-
-stateDir=${TMPDIR:-/tmp}/ec2-image
-echo "keeping state in $stateDir"
-mkdir -p $stateDir
 
 version=$(nix-instantiate --eval --strict '<nixpkgs>' -A lib.nixpkgsVersion | sed s/'"'//g)
 major=${version:0:5}
 echo "NixOS version is $version ($major)"
 
+stateDir=/var/tmp/ec2-image-$version
+echo "keeping state in $stateDir"
+mkdir -p $stateDir
+
 rm -f ec2-amis.nix
 
-types="hvm pv"
+types="hvm"
 stores="ebs s3"
 regions="eu-west-1 eu-west-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2 ca-central-1 ap-southeast-1 ap-southeast-2 ap-northeast-1 ap-northeast-2 sa-east-1 ap-south-1"
 
@@ -206,7 +205,7 @@ for type in $types; do
 
                     # Register the AMI.
                     if [ $type = pv ]; then
-                        kernel=$(aws ec2 describe-images --owner amazon --filters "Name=name,Values=pv-grub-hd0_1.04-$arch.gz" | jq -r .Images[0].ImageId)
+                        kernel=$(aws ec2 describe-images --owner amazon --filters "Name=name,Values=pv-grub-hd0_1.05-$arch.gz" | jq -r .Images[0].ImageId)
                         if [ "$kernel" = null ]; then break; fi
                         echo "using PV-GRUB kernel $kernel"
                         extraFlags+=" --virtualization-type paravirtual --kernel $kernel"
diff --git a/nixos/modules/config/fonts/fontconfig-penultimate.nix b/nixos/modules/config/fonts/fontconfig-penultimate.nix
index 8e41d342117..83d6532774e 100644
--- a/nixos/modules/config/fonts/fontconfig-penultimate.nix
+++ b/nixos/modules/config/fonts/fontconfig-penultimate.nix
@@ -3,23 +3,236 @@
 with lib;
 
 let
-  cfg = config.fonts.fontconfig.penultimate;
+  cfg = config.fonts.fontconfig;
 
+  fcBool = x: "<bool>" + (if x then "true" else "false") + "</bool>";
+
+  # back-supported fontconfig version and package
+  # version is used for font cache generation
+  supportVersion = "210";
+  supportPkg     = pkgs."fontconfig_${supportVersion}";
+
+  # latest fontconfig version and package
+  # version is used for configuration folder name, /etc/fonts/VERSION/
+  # note: format differs from supportVersion and can not be used with makeCacheConf
   latestVersion  = pkgs.fontconfig.configVersion;
+  latestPkg      = pkgs.fontconfig;
+
+  # supported version fonts.conf
+  supportFontsConf = pkgs.makeFontsConf { fontconfig = supportPkg; fontDirectories = config.fonts.fonts; };
+
+  # configuration file to read fontconfig cache
+  # version dependent
+  # priority 0
+  cacheConfSupport = makeCacheConf { version = supportVersion; };
+  cacheConfLatest  = makeCacheConf {};
+
+  # generate the font cache setting file for a fontconfig version
+  # use latest when no version is passed
+  makeCacheConf = { version ? null }:
+    let
+      fcPackage = if builtins.isNull version
+                  then "fontconfig"
+                  else "fontconfig_${version}";
+      makeCache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; };
+      cache     = makeCache pkgs."${fcPackage}";
+      cache32   = makeCache pkgs.pkgsi686Linux."${fcPackage}";
+    in
+    pkgs.writeText "fc-00-nixos-cache.conf" ''
+      <?xml version='1.0'?>
+      <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+      <fontconfig>
+        <!-- Font directories -->
+        ${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.fonts)}
+        <!-- Pre-generated font caches -->
+        <cachedir>${cache}</cachedir>
+        ${optionalString (pkgs.stdenv.isx86_64 && cfg.cache32Bit) ''
+          <cachedir>${cache32}</cachedir>
+        ''}
+      </fontconfig>
+    '';
 
   # The configuration to be included in /etc/font/
-  confPkg = pkgs.runCommand "font-penultimate-conf" {} ''
+  penultimateConf = pkgs.runCommand "font-penultimate-conf" {} ''
     support_folder=$out/etc/fonts/conf.d
     latest_folder=$out/etc/fonts/${latestVersion}/conf.d
 
     mkdir -p $support_folder
     mkdir -p $latest_folder
 
-    # fontconfig ultimate various configuration files
+    ln -s ${supportFontsConf} $support_folder/../fonts.conf
+    ln -s ${latestPkg.out}/etc/fonts/fonts.conf \
+          $latest_folder/../fonts.conf
+
+    # fontconfig-penultimate various configuration files
     ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
           $support_folder
     ln -s ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/*.conf \
           $latest_folder
+
+    ln -s ${cacheConfSupport} $support_folder/00-nixos-cache.conf
+    ln -s ${cacheConfLatest}  $latest_folder/00-nixos-cache.conf
+
+    rm $support_folder/10-antialias.conf $latest_folder/10-antialias.conf
+    ln -s ${antialiasConf} $support_folder/10-antialias.conf
+    ln -s ${antialiasConf} $latest_folder/10-antialias.conf
+
+    rm $support_folder/10-hinting.conf $latest_folder/10-hinting.conf
+    ln -s ${hintingConf} $support_folder/10-hinting.conf
+    ln -s ${hintingConf} $latest_folder/10-hinting.conf
+
+    ${optionalString cfg.useEmbeddedBitmaps ''
+    rm $support_folder/10-no-embedded-bitmaps.conf
+    rm $latest_folder/10-no-embedded-bitmaps.conf
+    ''}
+
+    rm $support_folder/10-subpixel.conf $latest_folder/10-subpixel.conf
+    ln -s ${subpixelConf} $support_folder/10-subpixel.conf
+    ln -s ${subpixelConf} $latest_folder/10-subpixel.conf
+
+    ${optionalString (cfg.dpi != 0) ''
+    ln -s ${dpiConf} $support_folder/11-dpi.conf
+    ln -s ${dpiConf} $latest_folder/11-dpi.conf
+    ''}
+
+    ${optionalString (!cfg.includeUserConf) ''
+    rm $support_folder/50-user.conf
+    rm $latest_folder/50-user.conf
+    ''}
+
+    # 51-local.conf
+    rm $latest_folder/51-local.conf
+    substitute \
+      ${pkgs.fontconfig-penultimate}/etc/fonts/conf.d/51-local.conf \
+      $latest_folder/51-local.conf \
+      --replace local.conf /etc/fonts/${latestVersion}/local.conf
+
+    ln -s ${defaultFontsConf} $support_folder/52-default-fonts.conf
+    ln -s ${defaultFontsConf} $latest_folder/52-default-fonts.conf
+
+    ${optionalString cfg.allowBitmaps ''
+    rm $support_folder/53-no-bitmaps.conf
+    rm $latest_folder/53-no-bitmaps.conf
+    ''}
+
+    ${optionalString (!cfg.allowType1) ''
+    ln -s ${rejectType1} $support_folder/53-no-type1.conf
+    ln -s ${rejectType1} $latest_folder/53-no-type1.conf
+    ''}
+  '';
+
+  hintingConf = pkgs.writeText "fc-10-hinting.conf" ''
+    <?xml version='1.0'?>
+    <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+    <fontconfig>
+
+      <!-- Default rendering settings -->
+      <match target="pattern">
+        <edit mode="append" name="hinting">
+          ${fcBool cfg.hinting.enable}
+        </edit>
+        <edit mode="append" name="autohint">
+          ${fcBool cfg.hinting.autohint}
+        </edit>
+        <edit mode="append" name="hintstyle">
+          <const>hintslight</const>
+        </edit>
+      </match>
+
+    </fontconfig>
+  '';
+
+  antialiasConf = pkgs.writeText "fc-10-antialias.conf" ''
+    <?xml version='1.0'?>
+    <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+    <fontconfig>
+
+      <!-- Default rendering settings -->
+      <match target="pattern">
+        <edit mode="append" name="antialias">
+          ${fcBool cfg.antialias}
+        </edit>
+      </match>
+
+    </fontconfig>
+  '';
+
+  subpixelConf = pkgs.writeText "fc-10-subpixel.conf" ''
+    <?xml version='1.0'?>
+    <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+    <fontconfig>
+
+      <!-- Default rendering settings -->
+      <match target="pattern">
+        <edit mode="append" name="rgba">
+          <const>${cfg.subpixel.rgba}</const>
+        </edit>
+        <edit mode="append" name="lcdfilter">
+          <const>lcd${cfg.subpixel.lcdfilter}</const>
+        </edit>
+      </match>
+
+    </fontconfig>
+  '';
+
+  dpiConf = pkgs.writeText "fc-11-dpi.conf" ''
+    <?xml version='1.0'?>
+    <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+    <fontconfig>
+
+      <match target="pattern">
+        <edit name="dpi" mode="assign">
+          <double>${toString cfg.dpi}</double>
+        </edit>
+      </match>
+
+    </fontconfig>
+  '';
+
+  defaultFontsConf =
+    let genDefault = fonts: name:
+      optionalString (fonts != []) ''
+        <alias>
+          <family>${name}</family>
+          <prefer>
+          ${concatStringsSep ""
+          (map (font: ''
+            <family>${font}</family>
+          '') fonts)}
+          </prefer>
+        </alias>
+      '';
+    in
+    pkgs.writeText "fc-52-nixos-default-fonts.conf" ''
+    <?xml version='1.0'?>
+    <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+    <fontconfig>
+
+      <!-- Default fonts -->
+      ${genDefault cfg.defaultFonts.sansSerif "sans-serif"}
+
+      ${genDefault cfg.defaultFonts.serif     "serif"}
+
+      ${genDefault cfg.defaultFonts.monospace "monospace"}
+
+    </fontconfig>
+  '';
+
+  rejectType1 = pkgs.writeText "fc-53-no-type1.conf" ''
+    <?xml version="1.0"?>
+    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+    <fontconfig>
+
+    <!-- Reject Type 1 fonts -->
+    <selectfont>
+      <rejectfont>
+        <pattern>
+          <patelt name="fontformat"><string>Type 1</string></patelt>
+        </pattern>
+      </rejectfont>
+    </selectfont>
+
+    </fontconfig>
   '';
 
 in
@@ -50,7 +263,7 @@ in
 
   config = mkIf (config.fonts.fontconfig.enable && cfg.enable) {
 
-    fonts.fontconfig.confPackages = [ confPkg ];
+    fonts.fontconfig.confPackages = [ penultimateConf ];
 
   };
 
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
index 4d3cc26365f..d44b583447a 100644
--- a/nixos/modules/config/fonts/fontconfig.nix
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -104,13 +104,6 @@ let cfg = config.fonts.fontconfig;
         </match>
         ''}
 
-        <!-- Force autohint always -->
-        <match target="font">
-          <edit name="force_autohint" mode="assign">
-            ${fcBool cfg.forceAutohint}
-          </edit>
-        </match>
-
       </fontconfig>
     '';
 
@@ -174,13 +167,6 @@ let cfg = config.fonts.fontconfig;
         </edit>
       </match>
 
-      <!-- Render some monospace TTF fonts as bitmaps -->
-      <match target="pattern">
-        <edit name="bitmap_monospace" mode="assign">
-          ${fcBool cfg.renderMonoTTFAsBitmap}
-        </edit>
-      </match>
-
       </fontconfig>
     '';
 
@@ -372,11 +358,11 @@ in
 
           autohint = mkOption {
             type = types.bool;
-            default = true;
+            default = false;
             description = ''
-              Enable the autohinter, which provides hinting for otherwise
-              un-hinted fonts. The results are usually lower quality than
-              correctly-hinted fonts.
+              Enable the autohinter in place of the default interpreter.
+              The results are usually lower quality than correctly-hinted
+              fonts, but better than unhinted fonts.
             '';
           };
         };
@@ -453,31 +439,19 @@ in
           description = ''Use embedded bitmaps in fonts like Calibri.'';
         };
 
-        forceAutohint = mkOption {
-          type = types.bool;
-          default = false;
-          description = ''
-            Force use of the TrueType Autohinter. Useful for debugging or
-            free-software purists.
-          '';
-        };
-
-        renderMonoTTFAsBitmap = mkOption {
-          type = types.bool;
-          default = false;
-          description = ''Render some monospace TTF fonts as bitmaps.'';
-        };
-
       };
 
     };
 
   };
-  config = mkIf cfg.enable {
-    fonts.fontconfig.confPackages = [ confPkg ];
-
-    environment.systemPackages    = [ pkgs.fontconfig ];
-    environment.etc.fonts.source  = "${fontconfigEtc}/etc/fonts/";
-  };
+  config = mkMerge [
+    (mkIf cfg.enable {
+      environment.systemPackages    = [ pkgs.fontconfig ];
+      environment.etc.fonts.source  = "${fontconfigEtc}/etc/fonts/";
+    })
+    (mkIf (cfg.enable && !cfg.penultimate.enable) {
+      fonts.fontconfig.confPackages = [ confPkg ];
+    })
+  ];
 
 }
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index 54433e20597..0174fe544e3 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -202,5 +202,7 @@ with lib;
     (mkRemovedOptionModule [ "fonts" "fontconfig" "hinting" "style" ] "")
     (mkRemovedOptionModule [ "services" "xserver" "displayManager" "sddm" "themes" ]
       "Set the option `services.xserver.displayManager.sddm.package' instead.")
+    (mkRemovedOptionModule [ "fonts" "fontconfig" "forceAutohint" ] "")
+    (mkRemovedOptionModule [ "fonts" "fontconfig" "renderMonoTTFAsBitmap" ] "")
   ];
 }
diff --git a/nixos/modules/virtualisation/amazon-options.nix b/nixos/modules/virtualisation/amazon-options.nix
index 34a50dcab16..cba77d3edd1 100644
--- a/nixos/modules/virtualisation/amazon-options.nix
+++ b/nixos/modules/virtualisation/amazon-options.nix
@@ -12,5 +12,11 @@
     };
   };
 
-  config = {};
+  config = {
+    assertions = [
+      { assertion = config.ec2.hvm;
+        message = "Paravirtualized EC2 instances are no longer supported.";
+      }
+    ];
+  };
 }
diff --git a/nixos/modules/virtualisation/docker.nix b/nixos/modules/virtualisation/docker.nix
index 4b30a38f832..f1101d7ea66 100644
--- a/nixos/modules/virtualisation/docker.nix
+++ b/nixos/modules/virtualisation/docker.nix
@@ -126,7 +126,17 @@ in
 
         path = [ pkgs.kmod ] ++ (optional (cfg.storageDriver == "zfs") pkgs.zfs);
       };
-      systemd.sockets.docker.socketConfig.ListenStream = cfg.listenOptions;
+
+      systemd.sockets.docker = {
+        description = "Docker Socket for the API";
+        wantedBy = [ "sockets.target" ];
+        socketConfig = {
+          ListenStream = cfg.listenOptions;
+          SocketMode = "0660";
+          SocketUser = "root";
+          SocketGroup = "docker";
+        };
+      };
     }
   ]);
 
diff --git a/nixos/modules/virtualisation/ec2-amis.nix b/nixos/modules/virtualisation/ec2-amis.nix
index d592a23c303..745518f8597 100644
--- a/nixos/modules/virtualisation/ec2-amis.nix
+++ b/nixos/modules/virtualisation/ec2-amis.nix
@@ -193,5 +193,35 @@ let self = {
   "16.09".us-west-2.pv-ebs = "ami-6d4af60d";
   "16.09".us-west-2.pv-s3 = "ami-de48f4be";
 
-  latest = self."16.09";
+  # 17.03.885.6024dd4067
+  "17.03".ap-northeast-1.hvm-ebs = "ami-dbd0f7bc";
+  "17.03".ap-northeast-1.hvm-s3 = "ami-7cdff81b";
+  "17.03".ap-northeast-2.hvm-ebs = "ami-c59a48ab";
+  "17.03".ap-northeast-2.hvm-s3 = "ami-0b944665";
+  "17.03".ap-south-1.hvm-ebs = "ami-4f413220";
+  "17.03".ap-south-1.hvm-s3 = "ami-864033e9";
+  "17.03".ap-southeast-1.hvm-ebs = "ami-e08c3383";
+  "17.03".ap-southeast-1.hvm-s3 = "ami-c28f30a1";
+  "17.03".ap-southeast-2.hvm-ebs = "ami-fca9a69f";
+  "17.03".ap-southeast-2.hvm-s3 = "ami-3daaa55e";
+  "17.03".ca-central-1.hvm-ebs = "ami-9b00bdff";
+  "17.03".ca-central-1.hvm-s3 = "ami-e800bd8c";
+  "17.03".eu-central-1.hvm-ebs = "ami-5450803b";
+  "17.03".eu-central-1.hvm-s3 = "ami-6e2efe01";
+  "17.03".eu-west-1.hvm-ebs = "ami-10754c76";
+  "17.03".eu-west-1.hvm-s3 = "ami-11734a77";
+  "17.03".eu-west-2.hvm-ebs = "ami-ff1d099b";
+  "17.03".eu-west-2.hvm-s3 = "ami-fe1d099a";
+  "17.03".sa-east-1.hvm-ebs = "ami-d95d3eb5";
+  "17.03".sa-east-1.hvm-s3 = "ami-fca2c190";
+  "17.03".us-east-1.hvm-ebs = "ami-0940c61f";
+  "17.03".us-east-1.hvm-s3 = "ami-674fc971";
+  "17.03".us-east-2.hvm-ebs = "ami-afc2e6ca";
+  "17.03".us-east-2.hvm-s3 = "ami-a1cde9c4";
+  "17.03".us-west-1.hvm-ebs = "ami-587b2138";
+  "17.03".us-west-1.hvm-s3 = "ami-70411b10";
+  "17.03".us-west-2.hvm-ebs = "ami-a93daac9";
+  "17.03".us-west-2.hvm-s3 = "ami-5139ae31";
+
+  latest = self."17.03";
 }; in self
diff --git a/nixos/tests/docker.nix b/nixos/tests/docker.nix
index 1b57a94a05d..9096a5868f6 100644
--- a/nixos/tests/docker.nix
+++ b/nixos/tests/docker.nix
@@ -11,6 +11,21 @@ import ./make-test.nix ({ pkgs, ...} : {
       { config, pkgs, ... }:
         {
           virtualisation.docker.enable = true;
+
+          users.users = {
+            noprivs = {
+              isNormalUser = true;
+              description = "Can't access the docker daemon";
+              password = "foobar";
+            };
+
+            hasprivs = {
+              isNormalUser = true;
+              description = "Can access the docker daemon";
+              password = "foobar";
+              extraGroups = [ "docker" ];
+            };
+          };
         };
     };
 
@@ -21,6 +36,8 @@ import ./make-test.nix ({ pkgs, ...} : {
     $docker->succeed("tar cv --files-from /dev/null | docker import - scratchimg");
     $docker->succeed("docker run -d --name=sleeping -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg /bin/sleep 10");
     $docker->succeed("docker ps | grep sleeping");
+    $docker->succeed("sudo -u hasprivs docker ps");
+    $docker->fail("sudo -u noprivs docker ps");
     $docker->succeed("docker stop sleeping");
   '';
 })
diff --git a/pkgs/applications/editors/leo-editor/default.nix b/pkgs/applications/editors/leo-editor/default.nix
index 65fb927d48e..81f9ddd96d2 100644
--- a/pkgs/applications/editors/leo-editor/default.nix
+++ b/pkgs/applications/editors/leo-editor/default.nix
@@ -2,18 +2,18 @@
 
 stdenv.mkDerivation rec {
   name = "leo-editor-${version}";
-  version = "5.3";
+  version = "5.5";
 
   src = fetchFromGitHub {
     owner = "leo-editor";
     repo = "leo-editor";
     rev = version;
-    sha256 = "0whbay8ilabzpxdjaxv447y6bqbsilx161fv7wa15v3qqm2kapsp";
+    sha256 = "0crzljirzfiy9xn02ydd23clmd8bzdjxkyxdqsvdkgfy9j41b8hr";
   };
 
   dontBuild = true;
 
-  buildInputs = [ makeWrapper python3Packages.python ];
+  nativeBuildInputs = [ makeWrapper python3Packages.python ];
   propagatedBuildInputs = with python3Packages; [ pyqt5 ];
 
   desktopItem = makeDesktopItem rec {
@@ -56,10 +56,10 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
-    homepage = "http://leoeditor.com";
+    homepage = http://leoeditor.com;
     description = "A powerful folding editor";
     longDescription = "Leo is a PIM, IDE and outliner that accelerates the work flow of programmers, authors and web designers.";
-    license = with licenses; [ mit ];
+    license = licenses.mit;
     maintainers = with maintainers; [ leonardoce ramkromberg ];
   };
 }
diff --git a/pkgs/applications/graphics/nomacs/default.nix b/pkgs/applications/graphics/nomacs/default.nix
new file mode 100644
index 00000000000..0f0e0984a87
--- /dev/null
+++ b/pkgs/applications/graphics/nomacs/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, makeWrapper
+, pkgconfig
+, wrapGAppsHook
+, gsettings_desktop_schemas
+
+, qtbase
+, qttools
+, qtsvg
+
+, exiv2
+, opencv
+, libraw
+, libtiff
+, quazip
+}:
+
+stdenv.mkDerivation rec {
+  version = "3.4";
+  src = fetchFromGitHub {
+    owner = "nomacs";
+    repo = "nomacs";
+    rev = "3.4";
+    sha256 = "1l7q85dsiss0ix25niybj27zx1ssd439mwj449rxixa351cg1r2z";
+  };
+
+  name = "nomacs-${version}";
+
+  enableParallelBuilding = true;
+
+  sourceRoot = "${name}/ImageLounge";
+
+  patches = [./fix-appdata-install.patch];
+
+  nativeBuildInputs = [cmake
+                       pkgconfig
+                       wrapGAppsHook];
+
+  buildInputs = [qtbase
+                 qttools
+                 qtsvg
+                 exiv2
+                 opencv
+                 libraw
+                 libtiff
+                 quazip
+                 gsettings_desktop_schemas];
+
+
+  cmakeFlags = ["-DENABLE_OPENCV=ON"
+                "-DENABLE_RAW=ON"
+                "-DENABLE_TIFF=ON"
+                "-DENABLE_QUAZIP=ON"
+                "-DUSE_SYSTEM_QUAZIP=ON"];
+
+  meta = with stdenv.lib; {
+    homepage = https://nomacs.org;
+    description = "Qt-based image viewer";
+    maintainers = [maintainers.ahmedtd];
+    license = licenses.gpl3Plus;
+    repositories.git = https://github.com/nomacs/nomacs.git;
+    inherit (qtbase.meta) platforms;
+  };
+}
diff --git a/pkgs/applications/graphics/nomacs/fix-appdata-install.patch b/pkgs/applications/graphics/nomacs/fix-appdata-install.patch
new file mode 100644
index 00000000000..cdeed56f496
--- /dev/null
+++ b/pkgs/applications/graphics/nomacs/fix-appdata-install.patch
@@ -0,0 +1,13 @@
+diff --git a/cmake/UnixBuildTarget.cmake b/cmake/UnixBuildTarget.cmake
+index 3521056a..34f99ed9 100644
+--- a/cmake/UnixBuildTarget.cmake
++++ b/cmake/UnixBuildTarget.cmake
+@@ -80,7 +80,7 @@ install(FILES ${NOMACS_QM} DESTINATION share/nomacs/translations)
+ #  manpage
+ install(FILES Readme/nomacs.1 DESTINATION share/man/man1)
+ #  appdata
+-install(FILES nomacs.appdata.xml DESTINATION /usr/share/appdata/)
++install(FILES nomacs.appdata.xml DESTINATION share/appdata/)
+ 
+ # "make dist" target
+ string(TOLOWER ${PROJECT_NAME} CPACK_PACKAGE_NAME)
diff --git a/pkgs/applications/misc/dmenu2/default.nix b/pkgs/applications/misc/dmenu2/default.nix
index 9dca8f983a4..3d567603359 100644
--- a/pkgs/applications/misc/dmenu2/default.nix
+++ b/pkgs/applications/misc/dmenu2/default.nix
@@ -22,8 +22,8 @@ stdenv.mkDerivation rec {
   meta = {
       description = "A patched fork of the original dmenu - an efficient dynamic menu for X";
       homepage = https://bitbucket.org/melek/dmenu2;
-      license = stdenv.lib.licenses.mit;
-      maintainers = with maintainers; [ cstrahan ];
+      license = licenses.mit;
+      maintainers = [ maintainers.cstrahan ];
       platforms = platforms.all;
   };
 }
diff --git a/pkgs/applications/misc/doomseeker/default.nix b/pkgs/applications/misc/doomseeker/default.nix
index a8d35680dbd..61b0357bb9d 100644
--- a/pkgs/applications/misc/doomseeker/default.nix
+++ b/pkgs/applications/misc/doomseeker/default.nix
@@ -18,11 +18,11 @@ stdenv.mkDerivation rec {
     substituteInPlace src/core/CMakeLists.txt --replace /usr/share/applications "$out"/share/applications
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://doomseeker.drdteam.org/;
     description = "Multiplayer server browser for many Doom source ports";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.unix;
-    maintainers = with stdenv.lib.maintainers; [ MP2E ];
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.MP2E ];
   };
 }
diff --git a/pkgs/applications/misc/epdfview/default.nix b/pkgs/applications/misc/epdfview/default.nix
index 09bef975c85..b6c10dbebca 100644
--- a/pkgs/applications/misc/epdfview/default.nix
+++ b/pkgs/applications/misc/epdfview/default.nix
@@ -1,14 +1,16 @@
 { stdenv, fetchurl, fetchpatch, pkgconfig, gtk2, poppler }:
 
 stdenv.mkDerivation rec {
-  name = "epdfview-0.1.8";
+  name = "epdfview-${version}";
+  version = "0.1.8";
 
   src = fetchurl {
-    url = "http://trac.emma-soft.com/epdfview/chrome/site/releases/${name}.tar.bz2";
-    sha256 = "1w7qybh8ssl4dffi5qfajq8mndw7ipsd92vkim03nywxgjp4i1ll";
+    url = "mirror://debian/pool/main/e/epdfview/epdfview_${version}.orig.tar.gz";
+    sha256 = "0ibyb60a0b4n34bsjgvhdw8yf24463ky0hpmf6a2jjqsbm5g4v64";
   };
 
-  buildInputs = [ pkgconfig gtk2 poppler ];
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 poppler ];
 
   hardeningDisable = [ "format" ];
 
@@ -24,16 +26,16 @@ stdenv.mkDerivation rec {
               })
             ];
 
-  meta = {
-    homepage = http://trac.emma-soft.com/epdfview/;
+  meta = with stdenv.lib; {
+    homepage = https://packages.debian.org/wheezy/epdfview;
     description = "A lightweight PDF document viewer using Poppler and GTK+";
     longDescription = ''
         ePDFView is a free lightweight PDF document viewer using Poppler and
         GTK+ libraries. The aim of ePDFView is to make a simple PDF document
         viewer, in the lines of Evince but without using the Gnome libraries.
     '';
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = with stdenv.lib.maintainers; [ astsmtl ];
-    platforms = with stdenv.lib.platforms; linux;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.astsmtl ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/misc/jp2a/default.nix b/pkgs/applications/misc/jp2a/default.nix
index e552ac9777f..138ee397d3f 100644
--- a/pkgs/applications/misc/jp2a/default.nix
+++ b/pkgs/applications/misc/jp2a/default.nix
@@ -1,16 +1,19 @@
-{ stdenv, fetchurl, libjpeg }:
+{ stdenv, fetchFromGitHub, libjpeg, autoreconfHook }:
 
 stdenv.mkDerivation rec {
-  version = "1.0.6";
+  version = "1.0.7";
   name = "jp2a-${version}";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/jp2a/${name}.tar.gz";
-    sha256 = "076frk3pa16s4r1b10zgy81vdlz0385zh3ykbnkaij25jn5aqc09";
+  src = fetchFromGitHub {
+    owner = "cslarsen";
+    repo = "jp2a";
+    rev = "v${version}";
+    sha256 = "12a1z9ba2j16y67f41y8ax5sgv1wdjd71pg7circdxkj263n78ql";
   };
 
   makeFlags = "PREFIX=$(out)";
 
+  nativeBuildInputs = [ autoreconfHook ];
   buildInputs = [ libjpeg ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/networking/cluster/terraform/0.8.5.nix b/pkgs/applications/networking/cluster/terraform/0.8.5.nix
deleted file mode 100644
index 7f927b58670..00000000000
--- a/pkgs/applications/networking/cluster/terraform/0.8.5.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
-
-buildGoPackage rec {
-  name = "terraform-${version}";
-  version = "0.8.5";
-
-  goPackagePath = "github.com/hashicorp/terraform";
-
-  src = fetchFromGitHub {
-    owner  = "hashicorp";
-    repo   = "terraform";
-    rev    = "v${version}";
-    sha256 = "1cxwv3652fpsbm2zk1akw356cd7w7vhny1623ighgbz9ha8gvg09";
-  };
-
-  postInstall = ''
-    # remove all plugins, they are part of the main binary now
-    for i in $bin/bin/*; do
-      if [[ $(basename $i) != terraform ]]; then
-        rm "$i"
-      fi
-    done
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Tool for building, changing, and versioning infrastructure";
-    homepage = "https://www.terraform.io/";
-    license = licenses.mpl20;
-    maintainers = with maintainers; [
-      jgeerds
-      zimbatm
-    ];
-  };
-}
diff --git a/pkgs/applications/networking/corebird/default.nix b/pkgs/applications/networking/corebird/default.nix
index 07d89b53fa4..b4197a12db3 100644
--- a/pkgs/applications/networking/corebird/default.nix
+++ b/pkgs/applications/networking/corebird/default.nix
@@ -3,14 +3,14 @@
 , glib_networking }:
 
 stdenv.mkDerivation rec {
-  version = "1.3.3";
+  version = "1.4.2";
   name = "corebird-${version}";
 
   src = fetchFromGitHub {
     owner = "baedert";
     repo = "corebird";
     rev = version;
-    sha256 = "09k0jrhjqrmpvyz5pf1g7wkidflkhpvw5869a95vnhfxjd45kzs3";
+    sha256 = "0s28q9c7p4p4jyhb1g6gdwdphlf6yhi6yg4yn8bkd0gmyf9acakb";
   };
 
   preConfigure = ''
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ automake autoconf libtool pkgconfig wrapGAppsHook ];
 
   buildInputs = [
-    gtk3 json_glib sqlite libsoup gettext vala_0_32 gnome3.rest gnome3.dconf glib_networking
+    gtk3 json_glib sqlite libsoup gettext vala_0_32 gnome3.rest gnome3.dconf gnome3.gspell glib_networking
   ] ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-libav ]);
 
   meta = {
diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
index 67d86571b88..d64b5be816a 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
@@ -1,144 +1,92 @@
 { stdenv, lib, fetchFromGitHub, fetchgit, pkgconfig, gyp, cmake
-, qtbase, qtimageformats, qtwayland
-, breakpad, ffmpeg, openalSoft, openssl, zlib, libexif, lzma, libopus
-, gtk2, glib, cairo, pango, gdk_pixbuf, atk, libappindicator-gtk2
-, libwebp, libunity, dee, libdbusmenu-glib, libva-full, wayland
-, xcbutilrenderutil, icu, libSM, libICE, libproxy, libvdpau
-
-, libxcb, xcbutilwm, xcbutilimage, xcbutilkeysyms, libxkbcommon
-, libpng, libjpeg, freetype, harfbuzz, pcre16, xproto, libX11
-, inputproto, sqlite, dbus
+, qtbase, qtimageformats, makeQtWrapper
+, breakpad, gtk3, libappindicator-gtk3, dee
+, ffmpeg, openalSoft, minizip
 }:
 
-let
-  system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64;
-  packagedQt = "5.6.2";
-  # Hacky: split "1.2.3-4" into "1.2.3" and "4"
-  systemQt = (builtins.parseDrvName qtbase.version).name;
-  qtLibs = [ qtbase qtimageformats qtwayland ];
-
-in stdenv.mkDerivation rec {
+stdenv.mkDerivation rec {
   name = "telegram-desktop-${version}";
-  version = "1.0.2";
-  qtVersion = lib.replaceStrings ["."] ["_"] packagedQt;
-
-  src = fetchFromGitHub {
-    owner = "telegramdesktop";
-    repo = "tdesktop";
-    rev = "v${version}";
-    sha256 = "1pakxzs28v794x9mm7pb2m0phkfrwq19shz8a6lfyidb6ng85hy2";
+  version = "1.0.27";
+
+  # Submodules
+  src = fetchgit {
+    url = "https://github.com/telegramdesktop/tdesktop";
+    rev = "refs/tags/v${version}";
+    sha256 = "05g88g6h2a7f9biliicg81fqssx0y3akd3y5r2q2b5h8q3igqrfc";
   };
 
   tgaur = fetchgit {
-    url = "https://aur.archlinux.org/telegram-desktop.git";
-    rev = "957a76f9fb691486341bcf4781ad0ef3d16f6b69";
-    sha256 = "01nrvvq0mrdyvamjgqr4z5aahyd1wrf28jyddpfsnixp2w5kxqj8";
+    url = "https://aur.archlinux.org/telegram-desktop-systemqt.git";
+    rev = "b4d169076ed12ec01941a95499774d5caa6fc00e";
+    sha256 = "0pmm6slabg9xazgs0ffnp8v0hx3vnpdfgymvapwqpm3h9mwk22x9";
   };
 
   buildInputs = [
-    breakpad ffmpeg openalSoft openssl zlib libexif lzma libopus
-    gtk2 glib libappindicator-gtk2 libunity cairo pango gdk_pixbuf atk
-    dee libdbusmenu-glib libva-full xcbutilrenderutil icu libproxy
-    libSM libICE
-    # Qt dependencies
-    libxcb xcbutilwm xcbutilimage xcbutilkeysyms libxkbcommon
-    libpng libjpeg freetype harfbuzz pcre16 xproto libX11
-    inputproto sqlite dbus libwebp wayland libvdpau
+    gtk3 libappindicator-gtk3 dee qtbase qtimageformats ffmpeg openalSoft minizip
   ];
 
-  nativeBuildInputs = [ pkgconfig gyp cmake ];
+  nativeBuildInputs = [ pkgconfig gyp cmake makeQtWrapper ];
 
-  patches = [ "${tgaur}/aur-fixes.diff" ];
+  patches = [ "${tgaur}/aur-build-fixes.patch" ];
 
   enableParallelBuilding = true;
 
-  qtSrcs = builtins.map (x: x.src) qtLibs;
-  qtNames = builtins.map (x: (builtins.parseDrvName x.name).name) (lib.tail qtLibs);
-  qtPatches = qtbase.patches;
-
-  buildCommand = ''
-    unpackPhase
-    cd "$sourceRoot"
-
-    patchPhase
-
-    sed -i Telegram/gyp/Telegram.gyp \
-      -e 's,/usr/include/breakpad,${breakpad}/include/breakpad,g'
+  GYP_DEFINES = lib.concatStringsSep "," [
+    "TDESKTOP_DISABLE_CRASH_REPORTS"
+    "TDESKTOP_DISABLE_AUTOUPDATE"
+    "TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
+  ];
 
+  NIX_CFLAGS_COMPILE = [
+    "-DTDESKTOP_DISABLE_AUTOUPDATE"
+    "-DTDESKTOP_DISABLE_CRASH_REPORTS"
+    "-DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
+    "-I${minizip}/include/minizip"
+    # See Telegram/gyp/qt.gypi
+    "-I${qtbase.dev}/mkspecs/linux-g++"
+  ] ++ lib.concatMap (x: [
+    "-I${qtbase.dev}/include/${x}"
+    "-I${qtbase.dev}/include/${x}/${qtbase.version}"
+    "-I${qtbase.dev}/include/${x}/${qtbase.version}/${x}"
+  ]) [ "QtCore" "QtGui" ];
+  CPPFLAGS = NIX_CFLAGS_COMPILE;
+
+  preConfigure = ''
     sed -i Telegram/gyp/telegram_linux.gypi \
       -e 's,/usr,/does-not-exist,g' \
+      -e 's,appindicator-0.1,appindicator3-0.1,g' \
       -e 's,-flto,,g'
 
     sed -i Telegram/gyp/qt.gypi \
-      -e 's,${packagedQt},${systemQt},g'
-
-    gypFlagsArray=(
-      "-Dlinux_path_qt=$PWD/../qt"
-      "-Dlinux_lib_ssl=-lssl"
-      "-Dlinux_lib_crypto=-lcrypto"
-      "-Dlinux_lib_icu=-licuuc -licutu -licui18n"
-    )
-
-    export QMAKE=$PWD/../qt/bin/qmake
-    ( mkdir -p ../Libraries
-      cd ../Libraries
-      for i in $qtSrcs; do
-        tar -xaf $i
-      done
-      cd qtbase-*
-      # This patch is often outdated but the fixes doesn't feel very important
-      patch -p1 < ../../$sourceRoot/Telegram/Patches/qtbase_${qtVersion}.diff || true
-      for i in $qtPatches; do
-        patch -p1 < $i
-      done
-      ${qtbase.postPatch}
-      cd ..
-
-      export configureFlags="-prefix "$PWD/../qt" -release -opensource -confirm-license -system-zlib \
-        -system-libpng -system-libjpeg -system-freetype -system-harfbuzz -system-pcre -system-xcb \
-        -system-xkbcommon-x11 -no-eglfs -no-gtkstyle -static -nomake examples -nomake tests \
-        -no-directfb -system-proxies -openssl-linked -dbus-linked -system-sqlite -verbose \
-        ${lib.optionalString (!system-x86_64) "-no-sse2"} -no-sse3 -no-ssse3 \
-        -no-sse4.1 -no-sse4.2 -no-avx -no-avx2 -no-mips_dsp -no-mips_dspr2"
-      export dontAddPrefix=1
-      export MAKEFLAGS=-j$NIX_BUILD_CORES
-
-      ( cd qtbase-*
-        configurePhase
-        buildPhase
-        make install
-      )
-      for i in $qtNames; do
-        ( cd $i-*
-          $QMAKE
-          buildPhase
-          make install
-        )
-      done
-    )
-
-    ( cd Telegram/gyp
-      gyp "''${gypFlagsArray[@]}" --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=cmake
-    )
-
-    ( cd out/Release
-      export ASM=$(type -p gcc)
-      cmake .
-      # For some reason, it can't find stdafx.h -- we need to build dependencies till it fails and then retry.
-      buildPhase || true
-      export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -include stdafx.h"
-      buildPhase
-    )
-
-    install -Dm755 out/Release/Telegram $out/bin/telegram-desktop
+      -e "s,/usr/bin/moc,moc,g"
+    sed -i Telegram/gyp/qt_rcc.gypi \
+      -e "s,/usr/bin/rcc,rcc,g"
+
+    gyp \
+      -Gconfig=Release \
+      --depth=Telegram/gyp \
+      --generator-output=../.. \
+      -Goutput_dir=out \
+       --format=cmake \
+      Telegram/gyp/Telegram.gyp
+
+    cd out/Release
+
+    NUM=$((`wc -l < CMakeLists.txt` - 2))
+    sed -i "$NUM r $tgaur/CMakeLists.inj" CMakeLists.txt
+
+    export ASM=$(type -p gcc)
+  '';
+
+  installPhase = ''
+    install -Dm755 Telegram $out/bin/telegram-desktop
     mkdir -p $out/share/applications $out/share/kde4/services
     sed "s,/usr/bin,$out/bin,g" $tgaur/telegramdesktop.desktop > $out/share/applications/telegramdesktop.desktop
     sed "s,/usr/bin,$out/bin,g" $tgaur/tg.protocol > $out/share/kde4/services/tg.protocol
     for icon_size in 16 32 48 64 128 256 512; do
-      install -Dm644 "Telegram/Resources/art/icon''${icon_size}.png" "$out/share/icons/hicolor/''${icon_size}x''${icon_size}/apps/telegram-desktop.png"
+      install -Dm644 "../../../Telegram/Resources/art/icon''${icon_size}.png" "$out/share/icons/hicolor/''${icon_size}x''${icon_size}/apps/telegram-desktop.png"
     done
-
-    fixupPhase
+    wrapQtProgram $out/bin/telegram-desktop
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/version-management/git-and-tools/git-cola/default.nix b/pkgs/applications/version-management/git-and-tools/git-cola/default.nix
index cf7f6b82ce2..2a9ea0715e0 100644
--- a/pkgs/applications/version-management/git-and-tools/git-cola/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-cola/default.nix
@@ -1,33 +1,21 @@
-{ stdenv, fetchurl, pythonPackages, makeWrapper, gettext, git }:
+{ stdenv, fetchFromGitHub, pythonPackages, makeWrapper, gettext, git }:
 
 let
   inherit (pythonPackages) buildPythonApplication pyqt4 sip pyinotify python mock;
 in buildPythonApplication rec {
   name = "git-cola-${version}";
-  version = "2.8";
+  version = "2.10";
 
-  src = fetchurl {
-    url = "https://github.com/git-cola/git-cola/archive/v${version}.tar.gz";
-    sha256 = "19ff7i0h5fznrkm17lp3xkxwkq27whhiil6y6bm16b1wny5hjqlr";
+  src = fetchFromGitHub {
+    owner = "git-cola";
+    repo = "git-cola";
+    rev = "v${version}";
+    sha256 = "067g0yya6718kxagf5qm59zizp0lizca4m3ih85y732i6rqpgwv8";
   };
 
-  buildInputs = [ git makeWrapper gettext ];
+  buildInputs = [ git gettext ];
   propagatedBuildInputs = [ pyqt4 sip pyinotify ];
 
-  # HACK: wrapPythonPrograms adds 'import sys; sys.argv[0] = "git-cola"', but
-  # "import __future__" must be placed above that. This removes the argv[0] line.
-  postFixup = ''
-    wrapPythonPrograms
-
-    sed -i "$out/bin/.git-dag-wrapped" -e '{
-      /import sys; sys.argv/d
-    }'
-    
-    sed -i "$out/bin/.git-cola-wrapped" -e '{
-      /import sys; sys.argv/d
-    }'
-  '';
-
   doCheck = false;
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/version-management/git-and-tools/git-imerge/default.nix b/pkgs/applications/version-management/git-and-tools/git-imerge/default.nix
index 91180b33cde..49856552aa3 100644
--- a/pkgs/applications/version-management/git-and-tools/git-imerge/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-imerge/default.nix
@@ -1,22 +1,20 @@
-{ stdenv, fetchurl, pythonPackages }:
+{ stdenv, fetchFromGitHub, pythonPackages }:
 
 stdenv.mkDerivation rec {
   name = "git-imerge-${version}";
-  version = "0.7.0";
+  version = "1.0.0";
 
-  src = fetchurl {
-    url = "https://github.com/mhagger/git-imerge/archive/${version}.tar.gz";
-    sha256 = "00nwn3rfhf15wsv01lfji5412d7yz827ric916lnyp662d6gx206";
+  src = fetchFromGitHub {
+    owner = "mhagger";
+    repo = "git-imerge";
+    rev = "v${version}";
+    sha256 = "1ylzxmbjfrzzxmcrbqzy1wv21npqj1r6cgl77a9n2zvsrz8zdb74";
   };
 
   buildInputs = [ pythonPackages.python pythonPackages.wrapPython ];
 
-  installPhase = ''
-    mkdir -p $out/bin
-    make install PREFIX=$out
-    wrapPythonPrograms
-  '';
-
+  makeFlags = "PREFIX= DESTDIR=$(out)" ; 
+ 
   meta = with stdenv.lib; {
     homepage = https://github.com/mhagger/git-imerge;
     description = "Perform a merge between two branches incrementally";
diff --git a/pkgs/applications/version-management/git-and-tools/git-radar/default.nix b/pkgs/applications/version-management/git-and-tools/git-radar/default.nix
index f61f9fe6d2a..3b10c3305ef 100644
--- a/pkgs/applications/version-management/git-and-tools/git-radar/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-radar/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   name = "git-radar-${version}";
-  version = "0.3.2";
+  version = "0.5";
 
   phases = [ "unpackPhase" "installPhase" ];
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     owner = "michaeldfallen";
     repo = "git-radar";
     rev = "v${version}";
-    sha256 = "1028462b4kqxx66vjv7r8nnr6bi3kw11fixpqyg2srqriha6447p";
+    sha256 = "1915aqx8bfc4xmvhx2gfxv72p969a6rn436kii9w4yi38hibmqv9";
   };
 
   installPhase = ''
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://github.com/michaeldfallen/git-radar;
     license = licenses.mit;
-    description = "Git-radar is a tool you can add to your prompt to provide at-a-glance information on your git repo";
+    description = "A tool you can add to your prompt to provide at-a-glance information on your git repo";
     platforms = with platforms; linux ++ darwin;
     maintainers = with maintainers; [ kamilchm ];
   };
diff --git a/pkgs/applications/version-management/gitkraken/default.nix b/pkgs/applications/version-management/gitkraken/default.nix
index d17af6f5188..023343f59cb 100644
--- a/pkgs/applications/version-management/gitkraken/default.nix
+++ b/pkgs/applications/version-management/gitkraken/default.nix
@@ -2,6 +2,7 @@
 , libXfixes, atk, gtk2, libXrender, pango, gnome2, cairo, freetype, fontconfig
 , libX11, libXi, libXext, libXcursor, glib, libXScrnSaver, libxkbfile, libXtst
 , nss, nspr, cups, fetchurl, expat, gdk_pixbuf, libXdamage, libXrandr, dbus
+, dpkg, makeDesktopItem
 }:
 
 with stdenv.lib;
@@ -11,8 +12,8 @@ stdenv.mkDerivation rec {
   version = "2.2.1";
 
   src = fetchurl {
-    url = "https://release.gitkraken.com/linux/v${version}.tar.gz";
-    sha256 = "12nyw2dh9ylrms264dbw0xzyif0znmba32zyfq7kdp0iay0wvgqd";
+    url = "https://release.gitkraken.com/linux/v${version}.deb";
+    sha256 = "0ld5wdnrz4qpjl9af8hwmzli3201rfsh73lyy2zp8c98749a2zqn";
   };
 
   libPath = makeLibraryPath [
@@ -53,9 +54,29 @@ stdenv.mkDerivation rec {
 
   dontBuild = true;
 
+  desktopItem = makeDesktopItem {
+    name = "gitkraken";
+    exec = "gitkraken";
+    icon = "app";
+    desktopName = "GitKraken";
+    genericName = "Git Client";
+    categories = "Application;Development;";
+    comment = "Graphical Git client from Axosoft";
+  };
+
+  buildInputs = [ dpkg ];
+
+  unpackPhase = "dpkg-deb -x $src .";
+
   installPhase = ''
     mkdir -p "$out/opt/gitkraken"
-    cp -r ./* "$out/opt/gitkraken"
+    cp -r usr/share/gitkraken/* "$out/opt/gitkraken"
+
+    mkdir -p "$out/share/applications"
+    cp $desktopItem/share/applications/* "$out/share/applications"
+
+    mkdir -p "$out/share/pixmaps"
+    cp usr/share/pixmaps/app.png "$out/share/pixmaps"
   '';
 
   postFixup = ''
diff --git a/pkgs/applications/version-management/src/default.nix b/pkgs/applications/version-management/src/default.nix
index 2fd45ec7fc0..e75223c6c36 100644
--- a/pkgs/applications/version-management/src/default.nix
+++ b/pkgs/applications/version-management/src/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "src-${version}";
-  version = "1.12";
+  version = "1.13";
 
   src = fetchurl {
     url = "http://www.catb.org/~esr/src/${name}.tar.gz";
-    sha256 = "1m6rjbizx9win3jkciyx176sfy98r5arb1g3l6aqnqam9gpr44zm";
+    sha256 = "0l13ld8nxm1c720ns22lyx3q1bq2c2zn78vi5w92b7nl6p2nncy8";
   };
 
   buildInputs = [ python rcs git makeWrapper ];
diff --git a/pkgs/data/fonts/fontconfig-penultimate/default.nix b/pkgs/data/fonts/fontconfig-penultimate/default.nix
index f9d60d6600d..a42e5d9109b 100644
--- a/pkgs/data/fonts/fontconfig-penultimate/default.nix
+++ b/pkgs/data/fonts/fontconfig-penultimate/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub }:
 
-let version = "0.2.1"; in
+let version = "0.3.2"; in
 stdenv.mkDerivation {
   name = "fontconfig-penultimate-${version}";
 
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     owner = "ttuegel";
     repo = "fontconfig-penultimate";
     rev = version;
-    sha256 = "14arpalmpn7ig2myxslk4jdg6lm0cnmwsxy7zl0j7yr417k1kprf";
+    sha256 = "01cgqdmgpqahkg71lnvr3yzsmka9q1kgkbiz6w5ds1fhrpcswj7p";
   };
 
   installPhase = ''
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gspell/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gspell/default.nix
index fbb95efb27a..3024d3ed59f 100644
--- a/pkgs/desktops/gnome-3/3.22/misc/gspell/default.nix
+++ b/pkgs/desktops/gnome-3/3.22/misc/gspell/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchurl, pkgconfig, glib, gtk3, enchant, isocodes }:
+{ stdenv, fetchurl, pkgconfig, glib, gtk3, enchant, isocodes, vala }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
-  buildInputs = [ pkgconfig glib gtk3 enchant isocodes ];
+  buildInputs = [ pkgconfig glib gtk3 enchant isocodes vala ];
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gspell/src.nix b/pkgs/desktops/gnome-3/3.22/misc/gspell/src.nix
index 248e3915152..850e13fb011 100644
--- a/pkgs/desktops/gnome-3/3.22/misc/gspell/src.nix
+++ b/pkgs/desktops/gnome-3/3.22/misc/gspell/src.nix
@@ -1,10 +1,10 @@
 fetchurl: rec {
-  major = "1.0";
-  minor = "3";
+  major = "1.2";
+  minor = "1";
   name = "gspell-${major}.${minor}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gspell/${major}/${name}.tar.xz";
-    sha256 = "1m8v4rqaxjsblccc3nnirkbkzgqm90vfpzp3x08lkqriqvk0anfr";
+    sha256 = "18zisdrq14my2iq6iv3lhqfn9jg98bqwbzcdidp7hfk915gkw74z";
   };
 }
diff --git a/pkgs/development/haskell-modules/default.nix b/pkgs/development/haskell-modules/default.nix
index 8242990fe74..694556123ab 100644
--- a/pkgs/development/haskell-modules/default.nix
+++ b/pkgs/development/haskell-modules/default.nix
@@ -80,12 +80,12 @@ let
     in
       import ./hackage-packages.nix { inherit pkgs stdenv callPackage; } self // {
 
-        inherit mkDerivation callPackage;
+        inherit mkDerivation callPackage haskellSrc2nix hackage2nix;
 
-        callHackage = name: version: self.callPackage (hackage2nix name version);
+        callHackage = name: version: self.callPackage (self.hackage2nix name version);
 
         # Creates a Haskell package from a source package by calling cabal2nix on the source.
-        callCabal2nix = name: src: self.callPackage (haskellSrc2nix { inherit src name; });
+        callCabal2nix = name: src: self.callPackage (self.haskellSrc2nix { inherit src name; });
 
         ghcWithPackages = selectFrom: withPackages (selectFrom self);
 
diff --git a/pkgs/development/libraries/libappindicator/default.nix b/pkgs/development/libraries/libappindicator/default.nix
index ff256fb73c8..0c1c51d6f47 100644
--- a/pkgs/development/libraries/libappindicator/default.nix
+++ b/pkgs/development/libraries/libappindicator/default.nix
@@ -27,12 +27,17 @@ in stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig autoconf ];
 
+  propagatedBuildInputs =
+    if gtkVersion == "2"
+    then [ gtk2 libdbusmenu-gtk2 ]
+    else [ gtk3 libdbusmenu-gtk3 ];
+
   buildInputs = [
     glib dbus_glib
     python pygobject2 pygtk gobjectIntrospection vala_0_23
   ] ++ (if gtkVersion == "2"
-    then [ gtk2 libindicator-gtk2 libdbusmenu-gtk2 ] ++ optionals monoSupport [ mono gtk-sharp-2_0 ]
-    else [ gtk3 libindicator-gtk3 libdbusmenu-gtk3 ]);
+    then [ libindicator-gtk2 ] ++ optionals monoSupport [ mono gtk-sharp-2_0 ]
+    else [ libindicator-gtk3 ]);
 
   postPatch = ''
     substituteInPlace configure.ac \
diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix
index a9f8c32dde9..2009daa1cc8 100644
--- a/pkgs/development/libraries/openssl/default.nix
+++ b/pkgs/development/libraries/openssl/default.nix
@@ -9,7 +9,7 @@ let
   opensslCrossSystem = stdenv.cross.openssl.system or
     (throw "openssl needs its platform name cross building");
 
-  common = args@{ version, sha256, patches ? [], configureFlags ? [], makeDepend ? false }: stdenv.mkDerivation rec {
+  common = args@{ version, sha256, patches ? [] }: stdenv.mkDerivation rec {
     name = "openssl-${version}";
 
     src = fetchurl {
@@ -47,10 +47,7 @@ let
     ] ++ stdenv.lib.optionals withCryptodev [
       "-DHAVE_CRYPTODEV"
       "-DUSE_CRYPTODEV_DIGESTS"
-    ] ++ stdenv.lib.optional enableSSL2 "enable-ssl2"
-    ++ args.configureFlags or [];
-
-    postConfigure = if makeDepend then "make depend" else null;
+    ] ++ stdenv.lib.optional enableSSL2 "enable-ssl2";
 
     makeFlags = [ "MANDIR=$(man)/share/man" ];
 
@@ -121,12 +118,4 @@ in {
     sha256 = "0k47sdd9gs6yxfv6ldlgpld2lyzrkcv9kz4cf88ck04xjwc8dgjp";
   };
 
-  openssl_1_0_2-steam = common {
-    version = "1.0.2k";
-    sha256 = "1h6qi35w6hv6rd73p4cdgdzg732pdrfgpp37cgwz1v9a3z37ffbb";
-    configureFlags = [ "no-engine" ];
-    makeDepend = true;
-    patches = [ ./openssl-fix-cpuid_setup.patch ];
-  };
-
 }
diff --git a/pkgs/development/libraries/openssl/openssl-fix-cpuid_setup.patch b/pkgs/development/libraries/openssl/openssl-fix-cpuid_setup.patch
deleted file mode 100644
index 4a2384ca3da..00000000000
--- a/pkgs/development/libraries/openssl/openssl-fix-cpuid_setup.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c
-index 1925428..d2e42d2 100644
---- a/crypto/cryptlib.c
-+++ b/crypto/cryptlib.c
-@@ -676,10 +676,15 @@ typedef unsigned __int64 IA32CAP;
- #  else
- typedef unsigned long long IA32CAP;
- #  endif
-+
-+/* Compat function for STEAM */
-+extern IA32CAP OPENSSL_ia32_cpuid_new(unsigned int*);
-+IA32CAP OPENSSL_ia32_cpuid(void) { return OPENSSL_ia32_cpuid_new(OPENSSL_ia32cap_P); }
-+
- void OPENSSL_cpuid_setup(void)
- {
-     static int trigger = 0;
--    IA32CAP OPENSSL_ia32_cpuid(unsigned int *);
-+    IA32CAP OPENSSL_ia32_cpuid_new(unsigned int *);
-     IA32CAP vec;
-     char *env;
- 
-@@ -697,9 +702,9 @@ void OPENSSL_cpuid_setup(void)
-             vec = strtoul(env + off, NULL, 0);
- #  endif
-         if (off)
--            vec = OPENSSL_ia32_cpuid(OPENSSL_ia32cap_P) & ~vec;
-+            vec = OPENSSL_ia32_cpuid_new(OPENSSL_ia32cap_P) & ~vec;
-         else if (env[0] == ':')
--            vec = OPENSSL_ia32_cpuid(OPENSSL_ia32cap_P);
-+            vec = OPENSSL_ia32_cpuid_new(OPENSSL_ia32cap_P);
- 
-         OPENSSL_ia32cap_P[2] = 0;
-         if ((env = strchr(env, ':'))) {
-@@ -713,7 +718,7 @@ void OPENSSL_cpuid_setup(void)
-                 OPENSSL_ia32cap_P[2] = vecx;
-         }
-     } else
--        vec = OPENSSL_ia32_cpuid(OPENSSL_ia32cap_P);
-+        vec = OPENSSL_ia32_cpuid_new(OPENSSL_ia32cap_P);
- 
-     /*
-      * |(1<<10) sets a reserved bit to signal that variable
-diff --git a/crypto/cryptlib.h b/crypto/cryptlib.h
-index fba180a..b927c79 100644
---- a/crypto/cryptlib.h
-+++ b/crypto/cryptlib.h
-@@ -99,6 +99,9 @@ extern "C" {
- # define HEX_SIZE(type)          (sizeof(type)*2)
- 
- void OPENSSL_cpuid_setup(void);
-+#pragma GCC visibility push(hidden)
-+unsigned long long OPENSSL_ia32_cpuid(void);
-+#pragma GCC visibility pop
- extern unsigned int OPENSSL_ia32cap_P[];
- void OPENSSL_showfatal(const char *fmta, ...);
- void *OPENSSL_stderr(void);
-diff --git a/crypto/x86_64cpuid.pl b/crypto/x86_64cpuid.pl
-index d208d02..d4c0b24 100644
---- a/crypto/x86_64cpuid.pl
-+++ b/crypto/x86_64cpuid.pl
-@@ -52,10 +52,10 @@ OPENSSL_rdtsc:
- 	ret
- .size	OPENSSL_rdtsc,.-OPENSSL_rdtsc
- 
--.globl	OPENSSL_ia32_cpuid
--.type	OPENSSL_ia32_cpuid,\@function,1
-+.globl	OPENSSL_ia32_cpuid_new
-+.type	OPENSSL_ia32_cpuid_new,\@function,1
- .align	16
--OPENSSL_ia32_cpuid:
-+OPENSSL_ia32_cpuid_new:
- 	mov	%rbx,%r8		# save %rbx
- 
- 	xor	%eax,%eax
-@@ -181,7 +181,7 @@ OPENSSL_ia32_cpuid:
- 	mov	%r8,%rbx		# restore %rbx
- 	or	%r9,%rax
- 	ret
--.size	OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid
-+.size	OPENSSL_ia32_cpuid_new,.-OPENSSL_ia32_cpuid_new
- 
- .globl  OPENSSL_cleanse
- .type   OPENSSL_cleanse,\@abi-omnipotent
-diff --git a/crypto/x86cpuid.pl b/crypto/x86cpuid.pl
-index e95f627..0781010 100644
---- a/crypto/x86cpuid.pl
-+++ b/crypto/x86cpuid.pl
-@@ -8,7 +8,7 @@ require "x86asm.pl";
- 
- for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
- 
--&function_begin("OPENSSL_ia32_cpuid");
-+&function_begin("OPENSSL_ia32_cpuid_new");
- 	&xor	("edx","edx");
- 	&pushf	();
- 	&pop	("eax");
-@@ -153,7 +153,7 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
- 	&mov	("eax","esi");
- 	&mov	("edx","ebp");
- &set_label("nocpuid");
--&function_end("OPENSSL_ia32_cpuid");
-+&function_end("OPENSSL_ia32_cpuid_new");
- 
- &external_label("OPENSSL_ia32cap_P");
- 
diff --git a/pkgs/games/steam/runtime-wrapped.nix b/pkgs/games/steam/runtime-wrapped.nix
index 74548fcfb8c..5cf55535db1 100644
--- a/pkgs/games/steam/runtime-wrapped.nix
+++ b/pkgs/games/steam/runtime-wrapped.nix
@@ -58,6 +58,7 @@ let
     SDL
     SDL2_image
     glew110
+    openssl
     libidn
 
     # Other things from runtime
@@ -87,7 +88,6 @@ let
     alsaLib
     openalSoft
     libva
-    openssl-steam
     vulkan-loader
   ] ++ lib.optional newStdcpp gcc.cc;
 
diff --git a/pkgs/os-specific/linux/kernel/linux-testing.nix b/pkgs/os-specific/linux/kernel/linux-testing.nix
index 4606fc922a6..f56b1df6184 100644
--- a/pkgs/os-specific/linux/kernel/linux-testing.nix
+++ b/pkgs/os-specific/linux/kernel/linux-testing.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.11-rc4";
-  modDirVersion = "4.11.0-rc4";
+  version = "4.11-rc5";
+  modDirVersion = "4.11.0-rc5";
   extraMeta.branch = "4.11";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/testing/linux-${version}.tar.xz";
-    sha256 = "0kvp5zkq54ahxp59d33fpzf3jpr5k0jjfbxc1kfqwxvlkgznmd7h";
+    sha256 = "0qmb8sssh4f4zhvasy20k30r8cwc03qm5ql3b25cj16cn3frp0q7";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/tools/filesystems/snapraid/default.nix b/pkgs/tools/filesystems/snapraid/default.nix
index bbaad516ebe..ccb20e9f1bd 100644
--- a/pkgs/tools/filesystems/snapraid/default.nix
+++ b/pkgs/tools/filesystems/snapraid/default.nix
@@ -1,16 +1,20 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchFromGitHub, autoreconfHook }:
 
 stdenv.mkDerivation rec {
   name = "snapraid-${version}";
-  version = "11.0";
+  version = "11.1";
 
-  src = fetchurl {
-    url = "https://github.com/amadvance/snapraid/releases/download/v${version}/snapraid-${version}.tar.gz";
-    sha256 = "0wapbi8ph7qcyh1jwyrn2r5slzsznlxvg137r4l02xgaaf42p9rh";
+  src = fetchFromGitHub {
+    owner = "amadvance";
+    repo = "snapraid";
+    rev = "v${version}";
+    sha256 = "13v0gz22ng09gs87f7900z2sk2hg5543njl32rfn4cxxp0jncs3r";
   };
 
   doCheck = true;
 
+  buildInputs = [ autoreconfHook ];
+
   meta = {
     homepage = http://www.snapraid.it/;
     description = "A backup program for disk arrays";
diff --git a/pkgs/tools/misc/kt/default.nix b/pkgs/tools/misc/kt/default.nix
new file mode 100644
index 00000000000..738eceb20a0
--- /dev/null
+++ b/pkgs/tools/misc/kt/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  name = "kt-${version}";
+  version = "11.1.0";
+
+  src = fetchFromGitHub {
+    owner = "fgeller";
+    repo = "kt";
+    rev = "v${version}";
+    sha256 = "1ymygd3l5pfbnjmdjcrspj520v29hnv3bdgxpim38dpv3qj518vq";
+  };
+
+  goPackagePath = "github.com/fgeller/kt";
+
+  meta = with stdenv.lib; {
+    description = "Kafka command line tool";
+    homepage = https://github.com/fgeller/kt;
+    maintainers = with maintainers; [ utdemir ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/tools/networking/isync/unstable.nix b/pkgs/tools/networking/isync/unstable.nix
index a20fa2fe737..4adcaf2b9da 100644
--- a/pkgs/tools/networking/isync/unstable.nix
+++ b/pkgs/tools/networking/isync/unstable.nix
@@ -2,13 +2,13 @@
 , autoconf, automake }:
 
 stdenv.mkDerivation rec {
-  name = "isync-git-20161218";
-  rev = "77acc268123b8233843ca9bc3dcf90669efde08f";
+  name = "isync-git-20170329";
+  rev = "1fdf793a3fb9f4704977ef49e0a490a83291ea4d";
 
   src = fetchgit {
     url = "https://git.code.sf.net/p/isync/isync";
     inherit rev;
-    sha256 = "0i21cgmgm8acvd7xwdk9pll3kl6cxj9s1hakqzbwks8j4ncygwkj";
+    sha256 = "1m54jjww1b7a6rfw4wckzx6z1nd90psbb6cs38b9c015cs0vwaf5";
   };
 
   buildInputs = [ openssl pkgconfig db cyrus_sasl zlib autoconf automake ];
diff --git a/pkgs/tools/networking/ua/default.nix b/pkgs/tools/networking/ua/default.nix
new file mode 100644
index 00000000000..3b5be589f33
--- /dev/null
+++ b/pkgs/tools/networking/ua/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchgit, fetchhg, fetchbzr, fetchsvn
+, pkgconfig
+, glib, libxml2
+}:
+
+buildGoPackage rec {
+  name = "ua-unstable-${version}";
+  version = "2017-02-24";
+  rev = "325dab92c60e0f028e55060f0c288aa70905fb17";
+
+  goPackagePath = "github.com/sloonz/ua";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/sloonz/ua.git";
+    sha256 = "0452qknc8km9495324g6b5ja3shvk8jl7aa9nrjhdylf09dp2nif";
+  };
+
+  goDeps = ./deps.nix;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib libxml2 ];
+
+  meta = {
+    homepage = "https://github.com/sloonz/ua";
+    license = stdenv.lib.licenses.isc;
+    shortDescription = "Universal Aggregator";
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ ttuegel ];
+  };
+}
diff --git a/pkgs/tools/networking/ua/deps.nix b/pkgs/tools/networking/ua/deps.nix
new file mode 100644
index 00000000000..e59b9f239a6
--- /dev/null
+++ b/pkgs/tools/networking/ua/deps.nix
@@ -0,0 +1,57 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.0
+[
+  {
+    goPackagePath = "github.com/sloonz/cfeedparser";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sloonz/cfeedparser";
+      rev = "a220b181f09fa7fba347c7fa72168ed8a010907a";
+      sha256 = "1dsdzflwbb0cw39bs37shggmswggb326sfdb5x25f4bpd19z6qp0";
+    };
+  }
+  {
+    goPackagePath = "github.com/sloonz/go-maildir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sloonz/go-maildir";
+      rev = "4629e76d952bb24730bbe1b4c7bc628cd54babb6";
+      sha256 = "0i9r7hhk0ih47pmc9ixhv17fa6gba3j7vk9g8j0di0pr0siha65f";
+    };
+  }
+  {
+    goPackagePath = "github.com/sloonz/go-mime-message";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sloonz/go-mime-message";
+      rev = "cf50e17d2410fee25cdb89485ab0d5996f2d3bfc";
+      sha256 = "09r45w2qfl0rx785xpgcjv9bvdnwkz7fyr272rdi3krwr900fwxs";
+    };
+  }
+  {
+    goPackagePath = "github.com/sloonz/go-qprintable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sloonz/go-qprintable";
+      rev = "775b3a4592d5bfc47b0ba398ec0d4dba018e5926";
+      sha256 = "19r8ica7kd946brdh1zn4hkzgbciqsz42a2p1h7hgzpmld51kg43";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/redis.v3";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-redis/redis";
+      rev = "b5e368500d0a508ef8f16e9c2d4025a8a46bcc29";
+      sha256 = "1syhnm1csrlfh1jgd1v9bzf2pp9ljyg4ks3z6xx0nqd83xmyhdzh";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/bsm/ratelimit.v1";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bsm/ratelimit";
+      rev = "db14e161995a5177acef654cb0dd785e8ee8bc22";
+      sha256 = "1ph6dsvgwrsli9akh6arwkvz78hkdb42lyqmgfckjcsar1a2fcsh";
+    };
+  }
+]
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1fb20dab34d..50aa1b0e8af 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4249,6 +4249,8 @@ with pkgs;
 
   u9fs = callPackage ../servers/u9fs { };
 
+  ua = callPackage ../tools/networking/ua { };
+
   ucl = callPackage ../development/libraries/ucl { };
 
   ucspi-tcp = callPackage ../tools/networking/ucspi-tcp { };
@@ -6219,6 +6221,8 @@ with pkgs;
   apacheKafka_0_9 = callPackage ../servers/apache-kafka { majorVersion = "0.9"; };
   apacheKafka_0_10 = callPackage ../servers/apache-kafka { majorVersion = "0.10"; };
 
+  kt = callPackage ../tools/misc/kt {};
+
   asn2quickder = callPackage ../development/tools/asn2quickder {};
 
   astyle = callPackage ../development/tools/misc/astyle { };
@@ -9240,7 +9244,6 @@ with pkgs;
   wolfssl = callPackage ../development/libraries/wolfssl { };
 
   openssl = openssl_1_0_2;
-  openssl-steam = openssl_1_0_2-steam;
 
   inherit (callPackages ../development/libraries/openssl {
       fetchurl = fetchurlBoot;
@@ -9250,8 +9253,7 @@ with pkgs;
       };
     })
     openssl_1_0_2
-    openssl_1_1_0
-    openssl_1_0_2-steam;
+    openssl_1_1_0;
 
   openssl-chacha = callPackage ../development/libraries/openssl/chacha.nix {
     cryptodevHeaders = linuxPackages.cryptodev.override {
@@ -14814,6 +14816,8 @@ with pkgs;
 
   nedit = callPackage ../applications/editors/nedit { };
 
+  nomacs = libsForQt5.callPackage ../applications/graphics/nomacs { };
+
   notepadqq = libsForQt56.callPackage ../applications/editors/notepadqq { };
 
   notmuch = callPackage ../applications/networking/mailreaders/notmuch { };
@@ -15610,7 +15614,7 @@ with pkgs;
 
   taskserver = callPackage ../servers/misc/taskserver { };
 
-  tdesktop = qt56.callPackage ../applications/networking/instant-messengers/telegram/tdesktop {
+  tdesktop = qt5.callPackage ../applications/networking/instant-messengers/telegram/tdesktop {
     inherit (pythonPackages) gyp;
   };
 
diff --git a/pkgs/top-level/release-small.nix b/pkgs/top-level/release-small.nix
index 8872d7c676e..b12eda6f150 100644
--- a/pkgs/top-level/release-small.nix
+++ b/pkgs/top-level/release-small.nix
@@ -157,7 +157,7 @@ with import ./release-lib.nix { inherit supportedSystems; };
   time = linux;
   tinycc = linux;
   udev = linux;
-  unrar = linux;
+  unar = linux;
   unzip = all;
   upstart = linux;
   usbutils = linux;