I found this thread while trying to figure out the config for converting my Arch system to NixOS, and I made a discovery that makes this a little cleaner.
First off, to respond to the question of whether Nixpkgs has an equivalent to Arch’s kde-applications-meta, the answer is kind of, but it’s actually not kdePackages itself. While the name suggests it contains all KDE applications, taking a closer look at kde-applications-meta (or the list for the kde-applications group) reveals that it’s actually just KDE Gear. Taking a look at Nixpkgs’s source, I saw that it actually has an attrset kdePackages.gear with just the gear applications. This is useful, since kdePackages also has other packages such as those related to the DE and various frameworks that you may not want to always pull in (or at least not explicitly).
With 25.11 (and to a lesser extent unstable), this attrset still requires some filtering, both due to broken packages and because of the usage of lib.dontRecurseIntoAttrs. Also, kdePackages.step is currently broken, but not marked as such (I made an issue report, but I don’t know if I need to make a PR to mark it as well), so that needs to be manually filtered as well. Put together, this is what I have for selecting all non-broken KDE Gear applications:
lib.pipe kdePackages.gear [
(lib.flip builtins.removeAttrs [ "recurseForDerivations" ])
builtins.attrValues
(builtins.filter (pkg: !pkg.meta.broken))
(builtins.filter (pkg: pkg.pname != "step")) # unmarked broken package
];
The removeAttrs shouldn’t be needed for unstable. If you want to filter out multiple packages (eg. just not wanting to install them), using something like (builtins.filter (pkg: !(builtins.elem pkg.pname [ ... ]))) or even adding them to the removeAttrs call is probably more efficient that adding multiple filter lines.
Some of the applications in KDE Gear uses olm, which Nixpkgs has marked as insecure. If you use this, you either need to exclude those applications, or allow olm with nixpkgs.config.permittedInsecurePackages = [ "olm-3.2.16" ];.
Also, a number of KDE Gear applications have programs option entries for them. With a quick search, I found programs.k3b.enable, programs.kclock.enable, programs.kdeconnect.enable, and programs.partition-manager.enable, as well as programs.kde-pim.* for a few more KDE Gear applications.
As a footnote, there are various applications that are distributed by KDE, but not included in Gear. For these applications, it seems like Nixpkgs handles them inconsistently. Some of them are under kdePackages, such as Marknote and Glaxnimate, while others are just in <nixpkgs> directly, such as Haruna and Krita. I don’t know if there’s any pattern as to what’s included and what’s not, but I’m thinking about opening a Github issue for making it consistent.
Also also, for anybody else coming from Arch, one gotcha to keep in mind: while Arch generally names KDE packages after the application names, NixOS instead names KDE packages after the git repository name. So, for example, KDE Connect is known as kdeconnect in Arch, but kdePackages.kdeconnect-kde in NixOS. Just keep this in mind if you’re trying to cross-reference a package list (like I am).