summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--maintainers/maintainer-list.nix5
-rw-r--r--pkgs/applications/gis/saga/default.nix8
-rw-r--r--pkgs/applications/gis/saga/finite-6.3.0.patch55
-rw-r--r--pkgs/applications/misc/megasync/default.nix125
-rw-r--r--pkgs/applications/misc/megasync/install-megasync.patch21
-rw-r--r--pkgs/applications/misc/megasync/noinstall-distro-version.patch13
-rw-r--r--pkgs/applications/networking/instant-messengers/rambox/default.nix9
-rw-r--r--pkgs/development/compilers/crystal/default.nix54
-rw-r--r--pkgs/development/tools/build-managers/shards/default.nix4
-rw-r--r--pkgs/development/tools/electron/default.nix15
-rw-r--r--pkgs/development/tools/scry/default.nix9
-rw-r--r--pkgs/development/tools/scry/fix_for_crystal_0_28_and_above.patch20
-rw-r--r--pkgs/games/freeciv/default.nix47
-rw-r--r--pkgs/os-specific/linux/kernel/linux-mptcp-93.nix47
-rw-r--r--pkgs/os-specific/linux/kernel/linux-mptcp-94.nix26
-rw-r--r--pkgs/os-specific/linux/kernel/linux-mptcp-95.nix27
-rw-r--r--pkgs/os-specific/linux/kernel/linux-mptcp.nix49
-rw-r--r--pkgs/os-specific/linux/kernel/mptcp-config.nix28
-rw-r--r--pkgs/top-level/all-packages.nix23
19 files changed, 379 insertions, 206 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 3c8c936d93a..c5ab50ba5e3 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -3278,6 +3278,11 @@
     github = "michelk";
     name = "Michel Kuhlmann";
   };
+  michojel = {
+    email = "mic.liamg@gmail.com";
+    github = "michojel";
+    name = "Michal Minář";
+  };
   mickours = {
     email = "mickours@gmail.com<";
     github = "mickours";
diff --git a/pkgs/applications/gis/saga/default.nix b/pkgs/applications/gis/saga/default.nix
index 4738bfba14a..34bb8c9f55a 100644
--- a/pkgs/applications/gis/saga/default.nix
+++ b/pkgs/applications/gis/saga/default.nix
@@ -3,7 +3,7 @@
   unixODBC , poppler, hdf4, hdf5, netcdf, sqlite, qhull, giflib }:
 
 stdenv.mkDerivation rec {
-  name = "saga-6.3.0";
+  name = "saga-7.2.0";
 
   # See https://groups.google.com/forum/#!topic/nix-devel/h_vSzEJAPXs
   # for why the have additional buildInputs on darwin
@@ -14,13 +14,11 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  patches = [ ./finite-6.3.0.patch];
-
   CXXFLAGS = stdenv.lib.optionalString stdenv.cc.isClang "-std=c++11 -Wno-narrowing";
 
   src = fetchurl {
-    url = "mirror://sourceforge/project/saga-gis/SAGA%20-%206/SAGA%20-%206.3.0/saga-6.3.0.tar.gz";
-    sha256 = "0hyjim8fcp3mna1hig22nnn4ki3j6b7096am2amcs99sdr09jjxv";
+    url = "mirror://sourceforge/project/saga-gis/SAGA%20-%207/SAGA%20-%207.2.0/saga-7.2.0.tar.gz";
+    sha256 = "10gjc5mc5kwg2c2la22hgwx6s5q60z9xxffjpjw0zrlhksijl5an";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/gis/saga/finite-6.3.0.patch b/pkgs/applications/gis/saga/finite-6.3.0.patch
deleted file mode 100644
index 91c9543edfd..00000000000
--- a/pkgs/applications/gis/saga/finite-6.3.0.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-diff --git a/src/tools/imagery/imagery_maxent/me.cpp b/src/tools/imagery/imagery_maxent/me.cpp
-index c5da854..d3e9cff 100755
---- a/src/tools/imagery/imagery_maxent/me.cpp
-+++ b/src/tools/imagery/imagery_maxent/me.cpp
-@@ -21,7 +21,7 @@
- #ifdef _SAGA_MSW
- #define isinf(x) (!_finite(x))
- #else
--#define isinf(x) (!finite(x))
-+#define isinf(x) (!isfinite(x))
- #endif
- 
- /** The input array contains a set of log probabilities lp1, lp2, lp3
-@@ -47,7 +47,7 @@ double sumLogProb(vector<double>& logprobs)
- /** returns log (e^logprob1 + e^logprob2). */
- double sumLogProb(double logprob1, double logprob2)
- {
--  if (isinf(logprob1) && isinf(logprob2)) 
-+  if (isinf(logprob1) && isinf(logprob2))
-     return logprob1; // both prob1 and prob2 are 0, return log 0.
-   if (logprob1>logprob2)
-     return logprob1+log(1+exp(logprob2-logprob1));
-@@ -70,8 +70,8 @@ void MaxEntModel::print(ostream& ostrm, MaxEntTrainer& trainer)
-   for (FtMap::iterator it = _index.begin(); it!=_index.end(); it++) {
-     unsigned long i = it->second;
-     for (unsigned long c = 0; c<_classes; c++) {
--      ostrm << "lambda(" << trainer.className(c) << ", " 
--	    << trainer.getStr(it->first) << ")=" 
-+      ostrm << "lambda(" << trainer.className(c) << ", "
-+	    << trainer.getStr(it->first) << ")="
- 	    << _lambda[i+c] << endl;
-     }
-   }
-@@ -86,7 +86,7 @@ int MaxEntModel::getProbs(MaxEntEvent& event, vector<double>& probs)
-     double s = 0;
-     for (unsigned int f = 0; f<event.size(); f++) {
-       FtMap::iterator it = _index.find(event[f]);
--      if (it!=_index.end()) 
-+      if (it!=_index.end())
- 	s += _lambda[it->second+c];
-     }
-     probs[c] = s;
-@@ -142,10 +142,10 @@ double MaxEntModel::getObsCounts(EventSet& events, vector<double>& obsCounts)
-     double ftSum = 0;
-     for (unsigned long j=0; j<e.size(); j++) {
-       FtMap::iterator it = _index.find(e[j]);
--      if (it!=_index.end()) 
-+      if (it!=_index.end())
- 	obsCounts[it->second+c] += count;
-       else { // new feature, need to expand obsCounts and _lambda
--	for (unsigned int k = 0; k<_classes; k++) 
-+	for (unsigned int k = 0; k<_classes; k++)
- 	  obsCounts.push_back(0);
- 	obsCounts[_lambda.size()+c] += count;
- 	addFeature(e[j]);
diff --git a/pkgs/applications/misc/megasync/default.nix b/pkgs/applications/misc/megasync/default.nix
new file mode 100644
index 00000000000..b3e73986417
--- /dev/null
+++ b/pkgs/applications/misc/megasync/default.nix
@@ -0,0 +1,125 @@
+{ stdenv
+, autoconf
+, automake
+, c-ares
+, cryptopp
+, curl
+, doxygen
+, fetchFromGitHub
+, ffmpeg
+, hicolor-icon-theme
+, libmediainfo
+, libraw
+, libsodium
+, libtool
+, libuv
+, libzen
+, lsb-release
+, pkgconfig
+, qt5
+, sqlite
+, swig
+, unzip
+, wget
+}:
+
+stdenv.mkDerivation rec {
+  name = "megasync-${version}";
+  version = "4.1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "meganz";
+    repo = "MEGAsync";
+    rev = "v${version}_Linux";
+    sha256 = "0lc228q3s9xp78dxjn22g6anqlsy1hi7a6yfs4q3l6gyfc3qcxl2";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    autoconf
+    automake
+    doxygen
+    lsb-release
+    pkgconfig
+    qt5.qmake
+    qt5.qttools
+    swig
+  ];
+  buildInputs = [
+    c-ares
+    cryptopp
+    curl
+    ffmpeg
+    hicolor-icon-theme
+    libmediainfo
+    libraw
+    libsodium
+    libtool
+    libuv
+    libzen
+    qt5.qtbase
+    qt5.qtsvg
+    sqlite
+    unzip
+    wget
+  ];
+
+  patches = [
+    # Distro and version targets attempt to use lsb_release which is broken
+    # (see issue: https://github.com/NixOS/nixpkgs/issues/22729)
+    ./noinstall-distro-version.patch
+    # megasync target is not part of the install rule thanks to a commented block
+    ./install-megasync.patch
+  ];
+
+  postPatch = ''
+    for file in $(find src/ -type f \( -iname configure -o -iname \*.sh  \) ); do
+      substituteInPlace "$file" --replace "/bin/bash" "${stdenv.shell}"
+    done
+  '';
+
+  dontUseQmakeConfigure = true;
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    cd src/MEGASync/mega
+    ./autogen.sh
+  '';
+
+  configureFlags = [
+          "--disable-examples"
+          "--disable-java"
+          "--disable-php"
+          "--enable-chat"
+          "--with-cares"
+          "--with-cryptopp"
+          "--with-curl"
+          "--with-ffmpeg"
+          "--without-freeimage"  # unreferenced even when found
+          "--without-readline"
+          "--without-termcap"
+          "--with-sodium"
+          "--with-sqlite"
+          "--with-zlib"
+    ];
+
+  postConfigure = ''
+    cd ../..
+  '';
+
+  preBuild = ''
+    qmake CONFIG+="release" MEGA.pro
+    pushd MEGASync
+      lrelease MEGASync.pro
+      DESKTOP_DESTDIR="$out" qmake PREFIX="$out" -o Makefile MEGASync.pro CONFIG+=release
+    popd
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Easy automated syncing between your computers and your MEGA Cloud Drive";
+    homepage    = https://mega.nz/;
+    license     = licenses.unfree;
+    platforms   = [ "i686-linux" "x86_64-linux" ];
+    maintainers = [ maintainers.michojel ];
+  };
+}
diff --git a/pkgs/applications/misc/megasync/install-megasync.patch b/pkgs/applications/misc/megasync/install-megasync.patch
new file mode 100644
index 00000000000..7d8748528e7
--- /dev/null
+++ b/pkgs/applications/misc/megasync/install-megasync.patch
@@ -0,0 +1,21 @@
+Index: source/src/MEGASync/MEGASync.pro
+===================================================================
+--- source.orig/src/MEGASync/MEGASync.pro
++++ source/src/MEGASync/MEGASync.pro
+@@ -28,11 +28,11 @@ unix:!macx {
+     TARGET = megasync
+ 
+ #    Uncomment the following if "make install" doesn't copy megasync in /usr/bin directory
+-#    isEmpty(PREFIX) {
+-#        PREFIX = /usr
+-#    }
+-#    target.path = $$PREFIX/bin
+-#    INSTALLS += target
++    isEmpty(PREFIX) {
++        PREFIX = /usr
++    }
++    target.path = $$PREFIX/bin
++    INSTALLS += target
+ }
+ else {
+     TARGET = MEGAsync
diff --git a/pkgs/applications/misc/megasync/noinstall-distro-version.patch b/pkgs/applications/misc/megasync/noinstall-distro-version.patch
new file mode 100644
index 00000000000..bbf100737bc
--- /dev/null
+++ b/pkgs/applications/misc/megasync/noinstall-distro-version.patch
@@ -0,0 +1,13 @@
+Index: source/src/MEGASync/platform/platform.pri
+===================================================================
+--- source.orig/src/MEGASync/platform/platform.pri
++++ source/src/MEGASync/platform/platform.pri
+@@ -37,7 +37,7 @@ unix:!macx {
+     system(command -v lsb_release): version.commands = lsb_release -rs > $$version.target
+ 	version.files = $$version.target
+ 
+-	INSTALLS += distro version
++	# INSTALLS += distro version
+ 
+     QT += dbus
+     SOURCES += $$PWD/linux/LinuxPlatform.cpp \
diff --git a/pkgs/applications/networking/instant-messengers/rambox/default.nix b/pkgs/applications/networking/instant-messengers/rambox/default.nix
index 84ea02f7cb3..db488c2f670 100644
--- a/pkgs/applications/networking/instant-messengers/rambox/default.nix
+++ b/pkgs/applications/networking/instant-messengers/rambox/default.nix
@@ -1,6 +1,5 @@
 { stdenv, newScope, makeWrapper
-, wrapGAppsHook, gnome3, glib
-, electron_3, xdg_utils, makeDesktopItem
+, electron, xdg_utils, makeDesktopItem
 , auth0ClientID ? "0spuNKfIGeLAQ_Iki9t3fGxbfJl3k8SU"
 , auth0Domain ? "nixpkgs.auth0.com" }:
 
@@ -28,9 +27,8 @@ with self;
 stdenv.mkDerivation {
   name = "rambox-${rambox-bare.version}";
 
-  nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
+  nativeBuildInputs = [ makeWrapper ];
 
-  buildInputs = [ glib gnome3.gsettings_desktop_schemas ];
   unpackPhase = ":";
 
   dontWrapGApps = true; # we only want $gappsWrapperArgs here
@@ -43,9 +41,8 @@ stdenv.mkDerivation {
   '';
 
   postFixup = ''
-    makeWrapper ${electron_3}/bin/electron $out/bin/rambox \
+    makeWrapper ${electron}/bin/electron $out/bin/rambox \
       --add-flags "${rambox-bare} --without-update" \
-      "''${gappsWrapperArgs[@]}" \
       --prefix PATH : ${xdg_utils}/bin
   '';
 
diff --git a/pkgs/development/compilers/crystal/default.nix b/pkgs/development/compilers/crystal/default.nix
index 1e0f8656ef0..2e823fe1f0f 100644
--- a/pkgs/development/compilers/crystal/default.nix
+++ b/pkgs/development/compilers/crystal/default.nix
@@ -1,11 +1,11 @@
 { stdenv, lib, fetchFromGitHub, fetchurl, makeWrapper
-, gmp, openssl, readline, tzdata, libxml2, libyaml
+, coreutils, git, gmp, nettools, openssl, readline, tzdata, libxml2, libyaml
 , boehmgc, libatomic_ops, pcre, libevent, libiconv, llvm, clang, which, zlib }:
 
 # We need multiple binaries as a given binary isn't always able to build
-# (even slightly) older or newer version.
+# (even slightly) older or newer versions.
 # - 0.26.1 can build 0.25.x and 0.26.x but not 0.27.x
-# - 0.27.2 can build 0.27.x but not 0.25.x and 0.26.x
+# - 0.27.2 can build 0.27.x but not 0.25.x, 0.26.x and 0.29.x
 #
 # We need to keep around at least the latest version released with a stable
 # NixOS
@@ -19,7 +19,7 @@ let
 
   arch = archs."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
 
-  checkInputs = [ gmp openssl readline libxml2 libyaml tzdata ];
+  checkInputs = [ git gmp openssl readline libxml2 libyaml ];
 
   genericBinary = { version, sha256s, rel ? 1 }:
   stdenv.mkDerivation rec {
@@ -38,8 +38,8 @@ let
 
   generic = { version, sha256, binary, doCheck ? true }:
   stdenv.mkDerivation rec {
-    inherit doCheck;
-    name = "crystal-${version}";
+    pname = "crystal";
+    inherit doCheck version;
 
     src = fetchFromGitHub {
       owner  = "crystal-lang";
@@ -48,14 +48,30 @@ let
       inherit sha256;
     };
 
+    # we are almost able to run the full test suite now
     postPatch = ''
+      substituteInPlace src/crystal/system/unix/time.cr \
+        --replace /usr/share/zoneinfo ${tzdata}/share/zoneinfo
+
       ln -s spec/compiler spec/std
+
+      substituteInPlace spec/std/file_spec.cr \
+        --replace '/bin/ls' '${coreutils}/bin/ls' \
+        --replace '/usr/share' '/tmp/test'
+
       substituteInPlace spec/std/process_spec.cr \
-        --replace /bin/ /run/current-system/sw/bin/
+        --replace '/bin/cat' '${coreutils}/bin/cat' \
+        --replace '/bin/ls' '${coreutils}/bin/ls' \
+        --replace '/usr/bin/env' '${coreutils}/bin/env' \
+        --replace '"env"' '"${coreutils}/bin/env"' \
+        --replace '"/usr"' '"/tmp"'
+
+      substituteInPlace spec/std/system_spec.cr \
+        --replace '`hostname`' '`${nettools}/bin/hostname`'
     '';
 
     buildInputs = [
-      boehmgc libatomic_ops pcre libevent
+      boehmgc libatomic_ops pcre libevent libyaml
       llvm zlib openssl
     ] ++ stdenv.lib.optionals stdenv.isDarwin [
       libiconv
@@ -111,7 +127,11 @@ let
     checkTarget = "spec";
 
     preCheck = ''
+      export HOME=/tmp
+      mkdir -p $HOME/test
+
       export LIBRARY_PATH=${lib.makeLibraryPath checkInputs}:$LIBRARY_PATH
+      export PATH=${lib.makeBinPath checkInputs}:$PATH
     '';
 
     meta = with lib; {
@@ -142,6 +162,15 @@ in rec {
     };
   };
 
+  binaryCrystal_0_29 = genericBinary {
+    version = "0.29.0";
+    sha256s = {
+      "x86_64-linux"  = "1wrk29sfx35akg7hxwpdiikvl18wd40gq1kwirw7x522hnq7vlna";
+      "i686-linux"    = "1nx0piis2k3nn7kqiijqazzbvlaavhgvsln0l3dxmpfa4i4dz5h2";
+      "x86_64-darwin" = "1fd0fbyf05abivnp3igjlrm2axf65n2wdmg4aq6nqj60ipc01rvd";
+    };
+  };
+
   crystal_0_25 = generic {
     version = "0.25.1";
     sha256  = "15xmbkalsdk9qpc6wfpkly3sifgw6a4ai5jzlv78dh3jp7glmgyl";
@@ -163,5 +192,12 @@ in rec {
     binary = binaryCrystal_0_27;
   };
 
-  crystal = crystal_0_27;
+  crystal_0_29 = generic {
+    version = "0.29.0";
+    sha256  = "0v9l253b2x8yw6a43vvalywpwciwr094l3g5wakmndfrzak2s3zr";
+    doCheck = false; # 6 checks are failing now
+    binary = binaryCrystal_0_29;
+  };
+
+  crystal = crystal_0_29;
 }
diff --git a/pkgs/development/tools/build-managers/shards/default.nix b/pkgs/development/tools/build-managers/shards/default.nix
index 02d5adb0c34..00345179131 100644
--- a/pkgs/development/tools/build-managers/shards/default.nix
+++ b/pkgs/development/tools/build-managers/shards/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "shards-${version}";
-  version = "0.8.1";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner  = "crystal-lang";
     repo   = "shards";
     rev    = "v${version}";
-    sha256 = "1cjn2lafr08yiqzlhyqx14jjjxf1y24i2kk046px07gljpnlgqwk";
+    sha256 = "19q0xww4v0h5ln9gz8d8zv0c9ig761ik7gw8y31yxynzgzihwpf4";
   };
 
   buildInputs = [ crystal libyaml pcre which ];
diff --git a/pkgs/development/tools/electron/default.nix b/pkgs/development/tools/electron/default.nix
index b6f7d0b072b..fca9bc866fa 100644
--- a/pkgs/development/tools/electron/default.nix
+++ b/pkgs/development/tools/electron/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, libXScrnSaver, makeWrapper, fetchurl, unzip, atomEnv, libuuid, at-spi2-atk }:
+{ stdenv, libXScrnSaver, makeWrapper, fetchurl, wrapGAppsHook, gtk3, unzip, atomEnv, libuuid, at-spi2-atk }:
 
 let
   version = "4.1.5";
@@ -35,7 +35,15 @@ let
       };
     }.${stdenv.hostPlatform.system} or throwSystem;
 
-    buildInputs = [ unzip makeWrapper ];
+    buildInputs = [ gtk3 ];
+
+    nativeBuildInputs = [
+      unzip
+      makeWrapper
+      wrapGAppsHook
+    ];
+
+    dontWrapGApps = true; # electron is in lib, we need to wrap it manually
 
     buildCommand = ''
       mkdir -p $out/lib/electron $out/bin
@@ -50,7 +58,8 @@ let
         $out/lib/electron/electron
 
       wrapProgram $out/lib/electron/electron \
-        --prefix LD_PRELOAD : ${stdenv.lib.makeLibraryPath [ libXScrnSaver ]}/libXss.so.1
+        --prefix LD_PRELOAD : ${stdenv.lib.makeLibraryPath [ libXScrnSaver ]}/libXss.so.1 \
+        "''${gappsWrapperArgs[@]}"
     '';
   };
 
diff --git a/pkgs/development/tools/scry/default.nix b/pkgs/development/tools/scry/default.nix
index 03e7c64f549..05f7805a55a 100644
--- a/pkgs/development/tools/scry/default.nix
+++ b/pkgs/development/tools/scry/default.nix
@@ -1,9 +1,8 @@
-{ stdenv, fetchFromGitHub, crystal, shards, which }:
+{ stdenv, lib, fetchFromGitHub, crystal, shards, llvm, which }:
 
 stdenv.mkDerivation rec {
   pname = "scry";
-  # 0.7.1 doesn't work with crystal > 0.25
-  version = "0.7.1.20180919";
+  version = "0.8.0";
 
   src = fetchFromGitHub {
     owner  = "crystal-lang-tools";
@@ -12,7 +11,9 @@ stdenv.mkDerivation rec {
     sha256 = "1yq7jap3y5pr2yqc6fn6bxshzwv7dz3w97incq7wpcvi7ibb4lcn";
   };
 
-  nativeBuildInputs = [ crystal shards which ];
+  patches = lib.optional (lib.versionAtLeast crystal.version "0.28") ./fix_for_crystal_0_28_and_above.patch;
+
+  nativeBuildInputs = [ crystal shards llvm which ];
 
   buildPhase = ''
     runHook preBuild
diff --git a/pkgs/development/tools/scry/fix_for_crystal_0_28_and_above.patch b/pkgs/development/tools/scry/fix_for_crystal_0_28_and_above.patch
new file mode 100644
index 00000000000..909b790b81a
--- /dev/null
+++ b/pkgs/development/tools/scry/fix_for_crystal_0_28_and_above.patch
@@ -0,0 +1,20 @@
+diff --git a/src/scry/completion_provider.cr b/src/scry/completion_provider.cr
+index 29e0d36..f67438c 100644
+--- a/src/scry/completion_provider.cr
++++ b/src/scry/completion_provider.cr
+@@ -1,4 +1,5 @@
+ require "./log"
++require "compiler/crystal/codegen/target"
+ require "compiler/crystal/crystal_path"
+ require "./completion/*"
+
+diff --git a/src/scry/parse_analyzer.cr b/src/scry/parse_analyzer.cr
+index d87eca4..bbe9ed5 100644
+--- a/src/scry/parse_analyzer.cr
++++ b/src/scry/parse_analyzer.cr
+@@ -1,4 +1,5 @@
+ require "compiler/crystal/syntax"
++require "compiler/crystal/codegen/target"
+ require "compiler/crystal/crystal_path"
+ require "./workspace"
+ require "./text_document"
diff --git a/pkgs/games/freeciv/default.nix b/pkgs/games/freeciv/default.nix
index 5d7883c1894..9fc260e7406 100644
--- a/pkgs/games/freeciv/default.nix
+++ b/pkgs/games/freeciv/default.nix
@@ -1,6 +1,8 @@
-{ stdenv, fetchurl, zlib, bzip2, pkgconfig, curl, lzma, gettext, libiconv
+{ stdenv, fetchFromGitHub, autoreconfHook, lua5_3, pkgconfig, python
+, zlib, bzip2, curl, lzma, gettext, libiconv
 , sdlClient ? true, SDL, SDL_mixer, SDL_image, SDL_ttf, SDL_gfx, freetype, fluidsynth
-, gtkClient ? false, gtk2
+, gtkClient ? false, gtk3
+, qtClient ? false, qt5
 , server ? true, readline
 , enableSqlite ? true, sqlite
 }:
@@ -8,31 +10,42 @@
 let
   inherit (stdenv.lib) optional optionals;
 
-  name = "freeciv";
+in stdenv.mkDerivation rec {
+  pname = "freeciv";
   version = "2.6.0";
-in
-stdenv.mkDerivation {
-  name = "${name}-${version}";
-  inherit version;
-
-  src = fetchurl {
-    url = "mirror://sourceforge/freeciv/${name}-${version}.tar.bz2";
-    sha256 = "16f9wsnn7073s6chzbm3819swd0iw019p9nrzr3diiynk28kj83w";
+
+  src = fetchFromGitHub {
+    owner = "freeciv";
+    repo = "freeciv";
+    rev = "R${builtins.replaceStrings [ "." ] [ "_" ] version}";
+    sha256 = "1b3q5k9wpv7z24svz01ybw8d8wlzkkdr6ia5hgp6cxk6vq67n67s";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  postPatch = ''
+    for f in {common,utility}/*.py; do
+      substituteInPlace $f \
+        --replace '/usr/bin/env python' ${python.interpreter}
+    done
+  '';
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
 
-  buildInputs = [ zlib bzip2 curl lzma gettext libiconv ]
+  buildInputs = [ lua5_3 zlib bzip2 curl lzma gettext libiconv ]
     ++ optionals sdlClient [ SDL SDL_mixer SDL_image SDL_ttf SDL_gfx freetype fluidsynth ]
-    ++ optionals gtkClient [ gtk2 ]
+    ++ optionals gtkClient [ gtk3 ]
+    ++ optionals qtClient  [ qt5.qtbase ]
     ++ optional server readline
     ++ optional enableSqlite sqlite;
 
   configureFlags = [ "--enable-shared" ]
     ++ optional sdlClient "--enable-client=sdl"
+    ++ optionals qtClient [
+      "--enable-client=qt"
+      "--with-qt5-includes=${qt5.qtbase.dev}/include"
+    ]
     ++ optional enableSqlite "--enable-fcdb=sqlite3"
     ++ optional (!gtkClient) "--enable-fcmp=cli"
-    ++ optional (!server) "--disable-server";
+    ++ optional (!server)    "--disable-server";
 
   enableParallelBuilding = true;
 
@@ -46,11 +59,11 @@ stdenv.mkDerivation {
       to the space age...
     '';
 
-    homepage = http://freeciv.wikia.com/;
+    homepage = http://www.freeciv.org; # http only
     license = licenses.gpl2;
 
     maintainers = with maintainers; [ pierron ];
     platforms = platforms.unix;
-    hydraPlatforms = stdenv.lib.platforms.linux; # sdl-config times out on darwin
+    hydraPlatforms = platforms.linux; # sdl-config times out on darwin
   };
 }
diff --git a/pkgs/os-specific/linux/kernel/linux-mptcp-93.nix b/pkgs/os-specific/linux/kernel/linux-mptcp-93.nix
deleted file mode 100644
index 8be59fbea90..00000000000
--- a/pkgs/os-specific/linux/kernel/linux-mptcp-93.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ stdenv, buildPackages, fetchFromGitHub, perl, buildLinux, ... } @ args:
-
-buildLinux (rec {
-  mptcpVersion = "0.93";
-  modDirVersion = "4.9.60";
-  version = "${modDirVersion}-mptcp_v${mptcpVersion}";
-
-  extraMeta = {
-    branch = "4.4";
-    maintainers = with stdenv.lib.maintainers; [ teto layus ];
-  };
-
-  src = fetchFromGitHub {
-    owner = "multipath-tcp";
-    repo = "mptcp";
-    rev = "v${mptcpVersion}";
-    sha256 = "1irlppzvcmckrazs2c4vg6y8ji31552izc3wqabf401v57jvxcys";
-  };
-
-  extraConfig = ''
-    IPV6 y
-    MPTCP y
-    IP_MULTIPLE_TABLES y
-
-    # Enable advanced path-managers...
-    MPTCP_PM_ADVANCED y
-    MPTCP_FULLMESH y
-    MPTCP_NDIFFPORTS y
-    # ... but use none by default.
-    # The default is safer if source policy routing is not setup.
-    DEFAULT_DUMMY y
-    DEFAULT_MPTCP_PM default
-
-    # MPTCP scheduler selection.
-    # Disabled as the only non-default is the useless round-robin.
-    MPTCP_SCHED_ADVANCED n
-    DEFAULT_MPTCP_SCHED default
-
-    # Smarter TCP congestion controllers
-    TCP_CONG_LIA m
-    TCP_CONG_OLIA m
-    TCP_CONG_WVEGAS m
-    TCP_CONG_BALIA m
-
-  '' + (args.extraConfig or "");
-} // args)
-
diff --git a/pkgs/os-specific/linux/kernel/linux-mptcp-94.nix b/pkgs/os-specific/linux/kernel/linux-mptcp-94.nix
new file mode 100644
index 00000000000..e53c3ceb5c4
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/linux-mptcp-94.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildPackages, fetchFromGitHub, perl, buildLinux, structuredExtraConfig ? {}, ... } @ args:
+let
+  mptcpVersion = "0.94.6";
+  modDirVersion = "4.14.127";
+in
+buildLinux ({
+  version = "${modDirVersion}-mptcp_v${mptcpVersion}";
+  inherit modDirVersion;
+
+  extraMeta = {
+    branch = "4.4";
+    maintainers = with stdenv.lib.maintainers; [ teto layus ];
+  };
+
+  src = fetchFromGitHub {
+    owner = "multipath-tcp";
+    repo = "mptcp";
+    rev = "v${mptcpVersion}";
+    sha256 = "071cx9205wpzhi5gc2da79w2abs3czd60jg0xml7j1szc5wl4yfn";
+  };
+
+  structuredExtraConfig = stdenv.lib.mkMerge [
+    (import ./mptcp-config.nix { inherit stdenv; })
+    structuredExtraConfig
+  ];
+} // args)
diff --git a/pkgs/os-specific/linux/kernel/linux-mptcp-95.nix b/pkgs/os-specific/linux/kernel/linux-mptcp-95.nix
new file mode 100644
index 00000000000..ad933ff63a7
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/linux-mptcp-95.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPackages, fetchFromGitHub, perl, buildLinux, structuredExtraConfig ? {}, ... } @ args:
+let
+  mptcpVersion = "0.95";
+  modDirVersion = "4.19.55";
+in
+buildLinux ({
+  version = "${modDirVersion}-mptcp_v${mptcpVersion}";
+  inherit modDirVersion;
+
+  extraMeta = {
+    branch = "4.19";
+    maintainers = with stdenv.lib.maintainers; [ teto layus ];
+  };
+
+  src = fetchFromGitHub {
+    owner = "multipath-tcp";
+    repo = "mptcp";
+    rev = "v${mptcpVersion}";
+    sha256 = "04a66iq5vsiz8mkpszfxmqknz7y4w3lsckrcz6q1syjpk0pdyiyw";
+  };
+
+  structuredExtraConfig = stdenv.lib.mkMerge [
+    (import ./mptcp-config.nix { inherit stdenv; })
+    structuredExtraConfig
+  ];
+
+} // args)
diff --git a/pkgs/os-specific/linux/kernel/linux-mptcp.nix b/pkgs/os-specific/linux/kernel/linux-mptcp.nix
deleted file mode 100644
index 44499f39cc1..00000000000
--- a/pkgs/os-specific/linux/kernel/linux-mptcp.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{ stdenv, buildPackages, fetchFromGitHub, perl, buildLinux, structuredExtraConfig ? {}, ... } @ args:
-let
-  mptcpVersion = "0.94.4";
-  modDirVersion = "4.14.110";
-in
-buildLinux ({
-  version = "${modDirVersion}-mptcp_v${mptcpVersion}";
-  inherit modDirVersion;
-
-  extraMeta = {
-    branch = "4.4";
-    maintainers = with stdenv.lib.maintainers; [ teto layus ];
-  };
-
-  src = fetchFromGitHub {
-    owner = "multipath-tcp";
-    repo = "mptcp";
-    rev = "v${mptcpVersion}";
-    sha256 = "1ng6p1djhm3m5g44yyq7gpqqbzsnhm9rimsafp5g4dx8cm27a70f";
-  };
-
-  structuredExtraConfig = with import ../../../../lib/kernel.nix { inherit (stdenv) lib; version = null; };
-    stdenv.lib.mkMerge [ {
-    IPV6               = yes;
-    MPTCP              = yes;
-    IP_MULTIPLE_TABLES = yes;
-
-    # Enable advanced path-managers...
-    MPTCP_PM_ADVANCED = yes;
-    MPTCP_FULLMESH = yes;
-    MPTCP_NDIFFPORTS = yes;
-    # ... but use none by default.
-    # The default is safer if source policy routing is not setup.
-    DEFAULT_DUMMY = yes;
-    DEFAULT_MPTCP_PM.freeform = "default";
-
-    # MPTCP scheduler selection.
-    MPTCP_SCHED_ADVANCED = yes;
-    DEFAULT_MPTCP_SCHED.freeform = "default";
-
-    # Smarter TCP congestion controllers
-    TCP_CONG_LIA = module;
-    TCP_CONG_OLIA = module;
-    TCP_CONG_WVEGAS = module;
-    TCP_CONG_BALIA = module;
-  }
-  structuredExtraConfig
-  ];
-} // args)
diff --git a/pkgs/os-specific/linux/kernel/mptcp-config.nix b/pkgs/os-specific/linux/kernel/mptcp-config.nix
new file mode 100644
index 00000000000..e5e3ee283ff
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/mptcp-config.nix
@@ -0,0 +1,28 @@
+{ stdenv }:
+with import ../../../../lib/kernel.nix { inherit (stdenv) lib; version = null; };
+{
+    # DRM_AMDGPU = yes;
+
+    IPV6               = yes;
+    MPTCP              = yes;
+    IP_MULTIPLE_TABLES = yes;
+
+    # Enable advanced path-managers...
+    MPTCP_PM_ADVANCED = yes;
+    MPTCP_FULLMESH = yes;
+    MPTCP_NDIFFPORTS = yes;
+    # ... but use none by default.
+    # The default is safer if source policy routing is not setup.
+    DEFAULT_DUMMY = yes;
+    DEFAULT_MPTCP_PM.freeform = "default";
+
+    # MPTCP scheduler selection.
+    MPTCP_SCHED_ADVANCED = yes;
+    DEFAULT_MPTCP_SCHED.freeform = "default";
+
+    # Smarter TCP congestion controllers
+    TCP_CONG_LIA = module;
+    TCP_CONG_OLIA = module;
+    TCP_CONG_WVEGAS = module;
+    TCP_CONG_BALIA = module;
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 764a9408147..787dde9acfb 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1695,6 +1695,8 @@ in
 
   massren = callPackage ../tools/misc/massren { };
 
+  megasync = callPackage ../applications/misc/megasync { };
+
   meritous = callPackage ../games/meritous { };
 
   opendune = callPackage ../games/opendune { };
@@ -7192,6 +7194,8 @@ in
   })
     crystal_0_25
     crystal_0_26
+    crystal_0_27
+    crystal_0_29
     crystal;
 
   icr = callPackage ../development/tools/icr {};
@@ -15292,8 +15296,9 @@ in
 
   klibcShrunk = lowPrio (callPackage ../os-specific/linux/klibc/shrunk.nix { });
 
-  linux_mptcp = linux_mptcp_94;
-  linux_mptcp_94 = callPackage ../os-specific/linux/kernel/linux-mptcp.nix {
+  linux_mptcp = linux_mptcp_95;
+
+  linux_mptcp_94 = callPackage ../os-specific/linux/kernel/linux-mptcp-94.nix {
     kernelPatches =
       [ kernelPatches.bridge_stp_helper
         kernelPatches.cpu-cgroup-v2."4.11"
@@ -15306,13 +15311,8 @@ in
       ];
   };
 
-  linux_mptcp_93 = callPackage ../os-specific/linux/kernel/linux-mptcp-93.nix {
-    kernelPatches =
-      [ kernelPatches.bridge_stp_helper
-        kernelPatches.p9_fixes
-        kernelPatches.cpu-cgroup-v2."4.9"
-        kernelPatches.modinst_arg_list_too_long
-      ];
+  linux_mptcp_95 = callPackage ../os-specific/linux/kernel/linux-mptcp-95.nix {
+    kernelPatches = linux_4_19.kernelPatches;
   };
 
   linux_rpi = callPackage ../os-specific/linux/kernel/linux-rpi.nix {
@@ -21545,6 +21545,11 @@ in
     sdlClient = false;
   };
 
+  freeciv_qt = freeciv.override {
+    qtClient = true;
+    sdlClient = false;
+  };
+
   freedink = callPackage ../games/freedink { };
 
   freeorion = callPackage ../games/freeorion { };