{ 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 { security.pam.services = { login.enableKwallet = true; greetd.enableKwallet = true; }; services.xserver = { displayManager.sddm = { enable = true; autoNumlock = true; }; desktopManager.plasma5 = { enable = true; runUsingSystemd = true; supportDDC = true; mobile.enable = cfg.mobile.enable; kdeglobals = lib.mkIf cfg.mobile.enable { KDE = { StartDragDist = "10"; LookAndFeelPackage = "org.kde.plasma.phone"; }; Icons = { Theme = "breeze"; }; General = { ColorScheme = "breeze"; Name = "breeze"; XftHintStyle = "none"; XftSubPixel = "none"; shadeSortColumn = "true"; }; }; kwinrc = { Plugins = { "org.kde.phone.multitaskingEnabled" = "false"; "kwin4_effect_eyeonscreenEnabled" = "false"; "kwin4_effect_windowapertureEnabled" = "false"; blurEnabled = "false"; contrastEnabled = "false"; }; Windows = { Placement = "Maximizing"; }; TabBox = { TouchBorderActive = "9"; TouchBorderAlternativeActive = "9"; BorderActivate = "9"; }; "Effect-PresentWindows" = { BorderActivateAll = "9"; }; "org.kde.kdecoration2" = { NoPlugin = "true"; }; TouchEdges = { Left = "None"; Right = "None"; }; Wayland = { InputMethod = "${pkgs.maliit-keyboard}/usr/share/applications/com.github.maliit.keyboard.desktop"; }; }; }; # See https://github.com/NixOS/nixpkgs/commit/a506f9c79700255c215dddb53455d5e2bed6c1af displayManager = { defaultSession = lib.mkIf cfg.wayland.enable "plasmawayland"; #sessionPackages = lib.mkIf cfg.mobile.enable [ pkgs.libsForQt5.plasma5.plasma-mobile ]; }; }; xdg.portal = { enable = true; extraPortals = [ pkgs.xdg-desktop-portal-kde ]; }; environment.systemPackages = let plasmaMobilePackages = with pkgs.libsForQt5; with plasma5; with kdeApplications; with kdeFrameworks; [ plasma-mobile plasma-nano pkgs.maliit-framework pkgs.maliit-keyboard ]; kdePackages = with pkgs.libsForQt5; [ okular kdeconnect-kde breeze-gtk bismuth gwenview yakuake ] ++ lib.optionals cfg.mobile.enable plasmaMobilePackages; packages = with pkgs; [ #kde-rounded-corners index-fm rsibreak kalendar kate okular # Some Gnome software gnome.totem ]; in kdePackages ++ packages; }; }