diff --git a/pkgs/default.nix b/pkgs/default.nix
index 449bff3ebe0a28110f77dfb384e0352dba85a455..1386c2884a950eb0efbf07ff7f72b64ef3915e3e 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -77,6 +77,7 @@     gpxlib = callPackage ./development/libraries/gpxlib { };
     hfst = callPackage ./development/libraries/hfst { };
     libshell = callPackage ./development/libraries/libshell { };
     microjson = callPackage ./development/libraries/microjson { };
+    qt6 = callPackage ./development/libraries/qt-6 { };
 
     ### DEVELOPMENT / PERL MODULES
 
diff --git a/pkgs/development/libraries/qt-6/default.nix b/pkgs/development/libraries/qt-6/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e6daf3c8dd4a6bb9e6ac28c07d16e00b315eead4
--- /dev/null
+++ b/pkgs/development/libraries/qt-6/default.nix
@@ -0,0 +1,112 @@
+# https://gist.github.com/rprospero/dd8e16bad9f842409c85e63ade31c355
+{ lib, stdenv, fetchurl, requireFile, python3Packages, p7zip, libmysqlclient, autoPatchelfHook
+, dbus, libxkbcommon, gdk-pixbuf, libdrm, libgssglue, mysql, gtkd
+, cups, pango, postgresql, libGL, libglvnd, xorg, unixODBC }:
+
+let
+  aqt = python3Packages.buildPythonPackage rec {
+    pname = "aqtinstall";
+    version = "1.2.4";
+    src = python3Packages.fetchPypi {
+      inherit pname version;
+      sha256 = "fmaAYOSHrx5LVUoPlIw0p/0jMRVGSPE+teEVlNurz10=";
+    };
+    propagatedBuildInputs = [
+      python3Packages.setuptools-scm
+      python3Packages.texttable
+      python3Packages.patch
+      python3Packages.requests
+      semantic_version
+      p7zip
+    ];
+    pipInstallFlags = [ "--no-deps" ];
+
+    doCheck = false;
+  };
+
+  semantic_version = python3Packages.buildPythonPackage rec {
+    pname = "semantic_version";
+    version = "2.8.5";
+    src = python3Packages.fetchPypi {
+      inherit pname version;
+      sha256 = "0sst4FWHYpNGebmhBOguynr0SMn0l00fPuzP9lHfilQ=";
+    };
+    # propagatedBuildInputs =
+    #   [ python3Packages.setuptools-scm python3Packages.semantic_verion ];
+    # pipInstallFlags = [ "--no-deps" ];
+
+    doCheck = false;
+  };
+
+  qtbase = requireFile {
+    name = "6.1.1-0-202106031044qtbase-Linux-CentOS_8_3-GCC-Linux-CentOS_8_3-X86_64.7z";
+    message = ''
+      Download https://mirrors.ukfast.co.uk/sites/qt.io/online/qtsdkrepository/linux_x64/desktop/qt6_611/qt.qt6.611.gcc_64/6.1.1-0-202106031044qtbase-Linux-CentOS_8_3-GCC-Linux-CentOS_8_3-X86_64.7z
+      and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
+    '';
+    sha256 = "fcE1ShAuAbKPihOG4OILnijM0mgAsa5l8V8V1bOYykM=";
+  };
+  qtsvg = requireFile {
+    name = "6.1.1-0-202106031044qtsvg-Linux-CentOS_8_3-GCC-Linux-CentOS_8_3-X86_64.7z";
+    message = ''
+      Download https://mirrors.ukfast.co.uk/sites/qt.io/online/qtsdkrepository/linux_x64/desktop/qt6_611/qt.qt6.611.gcc_64/6.1.1-0-202106031044qtsvg-Linux-CentOS_8_3-GCC-Linux-CentOS_8_3-X86_64.7z
+      and add it to the nix store with nix-store --add-fixed sha256 <FILE>.
+    '';
+    sha256 = "zO9CAMNN7k5k51V4JcrCZFbAag3sn2gmd0YoYvh+qng=";
+  };
+
+in stdenv.mkDerivation {
+  pname = "qt6";
+  version = "6.1.1";
+  unpackPhase = ''
+    ${p7zip}/bin/7z x ${qtbase} -o$out
+    ${p7zip}/bin/7z x ${qtsvg} -o$out
+  '';
+  installPhase = ''
+    mkdir $out/lib
+    ln -s ${libmysqlclient}/lib/mysql/libmysqlclient.so $out/lib/libmysqlclient.so.21
+    patchelf --set-rpath $out/lib $out/6.1.1/gcc_64/lib/libQt6Core.so.6.1.1
+    echo No Install
+  '';
+  nativeBuildInputs = [ autoPatchelfHook ];
+  autoPatchelfIgnoreMissingDeps = false;
+  buildInputs = [
+    dbus
+    libxkbcommon
+    stdenv.cc.cc.lib
+
+    gdk-pixbuf
+    libdrm
+    (import ./icu.nix {
+      inherit lib stdenv fetchurl;
+      version = "56.1";
+      sha256 = "OmTpEFxzTc9jHAs+1gQEUxvObA9aZL/hpkAqTMIxSBY=";
+    })
+    libgssglue
+    mysql
+    libmysqlclient.dev
+    gtkd
+
+    cups
+    pango
+    postgresql
+    libGL
+    libglvnd
+    libglvnd.dev
+    xorg.xcbutil
+    xorg.xcbutilwm
+    xorg.xcbutilkeysyms
+    xorg.xcbutilimage
+    xorg.xcbutilrenderutil
+    unixODBC
+  ];
+
+  meta = with lib; {
+    homepage = "http://www.qt.io";
+    description = "A cross-platform application framework for C++";
+    license = with licenses; [ fdl13 gpl2 lgpl21 lgpl3 ];
+    maintainers = [ maintainers.sikmir ];
+    platforms = platforms.unix;
+    ci.skip = true;
+  };
+}
diff --git a/pkgs/development/libraries/qt-6/icu.nix b/pkgs/development/libraries/qt-6/icu.nix
new file mode 100644
index 0000000000000000000000000000000000000000..06b516c73cb5a57097a8f47becb43fdcc4a39780
--- /dev/null
+++ b/pkgs/development/libraries/qt-6/icu.nix
@@ -0,0 +1,94 @@
+# https://gist.github.com/rprospero/dd8e16bad9f842409c85e63ade31c355
+{ lib, stdenv, fetchurl, version, sha256, patches ? [], patchFlags ? [] }:
+
+let
+  buildRootOnly = false;
+  pname = "icu4c";
+
+  baseAttrs = {
+    src = fetchurl {
+      url = "https://github.com/unicode-org/icu/releases/download/release-${lib.replaceChars [ "." ] [ "-" ] version}/icu4c-${lib.replaceChars [ "." ] [ "_" ] version}-src.tgz";
+      inherit sha256;
+    };
+
+    postUnpack = ''
+      sourceRoot=''${sourceRoot}/source
+      echo Source root reset to ''${sourceRoot}
+    '';
+
+    # https://sourceware.org/glibc/wiki/Release/2.26#Removal_of_.27xlocale.h.27
+    postPatch = if (stdenv.hostPlatform.libc == "glibc" || stdenv.hostPlatform.libc == "musl") && lib.versionOlder version "62.1"
+      then "substituteInPlace i18n/digitlst.cpp --replace '<xlocale.h>' '<locale.h>'"
+      else null; # won't find locale_t on darwin
+
+    inherit patchFlags patches;
+
+    preConfigure = ''
+      sed -i -e "s|/bin/sh|${stdenv.shell}|" configure
+
+      # $(includedir) is different from $(prefix)/include due to multiple outputs
+      sed -i -e 's|^\(CPPFLAGS = .*\) -I\$(prefix)/include|\1 -I$(includedir)|' config/Makefile.inc.in
+    '' + lib.optionalString stdenv.isAarch32 ''
+      # From https://archlinuxarm.org/packages/armv7h/icu/files/icudata-stdlibs.patch
+      sed -e 's/LDFLAGSICUDT=-nodefaultlibs -nostdlib/LDFLAGSICUDT=/' -i config/mh-linux
+    '';
+
+    configureFlags = [ "--disable-debug" ]
+      ++ lib.optional (stdenv.isFreeBSD || stdenv.isDarwin) "--enable-rpath";
+
+    enableParallelBuilding = true;
+
+    meta = with lib; {
+      description = "Unicode and globalization support library";
+      homepage = "http://site.icu-project.org/";
+      maintainers = [ maintainers.sikmir ];
+      platforms = platforms.all;
+      skip.ci = true;
+    };
+  };
+
+  realAttrs = baseAttrs // {
+    name = pname + "-" + version;
+
+    outputs = [ "out" "dev" ];
+    outputBin = "dev";
+
+    # remove dependency on bootstrap-tools in early stdenv build
+    postInstall = lib.optionalString stdenv.isDarwin ''
+      sed -i 's/INSTALL_CMD=.*install/INSTALL_CMD=install/' $out/lib/icu/${version}/pkgdata.inc
+    '' + (let
+      replacements = [
+        { from = "\${prefix}/include"; to = "${placeholder "dev"}/include"; } # --cppflags-searchpath
+        { from = "\${pkglibdir}/Makefile.inc"; to = "${placeholder "dev"}/lib/icu/Makefile.inc"; } # --incfile
+        { from = "\${pkglibdir}/pkgdata.inc"; to = "${placeholder "dev"}/lib/icu/pkgdata.inc"; } # --incpkgdatafile
+      ];
+    in ''
+      substituteInPlace "$dev/bin/icu-config" \
+        ${lib.concatMapStringsSep " " (r: "--replace '${r.from}' '${r.to}'") replacements}
+    '');
+
+    postFixup = ''moveToOutput lib/icu "$dev" '';
+  };
+
+  buildRootOnlyAttrs = baseAttrs // {
+    name = pname + "-build-root-" + version;
+
+    preConfigure = baseAttrs.preConfigure + ''
+      mkdir build
+      cd build
+      configureScript=../configure
+    '';
+
+    postBuild = ''
+      cd ..
+      mv build $out
+      echo "Doing build-root only, exiting now" >&2
+      exit 0
+    '';
+  };
+
+  attrs = if buildRootOnly
+            then buildRootOnlyAttrs
+          else realAttrs;
+in
+stdenv.mkDerivation attrs
