{ pkgs, lib, config, ... }: let name = "plasma"; cfg = config.nixowos.defaults.${name}; in { options.nixowos.defaults.${name} = { enable = lib.mkEnableOption name; # TODO: move startOnFirstTTY = lib.mkEnableOption "starting plasma from tty1" // { description = '' Whether to start ${name} automatically from tty1. note: this replaces sddm, which also means kwallet will not be unlocked automatically. kwallet is responsible for storing secrets, using your password for encryption. It's used by browsers, NetworkManager, and many more. ''; }; }; config = lib.mkIf cfg.enable { hardware.graphics.enable = true; environment.systemPackages = with pkgs; lib.mkIf config.nixowos.allowAddingPackages [ kdePackages.plasma-keyboard kdePackages.qtvirtualkeyboard wl-clipboard ]; environment.interactiveShellInit = lib.mkIf cfg.startOnFirstTTY /* sh */ "test $(tty) = /dev/tty1 && exec startplasma-wayland"; services.displayManager.sddm.enable = lib.mkIf cfg.startOnFirstTTY false; # remove plasma6 packages included by default # from optionalPackages defined in nixpkgs/nixos/modules/services/desktop-managers/plasma6.nix environment.plasma6.excludePackages = with pkgs.kdePackages; [ # aurorae plasma-browser-integration plasma-workspace-wallpapers # konsole kwin-x11 # (lib.getBin qttools) # Expose qdbus in PATH # ark elisa # gwenview # okular # kate # ktexteditor # provides elevated actions for kate # khelpcenter # dolphin # baloo-widgets # baloo information in Dolphin # dolphin-plugins # spectacle # ffmpegthumbs krdp # kconfig # required for xdg-terminal from xdg-utils # qtbase # for qtpaths which is required for xdg-mime from xdg-utils ]; # use kdeconnect (opens ports) programs.kdeconnect.enable = true; }; }