{ config, lib, pkgs, ... }: let cfg = config.ptw.programs.plasma; in { options.ptw.programs.plasma = { enable = lib.mkEnableOption "Enable KDE Plasma"; mobile = { enable = lib.mkEnableOption "Enable Plasma Mobile"; }; wayland = { enable = lib.mkOption { default = true; description = "Ignore NixOS 'recommendations' and use the Wayland session by default"; }; }; }; config = lib.mkIf cfg.enable { services.xserver = { desktopManager.plasma5 = { enable = true; runUsingSystemd = true; supportDDC = true; mobile.enable = cfg.mobile.enable; }; # See https://github.com/NixOS/nixpkgs/commit/a506f9c79700255c215dddb53455d5e2bed6c1af displayManager.defaultSession = lib.mkIf cfg.wayland.enable "plasmawayland"; }; xdg.portal = { enable = true; extraPortals = [ pkgs.xdg-desktop-portal-kde ]; }; environment.systemPackages = let kdePackages = with pkgs.libsForQt5; [ okular kdeconnect-kde breeze-gtk bismuth gwenview yakuake ]; packages = with pkgs; [ kde-rounded-corners index-fm rsibreak kalendar kate # Some Gnome software gnome.totem ]; in kdePackages ++ packages; }; }