about summary refs log tree commit diff
path: root/nixpkgs/pkgs/kde/gear
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/kde/gear')
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-calendar-tools/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-calendar/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-contacts/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-import-wizard/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-mime/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-notes/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-search/default.nix33
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadiconsole/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/akregator/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/alligator/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/analitza/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/angelfish/default.nix32
-rw-r--r--nixpkgs/pkgs/kde/gear/arianna/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/gear/ark/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/artikulate/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/audiocd-kio/default.nix24
-rw-r--r--nixpkgs/pkgs/kde/gear/audiocd-kio/encoder-paths.patch35
-rw-r--r--nixpkgs/pkgs/kde/gear/audiotube/default.nix53
-rw-r--r--nixpkgs/pkgs/kde/gear/baloo-widgets/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/blinken/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/bomber/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/bovo/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/calendarsupport/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/calindori/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/cantor/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/cervisia/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/colord-kde/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/default.nix248
-rw-r--r--nixpkgs/pkgs/kde/gear/dolphin-plugins/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/dolphin/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/dragon/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/elisa/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/eventviews/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/falkon/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/ffmpegthumbs/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/filelight/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ghostwriter/default.nix17
-rw-r--r--nixpkgs/pkgs/kde/gear/granatier/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/grantlee-editor/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/grantleetheme/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/gwenview/default.nix32
-rw-r--r--nixpkgs/pkgs/kde/gear/incidenceeditor/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/isoimagewriter/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/itinerary/default.nix17
-rw-r--r--nixpkgs/pkgs/kde/gear/itinerary/optional-runtime-dependencies.patch15
-rw-r--r--nixpkgs/pkgs/kde/gear/juk/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/k3b/default.nix53
-rw-r--r--nixpkgs/pkgs/kde/gear/kaccounts-integration/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kaccounts-providers/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kaddressbook/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kajongg/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kalarm/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kalgebra/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kalk/default.nix25
-rw-r--r--nixpkgs/pkgs/kde/gear/kalzium/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/gear/kamera/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kamoso/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kanagram/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kapman/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kapptemplate/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kasts/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/gear/kate/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/katomic/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kbackup/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kblackbox/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kblocks/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kbounce/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kbreakout/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kbruch/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kcachegrind/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kcalc/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/gear/kcalutils/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kcharselect/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kclock/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kcolorchooser/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kcron/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kde-dev-scripts/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kde-dev-utils/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kde-inotify-survey/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdebugsettings/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdeconnect-kde/default.nix20
-rw-r--r--nixpkgs/pkgs/kde/gear/kdeedu-data/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdegraphics-mobipocket/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/default.nix17
-rw-r--r--nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/gs-paths.patch22
-rw-r--r--nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/smbd-path.patch14
-rw-r--r--nixpkgs/pkgs/kde/gear/kdenlive/default.nix40
-rw-r--r--nixpkgs/pkgs/kde/gear/kdenlive/dependency-paths.patch46
-rw-r--r--nixpkgs/pkgs/kde/gear/kdepim-addons/default.nix35
-rw-r--r--nixpkgs/pkgs/kde/gear/kdepim-runtime/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/kdesdk-kio/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdesdk-thumbnailers/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdev-php/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kdev-python/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kdevelop/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kdf/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdialog/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdiamond/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/keditbookmarks/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/keysmith/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kfind/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kfourinline/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kgeography/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kget/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kgoldrunner/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kgpg/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/khangman/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/khealthcertificate/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/khelpcenter/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kidentitymanagement/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kig/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kigo/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/killbots/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kimagemapeditor/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kimap/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-admin/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-extras-kf5/default.nix62
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-extras/default.nix45
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-gdrive/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-zeroconf/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kipi-plugins/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kirigami-gallery/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kiriki/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kiten/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kitinerary/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/gear/kjournald/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kjumpingcube/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kldap/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kleopatra/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/klettres/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/klickety/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/klines/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmag/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmahjongg/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/gear/kmail-account-wizard/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmail/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmailtransport/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmbox/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmime/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmines/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmix/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kmousetool/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kmouth/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kmplot/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/knavalbattle/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/knetwalk/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/knights/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/knotes/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/koko/default.nix46
-rw-r--r--nixpkgs/pkgs/kde/gear/kolf/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kollision/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kolourpaint/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kompare/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kongress/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/konqueror/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/konquest/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/konsole/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kontact/default.nix23
-rw-r--r--nixpkgs/pkgs/kde/gear/kontactinterface/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kontrast/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/konversation/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kopeninghours/default.nix20
-rw-r--r--nixpkgs/pkgs/kde/gear/korganizer/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kosmindoormap/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kpat/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/gear/kpimtextedit/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kpkpass/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kpmcore/default.nix74
-rw-r--r--nixpkgs/pkgs/kde/gear/kpublictransport/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kqtquickcharts/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/krdc/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/krecorder/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kreversi/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/krfb/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/kross-interpreters/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kruler/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ksanecore/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kshisen/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ksirk/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/ksmtp/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/ksnakeduel/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kspaceduel/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/ksquares/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ksudoku/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/ksystemlog/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kteatime/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ktimer/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/ktnef/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ktorrent/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/ktouch/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/ktrip/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ktuberling/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kturtle/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kubrick/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kwalletmanager/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kwave/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kweather/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kwordquiz/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/libgravatar/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/libkcddb/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/libkcompactdisc/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/libkdcraw/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/libkdegames/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/libkdepim/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/libkeduvocdocument/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/libkexiv2/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/libkgapi/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/libkipi/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/libkleo/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/libkmahjongg/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/libkomparediff2/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/libksane/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/libksieve/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/libktorrent/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/lokalize/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/lskat/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/mailcommon/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/mailimporter/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/marble/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/markdownpart/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/mbox-importer/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/merkuro/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/messagelib/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/mimetreeparser/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/minuet/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/neochat/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/okular/default.nix30
-rw-r--r--nixpkgs/pkgs/kde/gear/palapeli/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/parley/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/partitionmanager/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/picmi/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/pim-data-exporter/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/pim-sieve-editor/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/pimcommon/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/plasmatube/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/poxml/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/qmlkonsole/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/rocs/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/signon-kwallet-extension/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/gear/skanlite/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/skanpage/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/spectacle/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/step/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/gear/svgpart/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/sweeper/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/telly-skout/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/tokodon/default.nix17
-rw-r--r--nixpkgs/pkgs/kde/gear/umbrello/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/yakuake/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/zanshin/default.nix9
252 files changed, 2968 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-calendar-tools/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-calendar-tools/default.nix
new file mode 100644
index 000000000000..bc863c026709
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-calendar-tools/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-calendar-tools";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-calendar/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-calendar/default.nix
new file mode 100644
index 000000000000..ffa28766a4e1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-calendar/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-calendar";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-contacts/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-contacts/default.nix
new file mode 100644
index 000000000000..b8c1c5bf92cc
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-contacts/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-contacts";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-import-wizard/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-import-wizard/default.nix
new file mode 100644
index 000000000000..191944a9e90d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-import-wizard/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-import-wizard";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-mime/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-mime/default.nix
new file mode 100644
index 000000000000..8796f7220134
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-mime/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "akonadi-mime";
+
+  extraNativeBuildInputs = [shared-mime-info];
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-notes/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-notes/default.nix
new file mode 100644
index 000000000000..a1cd161a510f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-notes/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-notes";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-search/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-search/default.nix
new file mode 100644
index 000000000000..87f743f86c30
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-search/default.nix
@@ -0,0 +1,33 @@
+{
+  mkKdeDerivation,
+  sources,
+  corrosion,
+  xapian,
+  rustPlatform,
+  cargo,
+  rustc,
+  # provided as callPackage input to enable easier overrides through overlays
+  cargoHash ? "sha256-euUaB+QCwwwPjrUq+3NHt0hjDSW5gch8MwS57KmtIWI=",
+}:
+mkKdeDerivation rec {
+  pname = "akonadi-search";
+  inherit (sources.${pname}) version;
+
+  cargoRoot = "agent/rs/htmlparser";
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    # include version in the name so we invalidate the FOD
+    name = "${pname}-${version}";
+    src = sources.${pname};
+    sourceRoot = "${pname}-${version}/${cargoRoot}";
+    hash = cargoHash;
+  };
+
+  extraNativeBuildInputs = [
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+  ];
+
+  extraBuildInputs = [corrosion xapian];
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi/default.nix b/nixpkgs/pkgs/kde/gear/akonadi/default.nix
new file mode 100644
index 000000000000..20fd1f54b1ec
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  qttools,
+  accounts-qt,
+  kaccounts-integration,
+  shared-mime-info,
+  xz,
+}:
+mkKdeDerivation {
+  pname = "akonadi";
+
+  # FIXME(later): investigate nixpkgs patches
+
+  extraNativeBuildInputs = [qttools shared-mime-info];
+  extraBuildInputs = [kaccounts-integration accounts-qt xz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadiconsole/default.nix b/nixpkgs/pkgs/kde/gear/akonadiconsole/default.nix
new file mode 100644
index 000000000000..4820faea5705
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadiconsole/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  xapian,
+}:
+mkKdeDerivation {
+  pname = "akonadiconsole";
+
+  extraBuildInputs = [xapian];
+}
diff --git a/nixpkgs/pkgs/kde/gear/akregator/default.nix b/nixpkgs/pkgs/kde/gear/akregator/default.nix
new file mode 100644
index 000000000000..4d52e4947b78
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akregator/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "akregator";
+
+  extraBuildInputs = [qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/alligator/default.nix b/nixpkgs/pkgs/kde/gear/alligator/default.nix
new file mode 100644
index 000000000000..bf3a4fb53b9d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/alligator/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "alligator";
+}
diff --git a/nixpkgs/pkgs/kde/gear/analitza/default.nix b/nixpkgs/pkgs/kde/gear/analitza/default.nix
new file mode 100644
index 000000000000..318c0b648279
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/analitza/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  qtsvg,
+  qttools,
+  qtdeclarative,
+  eigen,
+}:
+mkKdeDerivation {
+  pname = "analitza";
+
+  extraNativeBuildInputs = [qt5compat qtsvg qttools];
+  extraBuildInputs = [qtdeclarative eigen];
+}
diff --git a/nixpkgs/pkgs/kde/gear/angelfish/default.nix b/nixpkgs/pkgs/kde/gear/angelfish/default.nix
new file mode 100644
index 000000000000..133509e78b7a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/angelfish/default.nix
@@ -0,0 +1,32 @@
+{
+  mkKdeDerivation,
+  sources,
+  qtsvg,
+  qtwebengine,
+  corrosion,
+  rustPlatform,
+  cargo,
+  rustc,
+  # provided as callPackage input to enable easier overrides through overlays
+  cargoHash ? "sha256-kkoLWJvPx1Hq+MQkPgTffrTFYgVlVfKdmJq5ExAW1NE=",
+  qcoro,
+}:
+mkKdeDerivation rec {
+  pname = "angelfish";
+  inherit (sources.${pname}) version;
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    # include version in the name so we invalidate the FOD
+    name = "${pname}-${version}";
+    src = sources.${pname};
+    hash = cargoHash;
+  };
+
+  extraNativeBuildInputs = [
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+  ];
+
+  extraBuildInputs = [corrosion qtsvg qtwebengine qcoro];
+}
diff --git a/nixpkgs/pkgs/kde/gear/arianna/default.nix b/nixpkgs/pkgs/kde/gear/arianna/default.nix
new file mode 100644
index 000000000000..d3a63bc19455
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/arianna/default.nix
@@ -0,0 +1,21 @@
+{
+  mkKdeDerivation,
+  qthttpserver,
+  qtsvg,
+  qtwebchannel,
+  qtwebengine,
+  kitemmodels,
+  kquickcharts,
+}:
+mkKdeDerivation {
+  pname = "arianna";
+
+  extraBuildInputs = [
+    qthttpserver
+    qtsvg
+    qtwebchannel
+    qtwebengine
+    kitemmodels
+    kquickcharts
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ark/default.nix b/nixpkgs/pkgs/kde/gear/ark/default.nix
new file mode 100644
index 000000000000..ae443c21cf84
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ark/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  libarchive,
+  libzip,
+}:
+mkKdeDerivation {
+  pname = "ark";
+
+  extraBuildInputs = [libarchive libzip];
+}
diff --git a/nixpkgs/pkgs/kde/gear/artikulate/default.nix b/nixpkgs/pkgs/kde/gear/artikulate/default.nix
new file mode 100644
index 000000000000..c82db10260f7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/artikulate/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "artikulate";
+
+  extraBuildInputs = [qtmultimedia];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/audiocd-kio/default.nix b/nixpkgs/pkgs/kde/gear/audiocd-kio/default.nix
new file mode 100644
index 000000000000..c2f5c2558826
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/audiocd-kio/default.nix
@@ -0,0 +1,24 @@
+{
+  lib,
+  mkKdeDerivation,
+  cdparanoia,
+  flac,
+  libogg,
+  libvorbis,
+  substituteAll,
+  lame,
+  opusTools,
+}:
+mkKdeDerivation {
+  pname = "audiocd-kio";
+
+  patches = [
+    (substituteAll {
+      src = ./encoder-paths.patch;
+      lame = lib.getExe lame;
+      opusenc = "${opusTools}/bin/opusenc";
+    })
+  ];
+
+  extraBuildInputs = [cdparanoia flac libogg libvorbis];
+}
diff --git a/nixpkgs/pkgs/kde/gear/audiocd-kio/encoder-paths.patch b/nixpkgs/pkgs/kde/gear/audiocd-kio/encoder-paths.patch
new file mode 100644
index 000000000000..c39835a8b1f3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/audiocd-kio/encoder-paths.patch
@@ -0,0 +1,35 @@
+diff --git a/plugins/lame/encoderlame.cpp b/plugins/lame/encoderlame.cpp
+index 48d1d76..2643d6a 100644
+--- a/plugins/lame/encoderlame.cpp
++++ b/plugins/lame/encoderlame.cpp
+@@ -244,7 +244,7 @@ long EncoderLame::readInit(long /*size*/)
+ 
+     // -r raw/pcm
+     // -s 44.1 (because it is raw you have to specify this)
+-    *(d->currentEncodeProcess) << QStringLiteral("lame") << QStringLiteral("--verbose") << QStringLiteral("-r") << QStringLiteral("-s")
++    *(d->currentEncodeProcess) << QStringLiteral("@lame@") << QStringLiteral("--verbose") << QStringLiteral("-r") << QStringLiteral("-s")
+                                << QStringLiteral("44.1");
+     *(d->currentEncodeProcess) << args;
+     if (Settings::self()->id3_tag())
+diff --git a/plugins/opus/encoderopus.cpp b/plugins/opus/encoderopus.cpp
+index ef297fb..465bb3e 100644
+--- a/plugins/opus/encoderopus.cpp
++++ b/plugins/opus/encoderopus.cpp
+@@ -82,7 +82,7 @@ QWidget *EncoderOpus::getConfigureWidget(KConfigSkeleton **manager) const
+ bool EncoderOpus::init()
+ {
+     // Determine if opusenc is installed on the system or not.
+-    if (QStandardPaths::findExecutable(QStringLiteral("opusenc")).isEmpty())
++    if (QStandardPaths::findExecutable(QStringLiteral("@opusenc@")).isEmpty())
+         return false;
+ 
+     return true;
+@@ -140,7 +140,7 @@ long EncoderOpus::readInit(long /*size*/)
+ 
+     // --raw raw/pcm
+     // --raw-rate 44100 (because it is raw you have to specify this)
+-    *(d->currentEncodeProcess) << QStringLiteral("opusenc") << QStringLiteral("--raw") << QStringLiteral("--raw-rate") << QStringLiteral("44100");
++    *(d->currentEncodeProcess) << QStringLiteral("@opusenc@") << QStringLiteral("--raw") << QStringLiteral("--raw-rate") << QStringLiteral("44100");
+     *(d->currentEncodeProcess) << args;
+     *d->currentEncodeProcess << trackInfo;
+ 
diff --git a/nixpkgs/pkgs/kde/gear/audiotube/default.nix b/nixpkgs/pkgs/kde/gear/audiotube/default.nix
new file mode 100644
index 000000000000..60e646cd71c1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/audiotube/default.nix
@@ -0,0 +1,53 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtmultimedia,
+  qtsvg,
+  extra-cmake-modules,
+  futuresql,
+  kcoreaddons,
+  kcrash,
+  ki18n,
+  kirigami-addons,
+  kirigami,
+  kwindowsystem,
+  purpose,
+  qcoro,
+  python3,
+}: let
+  ps = python3.pkgs;
+  pythonDeps = [
+    ps.yt-dlp
+    ps.ytmusicapi
+  ];
+in
+  mkKdeDerivation {
+    pname = "audiotube";
+
+    extraNativeBuildInputs = [
+      ps.pybind11
+    ];
+
+    extraBuildInputs =
+      [
+        qtdeclarative
+        qtmultimedia
+        qtsvg
+
+        extra-cmake-modules
+        futuresql
+        kirigami
+        kirigami-addons
+        kcoreaddons
+        ki18n
+        kcrash
+        kwindowsystem
+        purpose
+        qcoro
+      ]
+      ++ pythonDeps;
+
+    qtWrapperArgs = [
+      "--prefix PYTHONPATH : ${ps.makePythonPath pythonDeps}"
+    ];
+  }
diff --git a/nixpkgs/pkgs/kde/gear/baloo-widgets/default.nix b/nixpkgs/pkgs/kde/gear/baloo-widgets/default.nix
new file mode 100644
index 000000000000..ca638bef6074
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/baloo-widgets/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "baloo-widgets";
+}
diff --git a/nixpkgs/pkgs/kde/gear/blinken/default.nix b/nixpkgs/pkgs/kde/gear/blinken/default.nix
new file mode 100644
index 000000000000..ac5f4273ebd5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/blinken/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "blinken";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/bomber/default.nix b/nixpkgs/pkgs/kde/gear/bomber/default.nix
new file mode 100644
index 000000000000..a0e2ea97428c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/bomber/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "bomber";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/bovo/default.nix b/nixpkgs/pkgs/kde/gear/bovo/default.nix
new file mode 100644
index 000000000000..bc48853616ef
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/bovo/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "bovo";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/calendarsupport/default.nix b/nixpkgs/pkgs/kde/gear/calendarsupport/default.nix
new file mode 100644
index 000000000000..b6632a384d65
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/calendarsupport/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "calendarsupport";
+}
diff --git a/nixpkgs/pkgs/kde/gear/calindori/default.nix b/nixpkgs/pkgs/kde/gear/calindori/default.nix
new file mode 100644
index 000000000000..f0b21c7986a7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/calindori/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qqc2-desktop-style,
+}:
+mkKdeDerivation {
+  pname = "calindori";
+
+  extraBuildInputs = [
+    qtsvg
+    qqc2-desktop-style
+  ];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/cantor/default.nix b/nixpkgs/pkgs/kde/gear/cantor/default.nix
new file mode 100644
index 000000000000..42963aabbba0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/cantor/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "cantor";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/cervisia/default.nix b/nixpkgs/pkgs/kde/gear/cervisia/default.nix
new file mode 100644
index 000000000000..d8546e9d8a30
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/cervisia/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "cervisia";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/colord-kde/default.nix b/nixpkgs/pkgs/kde/gear/colord-kde/default.nix
new file mode 100644
index 000000000000..adacf19ba9a3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/colord-kde/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  lcms2,
+  xorg,
+}:
+mkKdeDerivation {
+  pname = "colord-kde";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [lcms2 xorg.libXrandr];
+}
diff --git a/nixpkgs/pkgs/kde/gear/default.nix b/nixpkgs/pkgs/kde/gear/default.nix
new file mode 100644
index 000000000000..629711d72286
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/default.nix
@@ -0,0 +1,248 @@
+{callPackage}: {
+  akonadi = callPackage ./akonadi {};
+  akonadi-calendar = callPackage ./akonadi-calendar {};
+  akonadi-calendar-tools = callPackage ./akonadi-calendar-tools {};
+  akonadiconsole = callPackage ./akonadiconsole {};
+  akonadi-contacts = callPackage ./akonadi-contacts {};
+  akonadi-import-wizard = callPackage ./akonadi-import-wizard {};
+  akonadi-mime = callPackage ./akonadi-mime {};
+  akonadi-notes = callPackage ./akonadi-notes {};
+  akonadi-search = callPackage ./akonadi-search {};
+  akregator = callPackage ./akregator {};
+  alligator = callPackage ./alligator {};
+  analitza = callPackage ./analitza {};
+  angelfish = callPackage ./angelfish {};
+  arianna = callPackage ./arianna {};
+  ark = callPackage ./ark {};
+  artikulate = callPackage ./artikulate {};
+  audiocd-kio = callPackage ./audiocd-kio {};
+  audiotube = callPackage ./audiotube {};
+  baloo-widgets = callPackage ./baloo-widgets {};
+  blinken = callPackage ./blinken {};
+  bomber = callPackage ./bomber {};
+  bovo = callPackage ./bovo {};
+  calendarsupport = callPackage ./calendarsupport {};
+  calindori = callPackage ./calindori {};
+  cantor = callPackage ./cantor {};
+  cervisia = callPackage ./cervisia {};
+  colord-kde = callPackage ./colord-kde {};
+  dolphin = callPackage ./dolphin {};
+  dolphin-plugins = callPackage ./dolphin-plugins {};
+  dragon = callPackage ./dragon {};
+  elisa = callPackage ./elisa {};
+  eventviews = callPackage ./eventviews {};
+  falkon = callPackage ./falkon {};
+  ffmpegthumbs = callPackage ./ffmpegthumbs {};
+  filelight = callPackage ./filelight {};
+  ghostwriter = callPackage ./ghostwriter {};
+  granatier = callPackage ./granatier {};
+  grantlee-editor = callPackage ./grantlee-editor {};
+  grantleetheme = callPackage ./grantleetheme {};
+  gwenview = callPackage ./gwenview {};
+  incidenceeditor = callPackage ./incidenceeditor {};
+  isoimagewriter = callPackage ./isoimagewriter {};
+  itinerary = callPackage ./itinerary {};
+  juk = callPackage ./juk {};
+  k3b = callPackage ./k3b {};
+  kaccounts-integration = callPackage ./kaccounts-integration {};
+  kaccounts-providers = callPackage ./kaccounts-providers {};
+  kaddressbook = callPackage ./kaddressbook {};
+  kajongg = callPackage ./kajongg {};
+  kalarm = callPackage ./kalarm {};
+  kalgebra = callPackage ./kalgebra {};
+  kalk = callPackage ./kalk {};
+  kalzium = callPackage ./kalzium {};
+  kamera = callPackage ./kamera {};
+  kamoso = callPackage ./kamoso {};
+  kanagram = callPackage ./kanagram {};
+  kapman = callPackage ./kapman {};
+  kapptemplate = callPackage ./kapptemplate {};
+  kasts = callPackage ./kasts {};
+  kate = callPackage ./kate {};
+  katomic = callPackage ./katomic {};
+  kbackup = callPackage ./kbackup {};
+  kblackbox = callPackage ./kblackbox {};
+  kblocks = callPackage ./kblocks {};
+  kbounce = callPackage ./kbounce {};
+  kbreakout = callPackage ./kbreakout {};
+  kbruch = callPackage ./kbruch {};
+  kcachegrind = callPackage ./kcachegrind {};
+  kcalc = callPackage ./kcalc {};
+  kcalutils = callPackage ./kcalutils {};
+  kcharselect = callPackage ./kcharselect {};
+  kclock = callPackage ./kclock {};
+  kcolorchooser = callPackage ./kcolorchooser {};
+  kcron = callPackage ./kcron {};
+  kdebugsettings = callPackage ./kdebugsettings {};
+  kdeconnect-kde = callPackage ./kdeconnect-kde {};
+  kde-dev-scripts = callPackage ./kde-dev-scripts {};
+  kde-dev-utils = callPackage ./kde-dev-utils {};
+  kdeedu-data = callPackage ./kdeedu-data {};
+  kdegraphics-mobipocket = callPackage ./kdegraphics-mobipocket {};
+  kdegraphics-thumbnailers = callPackage ./kdegraphics-thumbnailers {};
+  kde-inotify-survey = callPackage ./kde-inotify-survey {};
+  kdenetwork-filesharing = callPackage ./kdenetwork-filesharing {};
+  kdenlive = callPackage ./kdenlive {};
+  kdepim-addons = callPackage ./kdepim-addons {};
+  kdepim-runtime = callPackage ./kdepim-runtime {};
+  kdesdk-kio = callPackage ./kdesdk-kio {};
+  kdesdk-thumbnailers = callPackage ./kdesdk-thumbnailers {};
+  kdevelop = callPackage ./kdevelop {};
+  kdev-php = callPackage ./kdev-php {};
+  kdev-python = callPackage ./kdev-python {};
+  kdf = callPackage ./kdf {};
+  kdialog = callPackage ./kdialog {};
+  kdiamond = callPackage ./kdiamond {};
+  keditbookmarks = callPackage ./keditbookmarks {};
+  keysmith = callPackage ./keysmith {};
+  kfind = callPackage ./kfind {};
+  kfourinline = callPackage ./kfourinline {};
+  kgeography = callPackage ./kgeography {};
+  kget = callPackage ./kget {};
+  kgoldrunner = callPackage ./kgoldrunner {};
+  kgpg = callPackage ./kgpg {};
+  khangman = callPackage ./khangman {};
+  khealthcertificate = callPackage ./khealthcertificate {};
+  khelpcenter = callPackage ./khelpcenter {};
+  kidentitymanagement = callPackage ./kidentitymanagement {};
+  kig = callPackage ./kig {};
+  kigo = callPackage ./kigo {};
+  killbots = callPackage ./killbots {};
+  kimagemapeditor = callPackage ./kimagemapeditor {};
+  kimap = callPackage ./kimap {};
+  kio-admin = callPackage ./kio-admin {};
+  kio-extras = callPackage ./kio-extras {};
+  kio-extras-kf5 = callPackage ./kio-extras-kf5 {};
+  kio-gdrive = callPackage ./kio-gdrive {};
+  kio-zeroconf = callPackage ./kio-zeroconf {};
+  kipi-plugins = callPackage ./kipi-plugins {};
+  kirigami-gallery = callPackage ./kirigami-gallery {};
+  kiriki = callPackage ./kiriki {};
+  kiten = callPackage ./kiten {};
+  kitinerary = callPackage ./kitinerary {};
+  kjournald = callPackage ./kjournald {};
+  kjumpingcube = callPackage ./kjumpingcube {};
+  kldap = callPackage ./kldap {};
+  kleopatra = callPackage ./kleopatra {};
+  klettres = callPackage ./klettres {};
+  klickety = callPackage ./klickety {};
+  klines = callPackage ./klines {};
+  kmag = callPackage ./kmag {};
+  kmahjongg = callPackage ./kmahjongg {};
+  kmail = callPackage ./kmail {};
+  kmail-account-wizard = callPackage ./kmail-account-wizard {};
+  kmailtransport = callPackage ./kmailtransport {};
+  kmbox = callPackage ./kmbox {};
+  kmime = callPackage ./kmime {};
+  kmines = callPackage ./kmines {};
+  kmix = callPackage ./kmix {};
+  kmousetool = callPackage ./kmousetool {};
+  kmouth = callPackage ./kmouth {};
+  kmplot = callPackage ./kmplot {};
+  knavalbattle = callPackage ./knavalbattle {};
+  knetwalk = callPackage ./knetwalk {};
+  knights = callPackage ./knights {};
+  knotes = callPackage ./knotes {};
+  koko = callPackage ./koko {};
+  kolf = callPackage ./kolf {};
+  kollision = callPackage ./kollision {};
+  kolourpaint = callPackage ./kolourpaint {};
+  kompare = callPackage ./kompare {};
+  kongress = callPackage ./kongress {};
+  konqueror = callPackage ./konqueror {};
+  konquest = callPackage ./konquest {};
+  konsole = callPackage ./konsole {};
+  kontact = callPackage ./kontact {};
+  kontactinterface = callPackage ./kontactinterface {};
+  kontrast = callPackage ./kontrast {};
+  konversation = callPackage ./konversation {};
+  kopeninghours = callPackage ./kopeninghours {};
+  korganizer = callPackage ./korganizer {};
+  kosmindoormap = callPackage ./kosmindoormap {};
+  kpat = callPackage ./kpat {};
+  kpimtextedit = callPackage ./kpimtextedit {};
+  kpkpass = callPackage ./kpkpass {};
+  kpmcore = callPackage ./kpmcore {};
+  kpublictransport = callPackage ./kpublictransport {};
+  kqtquickcharts = callPackage ./kqtquickcharts {};
+  krdc = callPackage ./krdc {};
+  krecorder = callPackage ./krecorder {};
+  kreversi = callPackage ./kreversi {};
+  krfb = callPackage ./krfb {};
+  kross-interpreters = callPackage ./kross-interpreters {};
+  kruler = callPackage ./kruler {};
+  ksanecore = callPackage ./ksanecore {};
+  kshisen = callPackage ./kshisen {};
+  ksirk = callPackage ./ksirk {};
+  ksmtp = callPackage ./ksmtp {};
+  ksnakeduel = callPackage ./ksnakeduel {};
+  kspaceduel = callPackage ./kspaceduel {};
+  ksquares = callPackage ./ksquares {};
+  ksudoku = callPackage ./ksudoku {};
+  ksystemlog = callPackage ./ksystemlog {};
+  kteatime = callPackage ./kteatime {};
+  ktimer = callPackage ./ktimer {};
+  ktnef = callPackage ./ktnef {};
+  ktorrent = callPackage ./ktorrent {};
+  ktouch = callPackage ./ktouch {};
+  ktrip = callPackage ./ktrip {};
+  ktuberling = callPackage ./ktuberling {};
+  kturtle = callPackage ./kturtle {};
+  kubrick = callPackage ./kubrick {};
+  kwalletmanager = callPackage ./kwalletmanager {};
+  kwave = callPackage ./kwave {};
+  kweather = callPackage ./kweather {};
+  kwordquiz = callPackage ./kwordquiz {};
+  libgravatar = callPackage ./libgravatar {};
+  libkcddb = callPackage ./libkcddb {};
+  libkcompactdisc = callPackage ./libkcompactdisc {};
+  libkdcraw = callPackage ./libkdcraw {};
+  libkdegames = callPackage ./libkdegames {};
+  libkdepim = callPackage ./libkdepim {};
+  libkeduvocdocument = callPackage ./libkeduvocdocument {};
+  libkexiv2 = callPackage ./libkexiv2 {};
+  libkgapi = callPackage ./libkgapi {};
+  libkipi = callPackage ./libkipi {};
+  libkleo = callPackage ./libkleo {};
+  libkmahjongg = callPackage ./libkmahjongg {};
+  libkomparediff2 = callPackage ./libkomparediff2 {};
+  libksane = callPackage ./libksane {};
+  libksieve = callPackage ./libksieve {};
+  libktorrent = callPackage ./libktorrent {};
+  lokalize = callPackage ./lokalize {};
+  lskat = callPackage ./lskat {};
+  mailcommon = callPackage ./mailcommon {};
+  mailimporter = callPackage ./mailimporter {};
+  marble = callPackage ./marble {};
+  markdownpart = callPackage ./markdownpart {};
+  mbox-importer = callPackage ./mbox-importer {};
+  merkuro = callPackage ./merkuro {};
+  messagelib = callPackage ./messagelib {};
+  mimetreeparser = callPackage ./mimetreeparser {};
+  minuet = callPackage ./minuet {};
+  neochat = callPackage ./neochat {};
+  okular = callPackage ./okular {};
+  palapeli = callPackage ./palapeli {};
+  parley = callPackage ./parley {};
+  partitionmanager = callPackage ./partitionmanager {};
+  picmi = callPackage ./picmi {};
+  pimcommon = callPackage ./pimcommon {};
+  pim-data-exporter = callPackage ./pim-data-exporter {};
+  pim-sieve-editor = callPackage ./pim-sieve-editor {};
+  plasmatube = callPackage ./plasmatube {};
+  poxml = callPackage ./poxml {};
+  qmlkonsole = callPackage ./qmlkonsole {};
+  rocs = callPackage ./rocs {};
+  signon-kwallet-extension = callPackage ./signon-kwallet-extension {};
+  skanlite = callPackage ./skanlite {};
+  skanpage = callPackage ./skanpage {};
+  spectacle = callPackage ./spectacle {};
+  step = callPackage ./step {};
+  svgpart = callPackage ./svgpart {};
+  sweeper = callPackage ./sweeper {};
+  telly-skout = callPackage ./telly-skout {};
+  tokodon = callPackage ./tokodon {};
+  umbrello = callPackage ./umbrello {};
+  yakuake = callPackage ./yakuake {};
+  zanshin = callPackage ./zanshin {};
+}
diff --git a/nixpkgs/pkgs/kde/gear/dolphin-plugins/default.nix b/nixpkgs/pkgs/kde/gear/dolphin-plugins/default.nix
new file mode 100644
index 000000000000..cc88d732389f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/dolphin-plugins/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "dolphin-plugins";
+}
diff --git a/nixpkgs/pkgs/kde/gear/dolphin/default.nix b/nixpkgs/pkgs/kde/gear/dolphin/default.nix
new file mode 100644
index 000000000000..eb70e9c9d086
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/dolphin/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "dolphin";
+}
diff --git a/nixpkgs/pkgs/kde/gear/dragon/default.nix b/nixpkgs/pkgs/kde/gear/dragon/default.nix
new file mode 100644
index 000000000000..0b1900203c05
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/dragon/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "dragon";
+}
diff --git a/nixpkgs/pkgs/kde/gear/elisa/default.nix b/nixpkgs/pkgs/kde/gear/elisa/default.nix
new file mode 100644
index 000000000000..4f4437a5794c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/elisa/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+  vlc,
+}:
+mkKdeDerivation {
+  pname = "elisa";
+
+  extraBuildInputs = [qtmultimedia vlc];
+}
diff --git a/nixpkgs/pkgs/kde/gear/eventviews/default.nix b/nixpkgs/pkgs/kde/gear/eventviews/default.nix
new file mode 100644
index 000000000000..d9d0eeb7d798
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/eventviews/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "eventviews";
+}
diff --git a/nixpkgs/pkgs/kde/gear/falkon/default.nix b/nixpkgs/pkgs/kde/gear/falkon/default.nix
new file mode 100644
index 000000000000..3fb5a9e16dbb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/falkon/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  extra-cmake-modules,
+  qtwebchannel,
+  qtwebengine,
+  qttools,
+  python3Packages,
+}:
+mkKdeDerivation {
+  pname = "falkon";
+
+  extraNativeBuildInputs = [qttools qtwebchannel qtwebengine];
+  extraBuildInputs = [extra-cmake-modules qtwebchannel qtwebengine python3Packages.pyside6];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ffmpegthumbs/default.nix b/nixpkgs/pkgs/kde/gear/ffmpegthumbs/default.nix
new file mode 100644
index 000000000000..62bd0e10378c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ffmpegthumbs/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  ffmpeg,
+}:
+mkKdeDerivation {
+  pname = "ffmpegthumbs";
+
+  extraBuildInputs = [ffmpeg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/filelight/default.nix b/nixpkgs/pkgs/kde/gear/filelight/default.nix
new file mode 100644
index 000000000000..938cedda3af1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/filelight/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "filelight";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ghostwriter/default.nix b/nixpkgs/pkgs/kde/gear/ghostwriter/default.nix
new file mode 100644
index 000000000000..b3620992ee40
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ghostwriter/default.nix
@@ -0,0 +1,17 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qttools,
+  qtwebchannel,
+  qtwebengine,
+  qt5compat,
+  pkg-config,
+  hunspell,
+  kdoctools,
+}:
+mkKdeDerivation {
+  pname = "ghostwriter";
+
+  extraNativeBuildInputs = [pkg-config kdoctools];
+  extraBuildInputs = [qtsvg qttools qtwebchannel qtwebengine qt5compat hunspell];
+}
diff --git a/nixpkgs/pkgs/kde/gear/granatier/default.nix b/nixpkgs/pkgs/kde/gear/granatier/default.nix
new file mode 100644
index 000000000000..66a763a962fe
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/granatier/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "granatier";
+
+  extraNativeBuildInputs = [_7zz];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/grantlee-editor/default.nix b/nixpkgs/pkgs/kde/gear/grantlee-editor/default.nix
new file mode 100644
index 000000000000..a80ea7d8b939
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/grantlee-editor/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "grantlee-editor";
+
+  extraBuildInputs = [qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/grantleetheme/default.nix b/nixpkgs/pkgs/kde/gear/grantleetheme/default.nix
new file mode 100644
index 000000000000..5e21e92a54e5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/grantleetheme/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "grantleetheme";
+}
diff --git a/nixpkgs/pkgs/kde/gear/gwenview/default.nix b/nixpkgs/pkgs/kde/gear/gwenview/default.nix
new file mode 100644
index 000000000000..0f9e64696e38
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/gwenview/default.nix
@@ -0,0 +1,32 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtwayland,
+  pkg-config,
+  cfitsio,
+  exiv2,
+  baloo,
+  kimageannotator,
+  lcms2,
+  libtiff,
+  wayland,
+  wayland-protocols,
+}:
+mkKdeDerivation {
+  pname = "gwenview";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [
+    qtsvg
+    qtwayland
+
+    cfitsio
+    exiv2
+    baloo
+    kimageannotator
+    lcms2
+    libtiff
+    wayland
+    wayland-protocols
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/incidenceeditor/default.nix b/nixpkgs/pkgs/kde/gear/incidenceeditor/default.nix
new file mode 100644
index 000000000000..cf8c1e7857c4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/incidenceeditor/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "incidenceeditor";
+}
diff --git a/nixpkgs/pkgs/kde/gear/isoimagewriter/default.nix b/nixpkgs/pkgs/kde/gear/isoimagewriter/default.nix
new file mode 100644
index 000000000000..daad31ea436b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/isoimagewriter/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qgpgme,
+}:
+mkKdeDerivation {
+  pname = "isoimagewriter";
+
+  extraBuildInputs = [qgpgme];
+}
diff --git a/nixpkgs/pkgs/kde/gear/itinerary/default.nix b/nixpkgs/pkgs/kde/gear/itinerary/default.nix
new file mode 100644
index 000000000000..29c129132071
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/itinerary/default.nix
@@ -0,0 +1,17 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtlocation,
+  qtpositioning,
+  shared-mime-info,
+  libical,
+}:
+mkKdeDerivation {
+  pname = "itinerary";
+
+  # FIXME: this should really be fixed at ECM level somehow
+  patches = [./optional-runtime-dependencies.patch];
+
+  extraNativeBuildInputs = [pkg-config shared-mime-info];
+  extraBuildInputs = [qtlocation qtpositioning libical];
+}
diff --git a/nixpkgs/pkgs/kde/gear/itinerary/optional-runtime-dependencies.patch b/nixpkgs/pkgs/kde/gear/itinerary/optional-runtime-dependencies.patch
new file mode 100644
index 000000000000..004122fab4c8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/itinerary/optional-runtime-dependencies.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 55ae3280..cac86220 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -85,8 +85,8 @@ ecm_find_qmlmodule(QtPositioning 6.0)
+ ecm_find_qmlmodule(org.kde.kitemmodels 5.245)
+ ecm_find_qmlmodule(org.kde.prison 5.245)
+ ecm_find_qmlmodule(org.kde.prison.scanner 5.245)
+-ecm_find_qmlmodule(org.kde.kosmindoormap 24.02 REQUIRED)
+-ecm_find_qmlmodule(org.kde.kopeninghours 24.02 REQUIRED)
++ecm_find_qmlmodule(org.kde.kosmindoormap 24.02)
++ecm_find_qmlmodule(org.kde.kopeninghours 24.02)
+ 
+ # runtime dependencies are build-time dependencies on Android
+ if (ANDROID)
diff --git a/nixpkgs/pkgs/kde/gear/juk/default.nix b/nixpkgs/pkgs/kde/gear/juk/default.nix
new file mode 100644
index 000000000000..dec454d2385b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/juk/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  taglib,
+}:
+mkKdeDerivation {
+  pname = "juk";
+
+  extraBuildInputs = [qtsvg taglib];
+}
diff --git a/nixpkgs/pkgs/kde/gear/k3b/default.nix b/nixpkgs/pkgs/kde/gear/k3b/default.nix
new file mode 100644
index 000000000000..ab6b39a2f5e4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/k3b/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  mkKdeDerivation,
+  pkg-config,
+  qtwebengine,
+  shared-mime-info,
+  libdvdread,
+  flac,
+  libmad,
+  libsndfile,
+  lame,
+  libvorbis,
+  libsamplerate,
+  cdrdao,
+  cdrtools,
+  dvdplusrwtools,
+  libburn,
+  normalize,
+  sox,
+  transcode,
+  vcdimager,
+}:
+mkKdeDerivation {
+  pname = "k3b";
+
+  extraNativeBuildInputs = [pkg-config shared-mime-info];
+
+  # FIXME: Musicbrainz 2.x???, musepack
+  extraBuildInputs = [
+    qtwebengine
+    libdvdread
+    flac
+    libmad
+    libsndfile
+    lame
+    libvorbis
+    libsamplerate
+  ];
+
+  qtWrapperArgs = [
+    "--prefix PATH ':' ${lib.makeBinPath [
+      cdrdao
+      cdrtools
+      dvdplusrwtools
+      libburn
+      normalize
+      sox
+      transcode
+      vcdimager
+      flac
+    ]}"
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kaccounts-integration/default.nix b/nixpkgs/pkgs/kde/gear/kaccounts-integration/default.nix
new file mode 100644
index 000000000000..1b927d3e01ef
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kaccounts-integration/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  intltool,
+}:
+mkKdeDerivation {
+  pname = "kaccounts-integration";
+
+  propagatedNativeBuildInputs = [intltool];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kaccounts-providers/default.nix b/nixpkgs/pkgs/kde/gear/kaccounts-providers/default.nix
new file mode 100644
index 000000000000..6cd2fd7e3304
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kaccounts-providers/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  intltool,
+  qtdeclarative,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "kaccounts-providers";
+
+  extraNativeBuildInputs = [intltool];
+  extraBuildInputs = [qtdeclarative qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kaddressbook/default.nix b/nixpkgs/pkgs/kde/gear/kaddressbook/default.nix
new file mode 100644
index 000000000000..d4e2c5820038
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kaddressbook/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kaddressbook";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kajongg/default.nix b/nixpkgs/pkgs/kde/gear/kajongg/default.nix
new file mode 100644
index 000000000000..651ac3b3115a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kajongg/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  python3,
+}:
+mkKdeDerivation {
+  pname = "kajongg";
+
+  extraBuildInputs = [qtsvg python3 python3.pkgs.twisted];
+  # FIXME: completely horked, is actually a Python app, needs a lot of fixing
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kalarm/default.nix b/nixpkgs/pkgs/kde/gear/kalarm/default.nix
new file mode 100644
index 000000000000..439f92206967
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kalarm/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kalarm";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kalgebra/default.nix b/nixpkgs/pkgs/kde/gear/kalgebra/default.nix
new file mode 100644
index 000000000000..89aaafc04c96
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kalgebra/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtwebengine,
+  ncurses,
+  readline,
+}:
+mkKdeDerivation {
+  pname = "kalgebra";
+
+  extraBuildInputs = [qtsvg qtwebengine ncurses readline];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kalk/default.nix b/nixpkgs/pkgs/kde/gear/kalk/default.nix
new file mode 100644
index 000000000000..b2cce371346e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kalk/default.nix
@@ -0,0 +1,25 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qqc2-desktop-style,
+  kirigami-addons,
+  pkg-config,
+  bison,
+  flex,
+  gmp,
+  mpfr,
+  libqalculate,
+}:
+mkKdeDerivation {
+  pname = "kalk";
+
+  extraNativeBuildInputs = [pkg-config bison flex];
+  extraBuildInputs = [
+    qtdeclarative
+    qqc2-desktop-style
+    kirigami-addons
+    gmp
+    mpfr
+    libqalculate
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kalzium/default.nix b/nixpkgs/pkgs/kde/gear/kalzium/default.nix
new file mode 100644
index 000000000000..7e46128dc967
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kalzium/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  ocaml,
+  eigen,
+  openbabel,
+  qtsvg,
+  qtscxml,
+}:
+mkKdeDerivation {
+  pname = "kalzium";
+
+  # FIXME: look into how to make it find libfacile
+  extraNativeBuildInputs = [pkg-config ocaml];
+  extraBuildInputs = [eigen openbabel qtsvg qtscxml];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kamera/default.nix b/nixpkgs/pkgs/kde/gear/kamera/default.nix
new file mode 100644
index 000000000000..3ab21c99f4ed
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kamera/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  libgphoto2,
+}:
+mkKdeDerivation {
+  pname = "kamera";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [libgphoto2];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kamoso/default.nix b/nixpkgs/pkgs/kde/gear/kamoso/default.nix
new file mode 100644
index 000000000000..b83e193f3117
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kamoso/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kamoso";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kanagram/default.nix b/nixpkgs/pkgs/kde/gear/kanagram/default.nix
new file mode 100644
index 000000000000..4a12b6153e15
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kanagram/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtspeech,
+}:
+mkKdeDerivation {
+  pname = "kanagram";
+
+  extraBuildInputs = [qtspeech];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kapman/default.nix b/nixpkgs/pkgs/kde/gear/kapman/default.nix
new file mode 100644
index 000000000000..2b3599ccd3f3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kapman/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kapman";
+
+  extraNativeBuildInputs = [_7zz];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kapptemplate/default.nix b/nixpkgs/pkgs/kde/gear/kapptemplate/default.nix
new file mode 100644
index 000000000000..0559bc33e522
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kapptemplate/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kapptemplate";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kasts/default.nix b/nixpkgs/pkgs/kde/gear/kasts/default.nix
new file mode 100644
index 000000000000..94fa949a78d7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kasts/default.nix
@@ -0,0 +1,21 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtmultimedia,
+  pkg-config,
+  qqc2-desktop-style,
+  taglib,
+  libvlc,
+}:
+mkKdeDerivation {
+  pname = "kasts";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [
+    qtsvg
+    qtmultimedia
+    qqc2-desktop-style
+    taglib
+    libvlc
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kate/default.nix b/nixpkgs/pkgs/kde/gear/kate/default.nix
new file mode 100644
index 000000000000..044b7b35e8b5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kate/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kate";
+}
diff --git a/nixpkgs/pkgs/kde/gear/katomic/default.nix b/nixpkgs/pkgs/kde/gear/katomic/default.nix
new file mode 100644
index 000000000000..22ce4c19c216
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/katomic/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "katomic";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kbackup/default.nix b/nixpkgs/pkgs/kde/gear/kbackup/default.nix
new file mode 100644
index 000000000000..aca459e19264
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kbackup/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  libarchive,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "kbackup";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  extraBuildInputs = [qt5compat libarchive];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kblackbox/default.nix b/nixpkgs/pkgs/kde/gear/kblackbox/default.nix
new file mode 100644
index 000000000000..2aba074ac562
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kblackbox/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kblackbox";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kblocks/default.nix b/nixpkgs/pkgs/kde/gear/kblocks/default.nix
new file mode 100644
index 000000000000..e184971a9491
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kblocks/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kblocks";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kbounce/default.nix b/nixpkgs/pkgs/kde/gear/kbounce/default.nix
new file mode 100644
index 000000000000..d94cd2cbf351
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kbounce/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kbounce";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kbreakout/default.nix b/nixpkgs/pkgs/kde/gear/kbreakout/default.nix
new file mode 100644
index 000000000000..34e9e8435779
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kbreakout/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "kbreakout";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kbruch/default.nix b/nixpkgs/pkgs/kde/gear/kbruch/default.nix
new file mode 100644
index 000000000000..ea034aa275b9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kbruch/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kbruch";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcachegrind/default.nix b/nixpkgs/pkgs/kde/gear/kcachegrind/default.nix
new file mode 100644
index 000000000000..9023492d1740
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcachegrind/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kcachegrind";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcalc/default.nix b/nixpkgs/pkgs/kde/gear/kcalc/default.nix
new file mode 100644
index 000000000000..66bffedbb3c0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcalc/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  gmp,
+  mpfr,
+  kdoctools,
+}:
+mkKdeDerivation {
+  pname = "kcalc";
+
+  extraNativeBuildInputs = [kdoctools];
+  extraBuildInputs = [qt5compat gmp mpfr];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcalutils/default.nix b/nixpkgs/pkgs/kde/gear/kcalutils/default.nix
new file mode 100644
index 000000000000..1b58cce9ff00
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcalutils/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcalutils";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcharselect/default.nix b/nixpkgs/pkgs/kde/gear/kcharselect/default.nix
new file mode 100644
index 000000000000..1fffb87d32cd
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcharselect/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcharselect";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kclock/default.nix b/nixpkgs/pkgs/kde/gear/kclock/default.nix
new file mode 100644
index 000000000000..97db5fd92f0e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kclock/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "kclock";
+
+  extraBuildInputs = [qtsvg qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcolorchooser/default.nix b/nixpkgs/pkgs/kde/gear/kcolorchooser/default.nix
new file mode 100644
index 000000000000..5e82c5c2c36f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcolorchooser/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcolorchooser";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcron/default.nix b/nixpkgs/pkgs/kde/gear/kcron/default.nix
new file mode 100644
index 000000000000..b1707101d49f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcron/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcron";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kde-dev-scripts/default.nix b/nixpkgs/pkgs/kde/gear/kde-dev-scripts/default.nix
new file mode 100644
index 000000000000..7e82f80b8114
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kde-dev-scripts/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kde-dev-scripts";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kde-dev-utils/default.nix b/nixpkgs/pkgs/kde/gear/kde-dev-utils/default.nix
new file mode 100644
index 000000000000..6efce8354eec
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kde-dev-utils/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kde-dev-utils";
+
+  extraBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kde-inotify-survey/default.nix b/nixpkgs/pkgs/kde/gear/kde-inotify-survey/default.nix
new file mode 100644
index 000000000000..810fa3984093
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kde-inotify-survey/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kde-inotify-survey";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdebugsettings/default.nix b/nixpkgs/pkgs/kde/gear/kdebugsettings/default.nix
new file mode 100644
index 000000000000..47431c60aa2d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdebugsettings/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdebugsettings";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdeconnect-kde/default.nix b/nixpkgs/pkgs/kde/gear/kdeconnect-kde/default.nix
new file mode 100644
index 000000000000..fd8868cf41c2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdeconnect-kde/default.nix
@@ -0,0 +1,20 @@
+{
+  mkKdeDerivation,
+  qtconnectivity,
+  qtmultimedia,
+  qtwayland,
+  pkg-config,
+  wayland,
+  wayland-protocols,
+  libfakekey,
+}:
+mkKdeDerivation {
+  pname = "kdeconnect-kde";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtconnectivity qtmultimedia qtwayland wayland wayland-protocols libfakekey];
+
+  extraCmakeFlags = [
+    "-DQtWaylandScanner_EXECUTABLE=${qtwayland}/libexec/qtwaylandscanner"
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdeedu-data/default.nix b/nixpkgs/pkgs/kde/gear/kdeedu-data/default.nix
new file mode 100644
index 000000000000..74bc3921389c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdeedu-data/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdeedu-data";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdegraphics-mobipocket/default.nix b/nixpkgs/pkgs/kde/gear/kdegraphics-mobipocket/default.nix
new file mode 100644
index 000000000000..7636cbe1dd27
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdegraphics-mobipocket/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "kdegraphics-mobipocket";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/default.nix b/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/default.nix
new file mode 100644
index 000000000000..bfb3ba1fc850
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/default.nix
@@ -0,0 +1,17 @@
+{
+  mkKdeDerivation,
+  substituteAll,
+  ghostscript,
+}:
+mkKdeDerivation {
+  pname = "kdegraphics-thumbnailers";
+
+  patches = [
+    # Hardcode patches to Ghostscript so PDF thumbnails work OOTB.
+    # Intentionally not doing the same for dvips because TeX is big.
+    (substituteAll {
+      gs = "${ghostscript}/bin/gs";
+      src = ./gs-paths.patch;
+    })
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/gs-paths.patch b/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/gs-paths.patch
new file mode 100644
index 000000000000..5aa4a8d7444c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/gs-paths.patch
@@ -0,0 +1,22 @@
+diff --git a/ps/gscreator.cpp b/ps/gscreator.cpp
+index 5b84e49..cbb7c25 100644
+--- a/ps/gscreator.cpp
++++ b/ps/gscreator.cpp
+@@ -101,7 +101,7 @@ static const char *epsprolog =
+     "[ ] 0 setdash newpath false setoverprint false setstrokeadjust\n";
+ 
+ static const char * gsargs_ps[] = {
+-    "gs",
++    "@gs@",
+     "-sDEVICE=png16m",
+     "-sOutputFile=-",
+     "-dSAFER",
+@@ -120,7 +120,7 @@ static const char * gsargs_ps[] = {
+ };
+ 
+ static const char * gsargs_eps[] = {
+-    "gs",
++    "@gs@",
+     "-sDEVICE=png16m",
+     "-sOutputFile=-",
+     "-dSAFER",
diff --git a/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/default.nix b/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/default.nix
new file mode 100644
index 000000000000..a91dc2529503
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kdenetwork-filesharing";
+
+  patches = [./smbd-path.patch];
+
+  extraBuildInputs = [qtdeclarative];
+
+  # We can't actually install samba via PackageKit, so let's not confuse users any more than we have to
+  extraCmakeFlags = ["-DSAMBA_INSTALL=OFF"];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/smbd-path.patch b/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/smbd-path.patch
new file mode 100644
index 000000000000..e6e4e73333a7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/smbd-path.patch
@@ -0,0 +1,14 @@
+diff --git a/samba/filepropertiesplugin/sambausershareplugin.cpp b/samba/filepropertiesplugin/sambausershareplugin.cpp
+index d5c8d77..11c45d4 100644
+--- a/samba/filepropertiesplugin/sambausershareplugin.cpp
++++ b/samba/filepropertiesplugin/sambausershareplugin.cpp
+@@ -112,7 +112,8 @@ SambaUserSharePlugin::SambaUserSharePlugin(QObject *parent)
+ bool SambaUserSharePlugin::isSambaInstalled()
+ {
+     return QFile::exists(QStringLiteral("/usr/sbin/smbd"))
+-        || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"));
++        || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"))
++        || QFile::exists(QStringLiteral("/run/current-system/sw/bin/smbd"));
+ }
+ 
+ void SambaUserSharePlugin::showSambaStatus()
diff --git a/nixpkgs/pkgs/kde/gear/kdenlive/default.nix b/nixpkgs/pkgs/kde/gear/kdenlive/default.nix
new file mode 100644
index 000000000000..49643826b9e2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdenlive/default.nix
@@ -0,0 +1,40 @@
+{
+  mkKdeDerivation,
+  substituteAll,
+  qtsvg,
+  qtmultimedia,
+  qtnetworkauth,
+  ffmpeg-full,
+  mediainfo,
+  mlt,
+  shared-mime-info,
+  libv4l,
+  frei0r,
+}:
+mkKdeDerivation {
+  pname = "kdenlive";
+
+  patches = [
+    (
+      substituteAll {
+        src = ./dependency-paths.patch;
+        inherit mediainfo mlt;
+        ffmpeg = ffmpeg-full;
+      }
+    )
+  ];
+
+  extraBuildInputs = [
+    qtsvg
+    qtmultimedia
+    qtnetworkauth
+
+    mlt
+    shared-mime-info
+    libv4l
+  ];
+
+  qtWrapperArgs = [
+    "--set FREI0R_PATH ${frei0r}/lib/frei0r-1"
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdenlive/dependency-paths.patch b/nixpkgs/pkgs/kde/gear/kdenlive/dependency-paths.patch
new file mode 100644
index 000000000000..7fd04bd5114d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdenlive/dependency-paths.patch
@@ -0,0 +1,46 @@
+diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg
+index 029849e5f..8befe4888 100644
+--- a/src/kdenlivesettings.kcfg
++++ b/src/kdenlivesettings.kcfg
+@@ -517,7 +517,7 @@
+   <group name="env">
+     <entry name="mltpath" type="Path">
+       <label>Mlt framework install path.</label>
+-      <default></default>
++      <default>@mlt@/share/mlt-7/profiles</default>
+     </entry>
+ 
+     <entry name="kdenliverendererpath" type="Path">
+@@ -527,27 +527,27 @@
+ 
+     <entry name="meltpath" type="Path">
+       <label>Mlt melt renderer install path.</label>
+-      <default></default>
++      <default>@mlt@/bin/melt</default>
+     </entry>
+ 
+     <entry name="ffmpegpath" type="Path">
+       <label>FFmpeg / Libav binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffmpeg</default>
+     </entry>
+ 
+     <entry name="ffplaypath" type="Path">
+       <label>FFplay / avplay binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffplay</default>
+     </entry>
+ 
+     <entry name="ffprobepath" type="Path">
+       <label>FFprobe / avprobe binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffprobe</default>
+     </entry>
+ 
+     <entry name="mediainfopath" type="Path">
+       <label>mediaInfo binary path.</label>
+-      <default></default>
++      <default>@mediainfo@/bin/mediainfo</default>
+     </entry>
+ 
+     <entry name="processingthreads" type="Int">
diff --git a/nixpkgs/pkgs/kde/gear/kdepim-addons/default.nix b/nixpkgs/pkgs/kde/gear/kdepim-addons/default.nix
new file mode 100644
index 000000000000..66c24a91bdee
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdepim-addons/default.nix
@@ -0,0 +1,35 @@
+{
+  mkKdeDerivation,
+  sources,
+  rustPlatform,
+  cargo,
+  rustc,
+  corrosion,
+  discount,
+  alpaka,
+  # provided as callPackage input to enable easier overrides through overlays
+  cargoHash ? "sha256-z2W2TxyN6Ye+KUaqz5nPAG5zxeABu/UXWuz+XpDpNfc=",
+}:
+mkKdeDerivation rec {
+  pname = "kdepim-addons";
+
+  inherit (sources.${pname}) version;
+
+  cargoRoot = "plugins/webengineurlinterceptor/adblock";
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    # include version in the name so we invalidate the FOD
+    name = "${pname}-${version}";
+    src = sources.${pname};
+    sourceRoot = "${pname}-${version}/${cargoRoot}";
+    hash = cargoHash;
+  };
+
+  extraNativeBuildInputs = [
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+  ];
+
+  extraBuildInputs = [corrosion discount alpaka];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdepim-runtime/default.nix b/nixpkgs/pkgs/kde/gear/kdepim-runtime/default.nix
new file mode 100644
index 000000000000..75c0d927ce80
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdepim-runtime/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+  qtnetworkauth,
+  qtspeech,
+  qtwebengine,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "kdepim-runtime";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  # FIXME: libkolabxml, libetebase
+  extraBuildInputs = [qtnetworkauth qtspeech qtwebengine cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdesdk-kio/default.nix b/nixpkgs/pkgs/kde/gear/kdesdk-kio/default.nix
new file mode 100644
index 000000000000..24715d90f6c9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdesdk-kio/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdesdk-kio";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdesdk-thumbnailers/default.nix b/nixpkgs/pkgs/kde/gear/kdesdk-thumbnailers/default.nix
new file mode 100644
index 000000000000..727fff83b3d2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdesdk-thumbnailers/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdesdk-thumbnailers";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdev-php/default.nix b/nixpkgs/pkgs/kde/gear/kdev-php/default.nix
new file mode 100644
index 000000000000..79e34ab94b46
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdev-php/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdev-php";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdev-python/default.nix b/nixpkgs/pkgs/kde/gear/kdev-python/default.nix
new file mode 100644
index 000000000000..91a52fc7226c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdev-python/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdev-python";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdevelop/default.nix b/nixpkgs/pkgs/kde/gear/kdevelop/default.nix
new file mode 100644
index 000000000000..c38d6f93681b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdevelop/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  extra-cmake-modules,
+}:
+mkKdeDerivation {
+  pname = "kdevelop";
+
+  extraBuildInputs = [extra-cmake-modules];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdf/default.nix b/nixpkgs/pkgs/kde/gear/kdf/default.nix
new file mode 100644
index 000000000000..8021e701cbaa
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdf/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdf";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdialog/default.nix b/nixpkgs/pkgs/kde/gear/kdialog/default.nix
new file mode 100644
index 000000000000..2ef126650578
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdialog/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdialog";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdiamond/default.nix b/nixpkgs/pkgs/kde/gear/kdiamond/default.nix
new file mode 100644
index 000000000000..a45a3c6f1093
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdiamond/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "kdiamond";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/keditbookmarks/default.nix b/nixpkgs/pkgs/kde/gear/keditbookmarks/default.nix
new file mode 100644
index 000000000000..8eec9c76ec75
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/keditbookmarks/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "keditbookmarks";
+}
diff --git a/nixpkgs/pkgs/kde/gear/keysmith/default.nix b/nixpkgs/pkgs/kde/gear/keysmith/default.nix
new file mode 100644
index 000000000000..a468409ff182
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/keysmith/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  pkg-config,
+  libsodium,
+}:
+mkKdeDerivation {
+  pname = "keysmith";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtsvg libsodium];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kfind/default.nix b/nixpkgs/pkgs/kde/gear/kfind/default.nix
new file mode 100644
index 000000000000..c0216e301575
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kfind/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "kfind";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kfourinline/default.nix b/nixpkgs/pkgs/kde/gear/kfourinline/default.nix
new file mode 100644
index 000000000000..5e1d6fba0ef0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kfourinline/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kfourinline";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kgeography/default.nix b/nixpkgs/pkgs/kde/gear/kgeography/default.nix
new file mode 100644
index 000000000000..aa9f878bbb9b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kgeography/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kgeography";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kget/default.nix b/nixpkgs/pkgs/kde/gear/kget/default.nix
new file mode 100644
index 000000000000..d6a4fadfd5d6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kget/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qgpgme,
+  libmms,
+}:
+mkKdeDerivation {
+  pname = "kget";
+
+  extraBuildInputs = [qgpgme libmms];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kgoldrunner/default.nix b/nixpkgs/pkgs/kde/gear/kgoldrunner/default.nix
new file mode 100644
index 000000000000..8d303e07cac7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kgoldrunner/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "kgoldrunner";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kgpg/default.nix b/nixpkgs/pkgs/kde/gear/kgpg/default.nix
new file mode 100644
index 000000000000..65f9a55221b5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kgpg/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  gpgme,
+}:
+mkKdeDerivation {
+  pname = "kgpg";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [gpgme];
+}
diff --git a/nixpkgs/pkgs/kde/gear/khangman/default.nix b/nixpkgs/pkgs/kde/gear/khangman/default.nix
new file mode 100644
index 000000000000..27da76e397e3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/khangman/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "khangman";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/khealthcertificate/default.nix b/nixpkgs/pkgs/kde/gear/khealthcertificate/default.nix
new file mode 100644
index 000000000000..6d5461bffc3c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/khealthcertificate/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "khealthcertificate";
+
+  extraNativeBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/gear/khelpcenter/default.nix b/nixpkgs/pkgs/kde/gear/khelpcenter/default.nix
new file mode 100644
index 000000000000..d60e16e3c163
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/khelpcenter/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  xapian,
+}:
+mkKdeDerivation {
+  pname = "khelpcenter";
+
+  extraBuildInputs = [qtwebengine xapian];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kidentitymanagement/default.nix b/nixpkgs/pkgs/kde/gear/kidentitymanagement/default.nix
new file mode 100644
index 000000000000..c66c416fd7ce
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kidentitymanagement/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kidentitymanagement";
+
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kig/default.nix b/nixpkgs/pkgs/kde/gear/kig/default.nix
new file mode 100644
index 000000000000..a3e4de99e6a8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kig/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kig";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kigo/default.nix b/nixpkgs/pkgs/kde/gear/kigo/default.nix
new file mode 100644
index 000000000000..819fb69b0c0f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kigo/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kigo";
+
+  extraNativeBuildInputs = [_7zz];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/killbots/default.nix b/nixpkgs/pkgs/kde/gear/killbots/default.nix
new file mode 100644
index 000000000000..03dcdb0d31fe
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/killbots/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "killbots";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kimagemapeditor/default.nix b/nixpkgs/pkgs/kde/gear/kimagemapeditor/default.nix
new file mode 100644
index 000000000000..fa19f24cd34b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kimagemapeditor/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "kimagemapeditor";
+
+  extraBuildInputs = [qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kimap/default.nix b/nixpkgs/pkgs/kde/gear/kimap/default.nix
new file mode 100644
index 000000000000..d106166ec4a6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kimap/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "kimap";
+
+  extraBuildInputs = [cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-admin/default.nix b/nixpkgs/pkgs/kde/gear/kio-admin/default.nix
new file mode 100644
index 000000000000..042253978983
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-admin/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kio-admin";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-extras-kf5/default.nix b/nixpkgs/pkgs/kde/gear/kio-extras-kf5/default.nix
new file mode 100644
index 000000000000..d92f7a61b8a2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-extras-kf5/default.nix
@@ -0,0 +1,62 @@
+{
+  stdenv,
+  sources,
+  kio-extras,
+  cmake,
+  libsForQt5,
+  samba,
+  libssh,
+  libmtp,
+  libimobiledevice,
+  gperf,
+  libtirpc,
+  openexr,
+  taglib,
+  libappimage,
+}:
+stdenv.mkDerivation rec {
+  pname = "kio-extras-kf5";
+  inherit (sources.${pname}) version;
+
+  src = sources.${pname};
+
+  nativeBuildInputs = with libsForQt5; [
+    cmake
+    extra-cmake-modules
+    wrapQtAppsHook
+  ];
+
+  buildInputs = with libsForQt5; [
+    qtbase
+
+    kactivities
+    kactivities-stats
+    karchive
+    kconfig
+    kconfigwidgets
+    kcoreaddons
+    kdbusaddons
+    kdnssd
+    kdoctools
+    kdsoap
+    kguiaddons
+    ki18n
+    kio
+    libkexiv2
+    phonon
+    solid
+    syntax-highlighting
+
+    samba
+    libssh
+    libmtp
+    libimobiledevice
+    gperf
+    libtirpc
+    openexr
+    taglib
+    libappimage
+  ];
+
+  meta = kio-extras.meta;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-extras/default.nix b/nixpkgs/pkgs/kde/gear/kio-extras/default.nix
new file mode 100644
index 000000000000..b80f9175a5e9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-extras/default.nix
@@ -0,0 +1,45 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  qtsvg,
+  pkg-config,
+  libkexiv2,
+  samba,
+  libssh,
+  libmtp,
+  libimobiledevice,
+  gperf,
+  libtirpc,
+  openexr,
+  taglib,
+  shared-mime-info,
+  libappimage,
+  xorg,
+  kio,
+}:
+mkKdeDerivation {
+  pname = "kio-extras";
+
+  extraNativeBuildInputs = [pkg-config shared-mime-info];
+  extraBuildInputs = [
+    qt5compat
+    qtsvg
+    libkexiv2
+
+    samba
+    libssh
+    libmtp
+    libimobiledevice
+    gperf
+    libtirpc
+    openexr
+    taglib
+    libappimage
+    xorg.libXcursor
+  ];
+
+  postInstall = ''
+    substituteInPlace $out/share/dbus-1/services/org.kde.kmtpd5.service \
+      --replace-fail Exec=$out/libexec/kf6/kiod6 Exec=${kio}/libexec/kf6/kiod6
+  '';
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-gdrive/default.nix b/nixpkgs/pkgs/kde/gear/kio-gdrive/default.nix
new file mode 100644
index 000000000000..1c28dd3dcd10
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-gdrive/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kio-gdrive";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-zeroconf/default.nix b/nixpkgs/pkgs/kde/gear/kio-zeroconf/default.nix
new file mode 100644
index 000000000000..0b731162af83
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-zeroconf/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kio-zeroconf";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kipi-plugins/default.nix b/nixpkgs/pkgs/kde/gear/kipi-plugins/default.nix
new file mode 100644
index 000000000000..a0a074b86a97
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kipi-plugins/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kipi-plugins";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kirigami-gallery/default.nix b/nixpkgs/pkgs/kde/gear/kirigami-gallery/default.nix
new file mode 100644
index 000000000000..e3ff036ad5e8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kirigami-gallery/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kirigami-gallery";
+
+  extraBuildInputs = [qtsvg];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kiriki/default.nix b/nixpkgs/pkgs/kde/gear/kiriki/default.nix
new file mode 100644
index 000000000000..a8344ef973cb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kiriki/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kiriki";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kiten/default.nix b/nixpkgs/pkgs/kde/gear/kiten/default.nix
new file mode 100644
index 000000000000..5f87c6c66b39
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kiten/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kiten";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kitinerary/default.nix b/nixpkgs/pkgs/kde/gear/kitinerary/default.nix
new file mode 100644
index 000000000000..de3f4ef00005
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kitinerary/default.nix
@@ -0,0 +1,21 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtdeclarative,
+  shared-mime-info,
+  poppler,
+  libphonenumber,
+  protobuf,
+}:
+mkKdeDerivation {
+  pname = "kitinerary";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  extraBuildInputs = [
+    qtsvg
+    qtdeclarative
+    poppler
+    libphonenumber
+    protobuf
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kjournald/default.nix b/nixpkgs/pkgs/kde/gear/kjournald/default.nix
new file mode 100644
index 000000000000..d03e8b815ae4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kjournald/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  pkg-config,
+  systemd,
+}:
+mkKdeDerivation {
+  pname = "kjournald";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtdeclarative systemd];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kjumpingcube/default.nix b/nixpkgs/pkgs/kde/gear/kjumpingcube/default.nix
new file mode 100644
index 000000000000..c13ece29da89
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kjumpingcube/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kjumpingcube";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kldap/default.nix b/nixpkgs/pkgs/kde/gear/kldap/default.nix
new file mode 100644
index 000000000000..99c17b169147
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kldap/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  cyrus_sasl,
+  openldap,
+}:
+mkKdeDerivation {
+  pname = "kldap";
+
+  extraBuildInputs = [cyrus_sasl openldap];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kleopatra/default.nix b/nixpkgs/pkgs/kde/gear/kleopatra/default.nix
new file mode 100644
index 000000000000..58d3f4b5a9cf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kleopatra/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+  akonadi-mime,
+}:
+mkKdeDerivation {
+  pname = "kleopatra";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  extraBuildInputs = [akonadi-mime];
+}
diff --git a/nixpkgs/pkgs/kde/gear/klettres/default.nix b/nixpkgs/pkgs/kde/gear/klettres/default.nix
new file mode 100644
index 000000000000..ecf58d98fc37
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/klettres/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "klettres";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/klickety/default.nix b/nixpkgs/pkgs/kde/gear/klickety/default.nix
new file mode 100644
index 000000000000..0df68937124b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/klickety/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "klickety";
+}
diff --git a/nixpkgs/pkgs/kde/gear/klines/default.nix b/nixpkgs/pkgs/kde/gear/klines/default.nix
new file mode 100644
index 000000000000..5399962382b0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/klines/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "klines";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmag/default.nix b/nixpkgs/pkgs/kde/gear/kmag/default.nix
new file mode 100644
index 000000000000..24e6643b3b59
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmag/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmag";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmahjongg/default.nix b/nixpkgs/pkgs/kde/gear/kmahjongg/default.nix
new file mode 100644
index 000000000000..9ad776f3c6f4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmahjongg/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtsvg,
+  libkmahjongg,
+}:
+mkKdeDerivation {
+  pname = "kmahjongg";
+
+  extraBuildInputs = [qtdeclarative qtsvg];
+
+  qtWrapperArgs = ["--prefix XDG_DATA_DIRS : ${libkmahjongg}/share"];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmail-account-wizard/default.nix b/nixpkgs/pkgs/kde/gear/kmail-account-wizard/default.nix
new file mode 100644
index 000000000000..d030eabcce01
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmail-account-wizard/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmail-account-wizard";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmail/default.nix b/nixpkgs/pkgs/kde/gear/kmail/default.nix
new file mode 100644
index 000000000000..f3f659fbaf5f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmail/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmail";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmailtransport/default.nix b/nixpkgs/pkgs/kde/gear/kmailtransport/default.nix
new file mode 100644
index 000000000000..cf1bf8c1b223
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmailtransport/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmailtransport";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmbox/default.nix b/nixpkgs/pkgs/kde/gear/kmbox/default.nix
new file mode 100644
index 000000000000..ef840d3eda4d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmbox/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmbox";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmime/default.nix b/nixpkgs/pkgs/kde/gear/kmime/default.nix
new file mode 100644
index 000000000000..52e2b97da392
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmime/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmime";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmines/default.nix b/nixpkgs/pkgs/kde/gear/kmines/default.nix
new file mode 100644
index 000000000000..32a8c179f0ec
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmines/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmines";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmix/default.nix b/nixpkgs/pkgs/kde/gear/kmix/default.nix
new file mode 100644
index 000000000000..b83392baa7df
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmix/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmix";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmousetool/default.nix b/nixpkgs/pkgs/kde/gear/kmousetool/default.nix
new file mode 100644
index 000000000000..8ba8615cbbe6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmousetool/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+  xorg,
+}:
+mkKdeDerivation {
+  pname = "kmousetool";
+
+  extraBuildInputs = [qtmultimedia xorg.libXt];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmouth/default.nix b/nixpkgs/pkgs/kde/gear/kmouth/default.nix
new file mode 100644
index 000000000000..75d044b1c686
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmouth/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtspeech,
+}:
+mkKdeDerivation {
+  pname = "kmouth";
+
+  extraBuildInputs = [qtspeech];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmplot/default.nix b/nixpkgs/pkgs/kde/gear/kmplot/default.nix
new file mode 100644
index 000000000000..55f4a21d0e6a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmplot/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kmplot";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/knavalbattle/default.nix b/nixpkgs/pkgs/kde/gear/knavalbattle/default.nix
new file mode 100644
index 000000000000..6a98a2826d1f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/knavalbattle/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "knavalbattle";
+}
diff --git a/nixpkgs/pkgs/kde/gear/knetwalk/default.nix b/nixpkgs/pkgs/kde/gear/knetwalk/default.nix
new file mode 100644
index 000000000000..c77a714e5949
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/knetwalk/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "knetwalk";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/knights/default.nix b/nixpkgs/pkgs/kde/gear/knights/default.nix
new file mode 100644
index 000000000000..1fa6519fe16e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/knights/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtspeech,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "knights";
+
+  extraNativeBuildInputs = [_7zz];
+  extraBuildInputs = [qtsvg qtspeech];
+}
diff --git a/nixpkgs/pkgs/kde/gear/knotes/default.nix b/nixpkgs/pkgs/kde/gear/knotes/default.nix
new file mode 100644
index 000000000000..bca10fcf13da
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/knotes/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "knotes";
+}
diff --git a/nixpkgs/pkgs/kde/gear/koko/default.nix b/nixpkgs/pkgs/kde/gear/koko/default.nix
new file mode 100644
index 000000000000..c2b42bc693e7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/koko/default.nix
@@ -0,0 +1,46 @@
+{
+  fetchurl,
+  mkKdeDerivation,
+  pkg-config,
+  qtmultimedia,
+  qtpositioning,
+  qtsvg,
+  exiv2,
+  kirigami-addons,
+  kquickimageeditor,
+}: let
+  # URLs snapshotted through
+  # https://web.archive.org/save/$url
+  # Update when stale enough I guess?
+  admin1 = fetchurl {
+    url = "https://web.archive.org/web/20210714035424if_/http://download.geonames.org/export/dump/admin1CodesASCII.txt";
+    sha256 = "0r783yzajs26hvccdy4jv2v06xfgadx2g90fz3yn7lx8flz4nhwm";
+  };
+  admin2 = fetchurl {
+    url = "https://web.archive.org/web/20210714035427if_/http://download.geonames.org/export/dump/admin2Codes.txt";
+    sha256 = "1n5nzp3xblhr93rb1sadi5vfbw29slv5lc6cxq21h3x3cg0mwqh3";
+  };
+  cities1000 = fetchurl {
+    url = "https://web.archive.org/web/20210714035406if_/http://download.geonames.org/export/dump/cities1000.zip";
+    sha256 = "0cwbfff8gzci5zrahh6d53b9b3bfv1cbwlv0k6076531i1c7md9p";
+  };
+in
+  mkKdeDerivation {
+    pname = "koko";
+
+    prePatch = ''
+      ln -s ${admin1}     src/admin1CodesASCII.txt
+      ln -s ${admin2}     src/admin2Codes.txt
+      ln -s ${cities1000} src/cities1000.zip
+    '';
+
+    extraNativeBuildInputs = [pkg-config];
+    extraBuildInputs = [
+      qtmultimedia
+      qtpositioning
+      qtsvg
+      exiv2
+      kirigami-addons
+      kquickimageeditor
+    ];
+  }
diff --git a/nixpkgs/pkgs/kde/gear/kolf/default.nix b/nixpkgs/pkgs/kde/gear/kolf/default.nix
new file mode 100644
index 000000000000..94e170ae6d33
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kolf/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kolf";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kollision/default.nix b/nixpkgs/pkgs/kde/gear/kollision/default.nix
new file mode 100644
index 000000000000..325510cdf2ee
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kollision/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kollision";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kolourpaint/default.nix b/nixpkgs/pkgs/kde/gear/kolourpaint/default.nix
new file mode 100644
index 000000000000..d5dbacca3843
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kolourpaint/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kolourpaint";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kompare/default.nix b/nixpkgs/pkgs/kde/gear/kompare/default.nix
new file mode 100644
index 000000000000..93580fc90dbf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kompare/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kompare";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kongress/default.nix b/nixpkgs/pkgs/kde/gear/kongress/default.nix
new file mode 100644
index 000000000000..8ac8807eb68e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kongress/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kongress";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/konqueror/default.nix b/nixpkgs/pkgs/kde/gear/konqueror/default.nix
new file mode 100644
index 000000000000..09093db5f358
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/konqueror/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  hunspell,
+}:
+mkKdeDerivation {
+  pname = "konqueror";
+
+  extraBuildInputs = [qtwebengine hunspell];
+
+  extraCmakeFlags = [
+    "-DWebEngineDictConverter_EXECUTABLE=${qtwebengine}/libexec/qwebengine_convert_dict"
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/konquest/default.nix b/nixpkgs/pkgs/kde/gear/konquest/default.nix
new file mode 100644
index 000000000000..54bd2f6048dd
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/konquest/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtscxml,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "konquest";
+
+  extraBuildInputs = [qtscxml qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/konsole/default.nix b/nixpkgs/pkgs/kde/gear/konsole/default.nix
new file mode 100644
index 000000000000..8cd29b8a4f91
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/konsole/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "konsole";
+
+  extraBuildInputs = [qt5compat qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kontact/default.nix b/nixpkgs/pkgs/kde/gear/kontact/default.nix
new file mode 100644
index 000000000000..fe258eea446b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kontact/default.nix
@@ -0,0 +1,23 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  akregator,
+  kaddressbook,
+  kmail,
+  knotes,
+  korganizer,
+  zanshin,
+}:
+mkKdeDerivation {
+  pname = "kontact";
+
+  extraBuildInputs = [
+    qtwebengine
+    akregator
+    kaddressbook
+    kmail
+    knotes
+    korganizer
+    zanshin
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kontactinterface/default.nix b/nixpkgs/pkgs/kde/gear/kontactinterface/default.nix
new file mode 100644
index 000000000000..4c7d6acab1ca
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kontactinterface/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kontactinterface";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kontrast/default.nix b/nixpkgs/pkgs/kde/gear/kontrast/default.nix
new file mode 100644
index 000000000000..60bf03534ba1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kontrast/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qcoro,
+}:
+mkKdeDerivation {
+  pname = "kontrast";
+
+  extraBuildInputs = [qtsvg qcoro];
+}
diff --git a/nixpkgs/pkgs/kde/gear/konversation/default.nix b/nixpkgs/pkgs/kde/gear/konversation/default.nix
new file mode 100644
index 000000000000..d7d5d3c2fb89
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/konversation/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qttools,
+  qtmultimedia,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "konversation";
+
+  extraBuildInputs = [qtmultimedia qt5compat qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kopeninghours/default.nix b/nixpkgs/pkgs/kde/gear/kopeninghours/default.nix
new file mode 100644
index 000000000000..b315d765fb39
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kopeninghours/default.nix
@@ -0,0 +1,20 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  bison,
+  flex,
+  boost,
+  python3,
+}:
+mkKdeDerivation {
+  pname = "kopeninghours";
+
+  extraNativeBuildInputs = [bison flex];
+  extraBuildInputs = [
+    qtdeclarative
+    (boost.override {
+      enablePython = true;
+      python = python3;
+    })
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/korganizer/default.nix b/nixpkgs/pkgs/kde/gear/korganizer/default.nix
new file mode 100644
index 000000000000..dfea744563e3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/korganizer/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "korganizer";
+
+  extraBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kosmindoormap/default.nix b/nixpkgs/pkgs/kde/gear/kosmindoormap/default.nix
new file mode 100644
index 000000000000..11b5c5cef398
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kosmindoormap/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  bison,
+  flex,
+}:
+mkKdeDerivation {
+  pname = "kosmindoormap";
+
+  extraNativeBuildInputs = [bison flex];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kpat/default.nix b/nixpkgs/pkgs/kde/gear/kpat/default.nix
new file mode 100644
index 000000000000..23b99dddb9f4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpat/default.nix
@@ -0,0 +1,21 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  _7zz,
+  shared-mime-info,
+  black-hole-solver,
+  freecell-solver,
+  libkdegames,
+}:
+mkKdeDerivation {
+  pname = "kpat";
+
+  extraNativeBuildInputs = [_7zz shared-mime-info];
+  extraBuildInputs = [
+    qtsvg
+    black-hole-solver
+    freecell-solver
+  ];
+
+  qtWrapperArgs = ["--prefix XDG_DATA_DIRS : ${libkdegames}/share"];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kpimtextedit/default.nix b/nixpkgs/pkgs/kde/gear/kpimtextedit/default.nix
new file mode 100644
index 000000000000..0c33280cc059
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpimtextedit/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "kpimtextedit";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kpkpass/default.nix b/nixpkgs/pkgs/kde/gear/kpkpass/default.nix
new file mode 100644
index 000000000000..a2f116f67d77
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpkpass/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "kpkpass";
+
+  extraNativeBuildInputs = [shared-mime-info];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kpmcore/default.nix b/nixpkgs/pkgs/kde/gear/kpmcore/default.nix
new file mode 100644
index 000000000000..9dfa4f3d6813
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpmcore/default.nix
@@ -0,0 +1,74 @@
+{
+  lib,
+  mkKdeDerivation,
+  writeText,
+  pkg-config,
+  cryptsetup,
+  lvm2,
+  mdadm,
+  smartmontools,
+  systemdMinimal,
+  util-linux,
+  btrfs-progs,
+  dosfstools,
+  e2fsprogs,
+  exfatprogs,
+  f2fs-tools,
+  fatresize,
+  hfsprogs,
+  jfsutils,
+  nilfs-utils,
+  ntfs3g,
+  reiser4progs,
+  reiserfsprogs,
+  udftools,
+  xfsprogs,
+  zfs,
+}: let
+  # https://github.com/KDE/kpmcore/blob/06f15334ecfbe871730a90dbe2b694ba060ee998/src/util/externalcommand_whitelist.h
+  runtimeDeps = [
+    cryptsetup
+    lvm2
+    mdadm
+    smartmontools
+    systemdMinimal
+    util-linux
+
+    btrfs-progs
+    dosfstools
+    e2fsprogs
+    exfatprogs
+    f2fs-tools
+    fatresize
+    hfsprogs
+    jfsutils
+    nilfs-utils
+    ntfs3g
+    reiser4progs
+    reiserfsprogs
+    udftools
+    xfsprogs
+    zfs
+
+    # FIXME: Missing command: hfsck hformat fsck.nilfs2 {fsck,mkfs,debugfs,tunefs}.ocfs2
+    # FIXME: audit to see if these are all still required
+  ];
+
+  trustedprefixes = writeText "kpmcore-trustedprefixes" (lib.concatStringsSep "\n" (map lib.getBin runtimeDeps));
+in
+  mkKdeDerivation {
+    pname = "kpmcore";
+
+    postPatch = ''
+      cp ${trustedprefixes} src/util/trustedprefixes
+    '';
+
+    preConfigure = ''
+      substituteInPlace src/util/CMakeLists.txt \
+        --replace \$\{POLKITQT-1_POLICY_FILES_INSTALL_DIR\} $out/share/polkit-1/actions
+      substituteInPlace src/backend/corebackend.cpp \
+        --replace /usr/share/polkit-1/actions/org.kde.kpmcore.externalcommand.policy $out/share/polkit-1/actions/org.kde.kpmcore.externalcommand.policy
+    '';
+
+    extraNativeBuildInputs = [pkg-config];
+  }
diff --git a/nixpkgs/pkgs/kde/gear/kpublictransport/default.nix b/nixpkgs/pkgs/kde/gear/kpublictransport/default.nix
new file mode 100644
index 000000000000..bc1a663b7762
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpublictransport/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  pkg-config,
+}:
+mkKdeDerivation {
+  pname = "kpublictransport";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kqtquickcharts/default.nix b/nixpkgs/pkgs/kde/gear/kqtquickcharts/default.nix
new file mode 100644
index 000000000000..682cd0531b7b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kqtquickcharts/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kqtquickcharts";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/krdc/default.nix b/nixpkgs/pkgs/kde/gear/krdc/default.nix
new file mode 100644
index 000000000000..75806e233b63
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/krdc/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  libssh,
+  libvncserver,
+  freerdp,
+}:
+mkKdeDerivation {
+  pname = "krdc";
+
+  extraBuildInputs = [libssh libvncserver freerdp];
+}
diff --git a/nixpkgs/pkgs/kde/gear/krecorder/default.nix b/nixpkgs/pkgs/kde/gear/krecorder/default.nix
new file mode 100644
index 000000000000..d6553f4d1fcb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/krecorder/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "krecorder";
+
+  extraBuildInputs = [qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kreversi/default.nix b/nixpkgs/pkgs/kde/gear/kreversi/default.nix
new file mode 100644
index 000000000000..8ad4233e1f1a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kreversi/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kreversi";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/krfb/default.nix b/nixpkgs/pkgs/kde/gear/krfb/default.nix
new file mode 100644
index 000000000000..03789537f63e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/krfb/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtwayland,
+  libvncserver,
+  xorg,
+}:
+mkKdeDerivation {
+  pname = "krfb";
+
+  extraCmakeFlags = [
+    "-DQtWaylandScanner_EXECUTABLE=${qtwayland}/libexec/qtwaylandscanner"
+  ];
+
+  extraBuildInputs = [qtwayland libvncserver xorg.libXdamage];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kross-interpreters/default.nix b/nixpkgs/pkgs/kde/gear/kross-interpreters/default.nix
new file mode 100644
index 000000000000..4040fa401ef9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kross-interpreters/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  extra-cmake-modules,
+}:
+mkKdeDerivation {
+  pname = "kross-interpreters";
+
+  extraBuildInputs = [extra-cmake-modules];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kruler/default.nix b/nixpkgs/pkgs/kde/gear/kruler/default.nix
new file mode 100644
index 000000000000..311dcc3bd840
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kruler/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kruler";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksanecore/default.nix b/nixpkgs/pkgs/kde/gear/ksanecore/default.nix
new file mode 100644
index 000000000000..7f7e63fb2caf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksanecore/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  sane-backends,
+}:
+mkKdeDerivation {
+  pname = "ksanecore";
+
+  extraBuildInputs = [sane-backends];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kshisen/default.nix b/nixpkgs/pkgs/kde/gear/kshisen/default.nix
new file mode 100644
index 000000000000..efa2b024d716
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kshisen/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kshisen";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksirk/default.nix b/nixpkgs/pkgs/kde/gear/ksirk/default.nix
new file mode 100644
index 000000000000..5c4196a7aff0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksirk/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "ksirk";
+
+  extraBuildInputs = [qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksmtp/default.nix b/nixpkgs/pkgs/kde/gear/ksmtp/default.nix
new file mode 100644
index 000000000000..c098ddd49c81
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksmtp/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "ksmtp";
+
+  extraBuildInputs = [qt5compat cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksnakeduel/default.nix b/nixpkgs/pkgs/kde/gear/ksnakeduel/default.nix
new file mode 100644
index 000000000000..b741df477f33
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksnakeduel/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "ksnakeduel";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kspaceduel/default.nix b/nixpkgs/pkgs/kde/gear/kspaceduel/default.nix
new file mode 100644
index 000000000000..1f4272b5cac9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kspaceduel/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kspaceduel";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksquares/default.nix b/nixpkgs/pkgs/kde/gear/ksquares/default.nix
new file mode 100644
index 000000000000..683a64a5bf59
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksquares/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ksquares";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksudoku/default.nix b/nixpkgs/pkgs/kde/gear/ksudoku/default.nix
new file mode 100644
index 000000000000..6f293bd26e1e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksudoku/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "ksudoku";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksystemlog/default.nix b/nixpkgs/pkgs/kde/gear/ksystemlog/default.nix
new file mode 100644
index 000000000000..604a52cc560b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksystemlog/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qt5compat,
+  audit,
+}:
+mkKdeDerivation {
+  pname = "ksystemlog";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qt5compat audit];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kteatime/default.nix b/nixpkgs/pkgs/kde/gear/kteatime/default.nix
new file mode 100644
index 000000000000..81d20ec270be
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kteatime/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kteatime";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktimer/default.nix b/nixpkgs/pkgs/kde/gear/ktimer/default.nix
new file mode 100644
index 000000000000..898b4a802e13
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktimer/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "ktimer";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktnef/default.nix b/nixpkgs/pkgs/kde/gear/ktnef/default.nix
new file mode 100644
index 000000000000..7fcd568ade72
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktnef/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ktnef";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktorrent/default.nix b/nixpkgs/pkgs/kde/gear/ktorrent/default.nix
new file mode 100644
index 000000000000..92e0646e696a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktorrent/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  taglib,
+  libmaxminddb,
+}:
+mkKdeDerivation {
+  pname = "ktorrent";
+
+  extraBuildInputs = [qtwebengine taglib libmaxminddb];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktouch/default.nix b/nixpkgs/pkgs/kde/gear/ktouch/default.nix
new file mode 100644
index 000000000000..7f744a9f79d5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktouch/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ktouch";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktrip/default.nix b/nixpkgs/pkgs/kde/gear/ktrip/default.nix
new file mode 100644
index 000000000000..87351e5e5490
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktrip/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ktrip";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktuberling/default.nix b/nixpkgs/pkgs/kde/gear/ktuberling/default.nix
new file mode 100644
index 000000000000..5602ac870479
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktuberling/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "ktuberling";
+
+  extraBuildInputs = [qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kturtle/default.nix b/nixpkgs/pkgs/kde/gear/kturtle/default.nix
new file mode 100644
index 000000000000..f55f7e92a03a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kturtle/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kturtle";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kubrick/default.nix b/nixpkgs/pkgs/kde/gear/kubrick/default.nix
new file mode 100644
index 000000000000..c8bedf44c2de
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kubrick/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  libGLU,
+}:
+mkKdeDerivation {
+  pname = "kubrick";
+
+  extraBuildInputs = [qtsvg libGLU];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kwalletmanager/default.nix b/nixpkgs/pkgs/kde/gear/kwalletmanager/default.nix
new file mode 100644
index 000000000000..72ebd76ffa3a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kwalletmanager/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kwalletmanager";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kwave/default.nix b/nixpkgs/pkgs/kde/gear/kwave/default.nix
new file mode 100644
index 000000000000..1c0f82ac7b3d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kwave/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kwave";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kweather/default.nix b/nixpkgs/pkgs/kde/gear/kweather/default.nix
new file mode 100644
index 000000000000..51d17a0a1e59
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kweather/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtcharts,
+  qqc2-desktop-style,
+  kholidays,
+}:
+mkKdeDerivation {
+  pname = "kweather";
+
+  extraBuildInputs = [qtsvg qtcharts qqc2-desktop-style kholidays];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kwordquiz/default.nix b/nixpkgs/pkgs/kde/gear/kwordquiz/default.nix
new file mode 100644
index 000000000000..82989919f6e0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kwordquiz/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtmultimedia,
+  qqc2-desktop-style,
+}:
+mkKdeDerivation {
+  pname = "kwordquiz";
+
+  extraBuildInputs = [
+    qtsvg
+    qtmultimedia
+    qqc2-desktop-style
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libgravatar/default.nix b/nixpkgs/pkgs/kde/gear/libgravatar/default.nix
new file mode 100644
index 000000000000..ddbdfa6dc6c8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libgravatar/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "libgravatar";
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkcddb/default.nix b/nixpkgs/pkgs/kde/gear/libkcddb/default.nix
new file mode 100644
index 000000000000..8325f19cedff
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkcddb/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  libmusicbrainz5,
+}:
+mkKdeDerivation {
+  pname = "libkcddb";
+
+  extraBuildInputs = [libmusicbrainz5];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkcompactdisc/default.nix b/nixpkgs/pkgs/kde/gear/libkcompactdisc/default.nix
new file mode 100644
index 000000000000..66615d3791d6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkcompactdisc/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  alsa-lib,
+}:
+mkKdeDerivation {
+  pname = "libkcompactdisc";
+
+  extraBuildInputs = [alsa-lib];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkdcraw/default.nix b/nixpkgs/pkgs/kde/gear/libkdcraw/default.nix
new file mode 100644
index 000000000000..df6717b22ded
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkdcraw/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  libraw,
+}:
+mkKdeDerivation {
+  pname = "libkdcraw";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [libraw];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkdegames/default.nix b/nixpkgs/pkgs/kde/gear/libkdegames/default.nix
new file mode 100644
index 000000000000..95a0265f0836
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkdegames/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  svgcleaner,
+  qtdeclarative,
+  qtsvg,
+  openal,
+  libsndfile,
+}:
+mkKdeDerivation {
+  pname = "libkdegames";
+
+  extraNativeBuildInputs = [_7zz svgcleaner];
+  extraBuildInputs = [openal libsndfile qtdeclarative qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkdepim/default.nix b/nixpkgs/pkgs/kde/gear/libkdepim/default.nix
new file mode 100644
index 000000000000..d682c45225eb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkdepim/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "libkdepim";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkeduvocdocument/default.nix b/nixpkgs/pkgs/kde/gear/libkeduvocdocument/default.nix
new file mode 100644
index 000000000000..f67c4e0ba497
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkeduvocdocument/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "libkeduvocdocument";
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkexiv2/default.nix b/nixpkgs/pkgs/kde/gear/libkexiv2/default.nix
new file mode 100644
index 000000000000..fa5cb7851ea2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkexiv2/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  pkg-config,
+  exiv2,
+}:
+mkKdeDerivation {
+  pname = "libkexiv2";
+
+  extraBuildInputs = [qt5compat exiv2];
+  extraNativeBuildInputs = [pkg-config];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkgapi/default.nix b/nixpkgs/pkgs/kde/gear/libkgapi/default.nix
new file mode 100644
index 000000000000..87d3beb23c50
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkgapi/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qttools,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "libkgapi";
+
+  extraBuildInputs = [qttools cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkipi/default.nix b/nixpkgs/pkgs/kde/gear/libkipi/default.nix
new file mode 100644
index 000000000000..965cf158a3dc
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkipi/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "libkipi";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkleo/default.nix b/nixpkgs/pkgs/kde/gear/libkleo/default.nix
new file mode 100644
index 000000000000..47cd88fee577
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkleo/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  boost,
+  qgpgme,
+}:
+mkKdeDerivation {
+  pname = "libkleo";
+
+  extraBuildInputs = [qt5compat boost];
+  extraPropagatedBuildInputs = [qgpgme];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkmahjongg/default.nix b/nixpkgs/pkgs/kde/gear/libkmahjongg/default.nix
new file mode 100644
index 000000000000..f411605318a2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkmahjongg/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  svgcleaner,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "libkmahjongg";
+
+  extraNativeBuildInputs = [_7zz svgcleaner];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkomparediff2/default.nix b/nixpkgs/pkgs/kde/gear/libkomparediff2/default.nix
new file mode 100644
index 000000000000..43cccc19603f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkomparediff2/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "libkomparediff2";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libksane/default.nix b/nixpkgs/pkgs/kde/gear/libksane/default.nix
new file mode 100644
index 000000000000..319d47b8b2d9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libksane/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "libksane";
+}
diff --git a/nixpkgs/pkgs/kde/gear/libksieve/default.nix b/nixpkgs/pkgs/kde/gear/libksieve/default.nix
new file mode 100644
index 000000000000..cec2f027b73d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libksieve/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "libksieve";
+
+  extraBuildInputs = [qtwebengine cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libktorrent/default.nix b/nixpkgs/pkgs/kde/gear/libktorrent/default.nix
new file mode 100644
index 000000000000..263cbb3cadb3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libktorrent/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  doxygen,
+  qt5compat,
+  boost,
+  gmp,
+  libgcrypt,
+}:
+mkKdeDerivation {
+  pname = "libktorrent";
+
+  extraNativeBuildInputs = [doxygen];
+  extraBuildInputs = [qt5compat];
+  extraPropagatedBuildInputs = [boost gmp libgcrypt];
+}
diff --git a/nixpkgs/pkgs/kde/gear/lokalize/default.nix b/nixpkgs/pkgs/kde/gear/lokalize/default.nix
new file mode 100644
index 000000000000..a50845f258bb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/lokalize/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "lokalize";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/lskat/default.nix b/nixpkgs/pkgs/kde/gear/lskat/default.nix
new file mode 100644
index 000000000000..e1b83925feb8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/lskat/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "lskat";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/mailcommon/default.nix b/nixpkgs/pkgs/kde/gear/mailcommon/default.nix
new file mode 100644
index 000000000000..44b2b283896e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/mailcommon/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "mailcommon";
+
+  extraBuildInputs = [qtwebengine qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/mailimporter/default.nix b/nixpkgs/pkgs/kde/gear/mailimporter/default.nix
new file mode 100644
index 000000000000..d43e0a2288f9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/mailimporter/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "mailimporter";
+}
diff --git a/nixpkgs/pkgs/kde/gear/marble/default.nix b/nixpkgs/pkgs/kde/gear/marble/default.nix
new file mode 100644
index 000000000000..1f6e574ed312
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/marble/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "marble";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/markdownpart/default.nix b/nixpkgs/pkgs/kde/gear/markdownpart/default.nix
new file mode 100644
index 000000000000..e40b6d03f883
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/markdownpart/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "markdownpart";
+}
diff --git a/nixpkgs/pkgs/kde/gear/mbox-importer/default.nix b/nixpkgs/pkgs/kde/gear/mbox-importer/default.nix
new file mode 100644
index 000000000000..7d1a6730e84d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/mbox-importer/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "mbox-importer";
+}
diff --git a/nixpkgs/pkgs/kde/gear/merkuro/default.nix b/nixpkgs/pkgs/kde/gear/merkuro/default.nix
new file mode 100644
index 000000000000..7ad2c3637f70
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/merkuro/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  libplasma,
+}:
+mkKdeDerivation {
+  pname = "merkuro";
+
+  extraBuildInputs = [qtsvg libplasma];
+}
diff --git a/nixpkgs/pkgs/kde/gear/messagelib/default.nix b/nixpkgs/pkgs/kde/gear/messagelib/default.nix
new file mode 100644
index 000000000000..47058be34826
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/messagelib/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "messagelib";
+
+  extraPropagatedBuildInputs = [qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/mimetreeparser/default.nix b/nixpkgs/pkgs/kde/gear/mimetreeparser/default.nix
new file mode 100644
index 000000000000..3bebd8aee726
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/mimetreeparser/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  qtdeclarative,
+  qgpgme,
+}:
+mkKdeDerivation {
+  pname = "mimetreeparser";
+
+  extraBuildInputs = [qt5compat qtdeclarative qgpgme];
+}
diff --git a/nixpkgs/pkgs/kde/gear/minuet/default.nix b/nixpkgs/pkgs/kde/gear/minuet/default.nix
new file mode 100644
index 000000000000..bbfe47b2796f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/minuet/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtsvg,
+  fluidsynth,
+}:
+mkKdeDerivation {
+  pname = "minuet";
+
+  extraBuildInputs = [qtdeclarative qtsvg fluidsynth];
+}
diff --git a/nixpkgs/pkgs/kde/gear/neochat/default.nix b/nixpkgs/pkgs/kde/gear/neochat/default.nix
new file mode 100644
index 000000000000..ac50d06db8c9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/neochat/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtlocation,
+  qtwebview,
+  kunifiedpush,
+}:
+mkKdeDerivation {
+  pname = "neochat";
+
+  extraBuildInputs = [qtlocation qtwebview kunifiedpush];
+}
diff --git a/nixpkgs/pkgs/kde/gear/okular/default.nix b/nixpkgs/pkgs/kde/gear/okular/default.nix
new file mode 100644
index 000000000000..4f2ad1f8e3b0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/okular/default.nix
@@ -0,0 +1,30 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtspeech,
+  qtsvg,
+  poppler,
+  libtiff,
+  libspectre,
+  libzip,
+  djvulibre,
+  ebook_tools,
+  discount,
+}:
+mkKdeDerivation {
+  pname = "okular";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [
+    qtspeech
+    qtsvg
+
+    poppler
+    libtiff
+    libspectre
+    libzip
+    djvulibre
+    ebook_tools
+    discount
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/palapeli/default.nix b/nixpkgs/pkgs/kde/gear/palapeli/default.nix
new file mode 100644
index 000000000000..01cc8774d06d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/palapeli/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "palapeli";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/parley/default.nix b/nixpkgs/pkgs/kde/gear/parley/default.nix
new file mode 100644
index 000000000000..75f01c94e9d5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/parley/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtmultimedia,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "parley";
+
+  extraBuildInputs = [qtsvg qtmultimedia qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/partitionmanager/default.nix b/nixpkgs/pkgs/kde/gear/partitionmanager/default.nix
new file mode 100644
index 000000000000..1b3b06f8d68b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/partitionmanager/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  kpmcore,
+}:
+mkKdeDerivation {
+  pname = "partitionmanager";
+
+  propagatedUserEnvPkgs = [kpmcore];
+}
diff --git a/nixpkgs/pkgs/kde/gear/picmi/default.nix b/nixpkgs/pkgs/kde/gear/picmi/default.nix
new file mode 100644
index 000000000000..a5dd853fba52
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/picmi/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "picmi";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/pim-data-exporter/default.nix b/nixpkgs/pkgs/kde/gear/pim-data-exporter/default.nix
new file mode 100644
index 000000000000..da2097f46763
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/pim-data-exporter/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "pim-data-exporter";
+}
diff --git a/nixpkgs/pkgs/kde/gear/pim-sieve-editor/default.nix b/nixpkgs/pkgs/kde/gear/pim-sieve-editor/default.nix
new file mode 100644
index 000000000000..66df72016321
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/pim-sieve-editor/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "pim-sieve-editor";
+}
diff --git a/nixpkgs/pkgs/kde/gear/pimcommon/default.nix b/nixpkgs/pkgs/kde/gear/pimcommon/default.nix
new file mode 100644
index 000000000000..ddb467638c65
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/pimcommon/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "pimcommon";
+
+  extraBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/plasmatube/default.nix b/nixpkgs/pkgs/kde/gear/plasmatube/default.nix
new file mode 100644
index 000000000000..db28e47c78c8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/plasmatube/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtquick3d,
+  qtsvg,
+  purpose,
+  pkg-config,
+  mpv,
+}:
+mkKdeDerivation {
+  pname = "plasmatube";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtquick3d qtsvg mpv];
+  extraPropagatedBuildInputs = [purpose];
+}
diff --git a/nixpkgs/pkgs/kde/gear/poxml/default.nix b/nixpkgs/pkgs/kde/gear/poxml/default.nix
new file mode 100644
index 000000000000..3c22e5e4b1e9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/poxml/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "poxml";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/qmlkonsole/default.nix b/nixpkgs/pkgs/kde/gear/qmlkonsole/default.nix
new file mode 100644
index 000000000000..c48dbad18204
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/qmlkonsole/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "qmlkonsole";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/rocs/default.nix b/nixpkgs/pkgs/kde/gear/rocs/default.nix
new file mode 100644
index 000000000000..73e7143f8df0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/rocs/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  boost,
+}:
+mkKdeDerivation {
+  pname = "rocs";
+
+  extraBuildInputs = [boost];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/signon-kwallet-extension/default.nix b/nixpkgs/pkgs/kde/gear/signon-kwallet-extension/default.nix
new file mode 100644
index 000000000000..15900552d50f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/signon-kwallet-extension/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  signond,
+}:
+mkKdeDerivation {
+  pname = "signon-kwallet-extension";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [signond];
+
+  # NB: not actually broken, just makes it install to $out instead of $signon/lib/extensions
+  # This is useless without a wrapped signond.
+  # FIXME: wrap signond with SSO_EXTENSIONS_DIR=$wrapper/lib/extensions
+  extraCmakeFlags = ["-DINSTALL_BROKEN_SIGNON_EXTENSION=1"];
+}
diff --git a/nixpkgs/pkgs/kde/gear/skanlite/default.nix b/nixpkgs/pkgs/kde/gear/skanlite/default.nix
new file mode 100644
index 000000000000..c64594d3fd09
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/skanlite/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "skanlite";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/skanpage/default.nix b/nixpkgs/pkgs/kde/gear/skanpage/default.nix
new file mode 100644
index 000000000000..a7352da8466c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/skanpage/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  tesseractLanguages ? [],
+  tesseract5,
+  leptonica,
+}:
+mkKdeDerivation {
+  pname = "skanpage";
+
+  extraBuildInputs = [
+    (tesseract5.override {enableLanguages = tesseractLanguages;})
+    leptonica
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/spectacle/default.nix b/nixpkgs/pkgs/kde/gear/spectacle/default.nix
new file mode 100644
index 000000000000..1b5539230cbd
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/spectacle/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtwayland,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "spectacle";
+
+  extraBuildInputs = [qtwayland qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/step/default.nix b/nixpkgs/pkgs/kde/gear/step/default.nix
new file mode 100644
index 000000000000..7e403a24d902
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/step/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  qttools,
+  qtsvg,
+  pkg-config,
+  eigen,
+  shared-mime-info,
+  gsl,
+  libqalculate,
+}:
+mkKdeDerivation {
+  pname = "step";
+
+  extraNativeBuildInputs = [qttools qtsvg pkg-config shared-mime-info];
+  extraBuildInputs = [eigen gsl libqalculate];
+}
diff --git a/nixpkgs/pkgs/kde/gear/svgpart/default.nix b/nixpkgs/pkgs/kde/gear/svgpart/default.nix
new file mode 100644
index 000000000000..44f25d0312b1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/svgpart/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "svgpart";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/sweeper/default.nix b/nixpkgs/pkgs/kde/gear/sweeper/default.nix
new file mode 100644
index 000000000000..f914ce9574be
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/sweeper/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  plasma-activities-stats,
+}:
+mkKdeDerivation {
+  pname = "sweeper";
+
+  extraBuildInputs = [plasma-activities-stats];
+}
diff --git a/nixpkgs/pkgs/kde/gear/telly-skout/default.nix b/nixpkgs/pkgs/kde/gear/telly-skout/default.nix
new file mode 100644
index 000000000000..c19ecf6b42d7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/telly-skout/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "telly-skout";
+}
diff --git a/nixpkgs/pkgs/kde/gear/tokodon/default.nix b/nixpkgs/pkgs/kde/gear/tokodon/default.nix
new file mode 100644
index 000000000000..464f354f41ed
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/tokodon/default.nix
@@ -0,0 +1,17 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtmultimedia,
+  qtsvg,
+  qtwebsockets,
+  qtwebview,
+  mpv,
+  kitemmodels,
+  sonnet,
+}:
+mkKdeDerivation {
+  pname = "tokodon";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtmultimedia qtsvg qtwebsockets qtwebview mpv kitemmodels sonnet];
+}
diff --git a/nixpkgs/pkgs/kde/gear/umbrello/default.nix b/nixpkgs/pkgs/kde/gear/umbrello/default.nix
new file mode 100644
index 000000000000..6aca83a9e825
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/umbrello/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "umbrello";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/yakuake/default.nix b/nixpkgs/pkgs/kde/gear/yakuake/default.nix
new file mode 100644
index 000000000000..420ec08f670b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/yakuake/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "yakuake";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/zanshin/default.nix b/nixpkgs/pkgs/kde/gear/zanshin/default.nix
new file mode 100644
index 000000000000..357b6963ff09
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/zanshin/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  boost,
+}:
+mkKdeDerivation {
+  pname = "zanshin";
+
+  extraBuildInputs = [boost];
+}