nixpkgs/modules/services/x11/xserver/display-managers/kdm.nix
Eelco Dolstra 67db733123 * Simplify the generation of kdmrc. Instead of using sed to
substitute some values, just prepend them to the start of kdmrc.
  KDM will merge multiple sections with the same name (even though it
  complains a bit).  Option definitions that occur first have
  precedence.

svn path=/nixos/trunk/; revision=16940
2009-09-02 18:35:23 +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 = "";
env = "";
execCmd = "${kdebase_workspace}/bin/kdm -config ${kdmrc}";
};
security.pam.services = [ { name = "kde"; localLogin = true; } ];
};
}