nixpkgs/modules/services/x11/xserver/display-managers/kdm.nix
Eelco Dolstra 6920f43f1c Refactoring of the X server module:
* Modularised the xorg.conf generation.  For instance, the Wacom and
  Synaptics support has been moved into separate modules.  The
  contents of xorg.conf is defined by the option
  services.xserver.config, and various other options for specific
  sections (e.g. services.xserver.serverLayoutSection).

* displayManager.job.env: made this an attribute set.

* tcpEnable -> enableTCP for naming consistency.

* defaultDepth can be set to 0 to leave it undefined (needed for the
  vmware driver).

* Removed some options that seem obsolete or are now the default
  (e.g. RenderAccel, AllowGLXWithComposite).

* Removed services.xserver.package.  This can now be done using
  nixpkgs.config.packageOverrides.

svn path=/nixos/trunk/; revision=17004
2009-09-10 12:37:33 +00:00

86 lines
1.7 KiB
Nix

{pkgs, config, ...}:
with pkgs.lib;
let
dmcfg = config.services.xserver.displayManager;
cfg = dmcfg.kdm;
inherit (pkgs.kde42) kdebase_workspace;
defaultConfig =
''
[Shutdown]
HaltCmd=${pkgs.upstart}/sbin/halt
RebootCmd=${pkgs.upstart}/sbin/reboot
[X-*-Core]
Xrdb=${pkgs.xlibs.xrdb}/bin/xrdb
SessionsDirs=${dmcfg.session.desktops}
FailsafeClient=${pkgs.xterm}/bin/xterm
[X-:*-Core]
ServerCmd=${dmcfg.xserverBin} ${dmcfg.xserverArgs}
[X-*-Greeter]
HiddenUsers=root,nixbld1,nixbld2,nixbld3,nixbld4,nixbld5,nixbld6,nixbld7,nixbld8,nixbld9,nixbld10
PluginsLogin=${kdebase_workspace}/lib/kde4/kgreet_classic.so
'';
kdmrc = pkgs.stdenv.mkDerivation {
name = "kdmrc";
config = defaultConfig + cfg.extraConfig;
buildCommand =
''
echo "$config" > $out
cat ${kdebase_workspace}/share/config/kdm/kdmrc >> $out
'';
};
in
{
###### interface
options = {
services.xserver.displayManager.kdm = {
enable = mkOption {
default = false;
description = ''
Whether to enable the KDE display manager.
'';
};
extraConfig = mkOption {
default = "";
description = ''
Options appended to <filename>kdmrc</filename>, the
configuration file of KDM.
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
services.xserver.displayManager.job =
{ beforeScript = "";
environment = {};
execCmd = "${kdebase_workspace}/bin/kdm -config ${kdmrc}";
};
security.pam.services = [ { name = "kde"; localLogin = true; ckHack = true; } ];
};
}