# KDE Desktio Environment { config, lib, pkgs, ... }: let cfg = config.my.profiles.kde-desktop; in { options.my.profiles.kde-desktop = with lib; { enable = mkEnableOption "KDE Desktop Environment"; startOnBoot = mkOption { type = types.bool; default = true; description = '' Whether the display manager (SDDM) starts automatically at boot. When false, the system boots to a text console and KDE can be launched on demand with the `desktop` command. ''; }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ { services = { displayManager.sddm.enable = true; displayManager.sddm.wayland.enable = true; desktopManager.plasma6.enable = true; }; users.users.finn.packages = with pkgs; [ # Programms can be added here... numix-icon-theme ]; } (lib.mkIf (!cfg.startOnBoot) { # Boot to a text console; SDDM stays installed but is not pulled in # by any boot target. Launch KDE on demand with `desktop`. systemd.services.display-manager.wantedBy = lib.mkForce [ ]; systemd.defaultUnit = lib.mkForce "multi-user.target"; environment.systemPackages = [ (pkgs.writeShellScriptBin "desktop" "exec sudo systemctl start display-manager.service") ]; }) ]); }