From 8e1f243b309f31f3c6605cc7bad17dbd1ccad568 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 24 Jan 2013 13:06:32 +0100 Subject: xserver.nix: Check whether Polkit is enabled Our X session script requires Polkit because it calls systemd-inhibit. --- modules/services/x11/xserver.nix | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'modules/services/x11/xserver.nix') diff --git a/modules/services/x11/xserver.nix b/modules/services/x11/xserver.nix index f71e6ea97c46..d4dc8b761bfd 100644 --- a/modules/services/x11/xserver.nix +++ b/modules/services/x11/xserver.nix @@ -43,6 +43,7 @@ let pkgs.xorg.fontadobe75dpi ]; + # Just enumerate all heads without discarding XRandR output information. xrandrHeads = let mkHead = num: output: { @@ -74,6 +75,7 @@ let monitors = foldl mkMonitor [] xrandrHeads; in concatMapStrings (getAttr "value") monitors; + configFile = pkgs.stdenv.mkDerivation { name = "xserver.conf"; @@ -107,6 +109,17 @@ let ''; # */ }; + + checkAgent = mkAssert (!(cfg.startOpenSSHAgent && cfg.startGnuPGAgent)) + '' + The OpenSSH agent and GnuPG agent cannot be started both. + Choose between `startOpenSSHAgent' and `startGnuPGAgent'. + ''; + + checkPolkit = mkAssert config.security.polkit.enable + "X11 requires Polkit to be enabled (‘security.polkit.enable = true’)."; + + in { @@ -374,13 +387,7 @@ in ###### implementation - config = mkIf cfg.enable - (mkAssert (!(cfg.startOpenSSHAgent && cfg.startGnuPGAgent)) - '' - The OpenSSH agent and GnuPG agent cannot be started both. - Choose between `startOpenSSHAgent' and `startGnuPGAgent'. - '' - { + config = mkIf cfg.enable (checkAgent (checkPolkit { boot.extraModulePackages = optional (elem "nvidia" driverNames) kernelPackages.nvidia_x11 ++ @@ -601,6 +608,6 @@ in ${xrandrMonitorSections} ''; - }); + })); } -- cgit 1.4.1