diff --git a/modules/services/x11/xserver/default.nix b/modules/services/x11/xserver/default.nix index acaea17649c..3e49420778e 100644 --- a/modules/services/x11/xserver/default.nix +++ b/modules/services/x11/xserver/default.nix @@ -277,6 +277,15 @@ let }; }; + + environment.x11Packages = mkOption { + default = []; + type = types.list types.packages; + description = " + List of packages added to the system when the xserver is + activated. (). + "; + }; }; in @@ -505,7 +514,7 @@ mkIf cfg.enable { } ]; - extraPackages = [ + x11Packages = [ xorg.xrandr xorg.xrdb xorg.setxkbmap @@ -514,6 +523,8 @@ mkIf cfg.enable { ++ optional (videoDriver == "nvidia") [ kernelPackages.nvidia_x11 ]; + + extraPackages = config.environment.x11Packages; }; services = { diff --git a/modules/services/x11/xserver/desktop-managers/default.nix b/modules/services/x11/xserver/desktop-managers/default.nix index 3de3fa25792..c40266f99d7 100644 --- a/modules/services/x11/xserver/desktop-managers/default.nix +++ b/modules/services/x11/xserver/desktop-managers/default.nix @@ -2,7 +2,8 @@ let inherit (pkgs.lib) mkOption mergeOneOption mkIf filter optionalString any; - cfg = config.services.xserver.desktopManager; + xcfg = config.services.xserver; + cfg = xcfg.desktopManager; # Whether desktop manager `d' is capable of setting a background. # If it isn't, the `feh' program is used as a fallback. @@ -69,7 +70,7 @@ in }; }; - environment = mkIf (config.services.xserver.enable && cfg.session.needBGPackages) { - extraPackages = [ pkgs.feh ]; + environment = mkIf cfg.session.needBGPackages { + x11Packages = [ pkgs.feh ]; }; } diff --git a/modules/services/x11/xserver/desktop-managers/gnome.nix b/modules/services/x11/xserver/desktop-managers/gnome.nix index d6fa064ef11..3fa82bae2ba 100644 --- a/modules/services/x11/xserver/desktop-managers/gnome.nix +++ b/modules/services/x11/xserver/desktop-managers/gnome.nix @@ -38,7 +38,7 @@ mkIf cfg.enable { }; environment = { - extraPackages = [ + x11Packages = [ gnome.gnometerminal gnome.GConf gnome.gconfeditor diff --git a/modules/services/x11/xserver/desktop-managers/kde-environment.nix b/modules/services/x11/xserver/desktop-managers/kde-environment.nix index 5d9ab3ae5a3..3a4b8b22d36 100644 --- a/modules/services/x11/xserver/desktop-managers/kde-environment.nix +++ b/modules/services/x11/xserver/desktop-managers/kde-environment.nix @@ -1,7 +1,7 @@ {pkgs, config, ...}: let - inherit (pkgs.lib) mkOption mkIf; + inherit (pkgs.lib) mkOption mkIf types; kdePackages = config.environment.kdePackages; options = { @@ -25,6 +25,7 @@ let kdePackages = mkOption { default = []; example = [ pkgs.kde42.kdegames ]; + type = types.list types.packages; description = '' Additional KDE packages to be used when you use KDE as a desktop manager. By default, you only get the KDE base packages. @@ -36,11 +37,11 @@ let }; in -mkIf (kdePackages != []) { +mkIf (kdePackages != [] && config.services.xserver.enable) { require = options; environment = { - extraPackages = kdePackages; + x11Packages = kdePackages; shellInit = '' export KDEDIRS="${pkgs.lib.concatStringsSep ":" kdePackages}" diff --git a/modules/services/x11/xserver/desktop-managers/kde.nix b/modules/services/x11/xserver/desktop-managers/kde.nix index f8fb9f534f5..45c4c464f9a 100644 --- a/modules/services/x11/xserver/desktop-managers/kde.nix +++ b/modules/services/x11/xserver/desktop-managers/kde.nix @@ -2,8 +2,9 @@ let inherit (pkgs.lib) mkOption mkIf; - cfg = config.services.xserver.desktopManager.kde; - xorg = config.services.xserver.package; + xcfg = config.services.xserver; + cfg = xcfg.desktopManager.kde; + xorg = xcfg.package; options = { services = { xserver = { desktopManager = { @@ -18,7 +19,7 @@ let }; }; }; }; in -mkIf cfg.enable { +mkIf (xcfg.enable && cfg.enable) { require = [ options @@ -63,7 +64,7 @@ mkIf cfg.enable { pkgs.kdebase ]; - extraPackages = [ + x11Packages = [ xorg.xset # used by startkde, non-essential ]; diff --git a/modules/services/x11/xserver/desktop-managers/kde4.nix b/modules/services/x11/xserver/desktop-managers/kde4.nix index 78cf90e33e4..f8b66e2840d 100644 --- a/modules/services/x11/xserver/desktop-managers/kde4.nix +++ b/modules/services/x11/xserver/desktop-managers/kde4.nix @@ -2,8 +2,9 @@ let inherit (pkgs.lib) mkOption mkIf; - cfg = config.services.xserver.desktopManager.kde4; - xorg = config.services.xserver.package; + xcfg = config.services.xserver; + cfg = xcfg.desktopManager.kde4; + xorg = xcfg.package; options = { services = { xserver = { desktopManager = { @@ -18,7 +19,7 @@ let }; }; }; }; in -mkIf cfg.enable { +mkIf (xcfg.enable && cfg.enable) { require = [ options @@ -57,7 +58,7 @@ mkIf cfg.enable { pkgs.shared_mime_info ]; - extraPackages = [ + x11Packages = [ xorg.xmessage # so that startkde can show error messages pkgs.qt4 # needed for qdbus xorg.xset # used by startkde, non-essential diff --git a/modules/services/x11/xserver/desktop-managers/xterm.nix b/modules/services/x11/xserver/desktop-managers/xterm.nix index 861d5001478..8524c0c6544 100644 --- a/modules/services/x11/xserver/desktop-managers/xterm.nix +++ b/modules/services/x11/xserver/desktop-managers/xterm.nix @@ -17,7 +17,7 @@ let in -mkIf (config.services.xserver.enable && cfg.enable) { +mkIf cfg.enable { require = options; services = { @@ -37,7 +37,7 @@ mkIf (config.services.xserver.enable && cfg.enable) { }; environment = { - extraPackages = [ + x11Packages = [ pkgs.xterm ]; }; diff --git a/modules/services/x11/xserver/window-managers/compiz.nix b/modules/services/x11/xserver/window-managers/compiz.nix index e99c3adb5b4..bf159582663 100644 --- a/modules/services/x11/xserver/window-managers/compiz.nix +++ b/modules/services/x11/xserver/window-managers/compiz.nix @@ -59,6 +59,6 @@ mkIf cfg.enable { }; environment = { - extraPackages = [ pkgs.compiz ]; + x11Packages = [ pkgs.compiz ]; }; } diff --git a/modules/services/x11/xserver/window-managers/kwm.nix b/modules/services/x11/xserver/window-managers/kwm.nix index db8696c510d..3d946f213a3 100644 --- a/modules/services/x11/xserver/window-managers/kwm.nix +++ b/modules/services/x11/xserver/window-managers/kwm.nix @@ -38,7 +38,7 @@ mkIf cfg.enable { }; environment = { - extraPackages = [ + x11Packages = [ pkgs.kdelibs pkgs.kdebase ]; diff --git a/modules/services/x11/xserver/window-managers/metacity.nix b/modules/services/x11/xserver/window-managers/metacity.nix index dc1ff911d65..ea1dd5a3bde 100644 --- a/modules/services/x11/xserver/window-managers/metacity.nix +++ b/modules/services/x11/xserver/window-managers/metacity.nix @@ -44,6 +44,6 @@ mkIf cfg.enable { }; environment = { - extraPackages = [ gnome.metacity ]; + x11Packages = [ gnome.metacity ]; }; } diff --git a/modules/services/x11/xserver/window-managers/twm.nix b/modules/services/x11/xserver/window-managers/twm.nix index f26be48776c..9dc3bea8093 100644 --- a/modules/services/x11/xserver/window-managers/twm.nix +++ b/modules/services/x11/xserver/window-managers/twm.nix @@ -39,6 +39,6 @@ mkIf cfg.enable { }; environment = { - extraPackages = [ xorg.twm ]; + x11Packages = [ xorg.twm ]; }; } diff --git a/modules/services/x11/xserver/window-managers/wmii.nix b/modules/services/x11/xserver/window-managers/wmii.nix index 191e31af1de..d1ff72092f1 100644 --- a/modules/services/x11/xserver/window-managers/wmii.nix +++ b/modules/services/x11/xserver/window-managers/wmii.nix @@ -47,7 +47,7 @@ mkIf cfg.enable { }; environment = { - extraPackages = [ + x11Packages = [ pkgs.wmiiSnap ]; };