diff --git a/modules/services/x11/xserver/desktop-managers/kde4.nix b/modules/services/x11/xserver/desktop-managers/kde4.nix index f8b66e2840d..de0838565fc 100644 --- a/modules/services/x11/xserver/desktop-managers/kde4.nix +++ b/modules/services/x11/xserver/desktop-managers/kde4.nix @@ -1,73 +1,70 @@ -{pkgs, config, ...}: +{ config, pkgs, ... }: + +with pkgs.lib; let - inherit (pkgs.lib) mkOption mkIf; + xcfg = config.services.xserver; cfg = xcfg.desktopManager.kde4; xorg = xcfg.package; - options = { services = { xserver = { desktopManager = { - - kde4 = { - enable = mkOption { - default = false; - example = true; - description = "Enable the kde 4 desktop manager."; - }; - }; - - }; }; }; }; in -mkIf (xcfg.enable && cfg.enable) { - require = [ - options +{ - # environment.kdePackages - ./kde-environment.nix - ]; + imports = [ ./kde-environment.nix ]; - services = { - xserver = { + + options = { - desktopManager = { - session = [{ - name = "kde4"; - start = '' + services.xserver.desktopManager.kde4.enable = mkOption { + default = false; + example = true; + description = "Enable the KDE 4 desktop environment."; + }; + + }; + + + config = mkIf (xcfg.enable && cfg.enable) { + + # If KDE 4 is enabled, make it default desktop manager (unless + # overriden by the user's configuration). + # !!! doesn't work yet ("Multiple definitions. Only one is allowed + # for this option.") + # services.xserver.desktopManager.default = mkOverride 900 "kde4"; + + services.xserver.desktopManager.session = singleton + { name = "kde4"; + bgSupport = true; + start = + '' # Start KDE. exec ${pkgs.kde42.kdebase_workspace}/bin/startkde ''; - }]; }; - }; - }; + security.setuidPrograms = [ "kcheckpass" ]; - security = { - extraSetuidPrograms = [ - "kcheckpass" - ]; - }; + environment.kdePackages = + [ pkgs.kde42.kdelibs + pkgs.kde42.kdebase + pkgs.kde42.kdebase_runtime + pkgs.kde42.kdebase_workspace + pkgs.shared_mime_info + ]; - environment = { - kdePackages = [ - pkgs.kde42.kdelibs - pkgs.kde42.kdebase - pkgs.kde42.kdebase_runtime - pkgs.kde42.kdebase_workspace - pkgs.shared_mime_info - ]; + environment.x11Packages = + [ xorg.xmessage # so that startkde can show error messages + pkgs.qt4 # needed for qdbus + xorg.xset # used by startkde, non-essential + ]; - x11Packages = [ - xorg.xmessage # so that startkde can show error messages - pkgs.qt4 # needed for qdbus - xorg.xset # used by startkde, non-essential - ]; - - etc = [ + environment.etc = singleton { source = "${pkgs.xkeyboard_config}/etc/X11/xkb"; target = "X11/xkb"; - } - ]; + }; + }; + }