2009-04-13 12:55:41 +02:00
|
|
|
{pkgs, config, ...}:
|
|
|
|
|
|
|
|
###### interface
|
|
|
|
let
|
|
|
|
inherit (pkgs.lib) mkOption;
|
|
|
|
|
2009-05-28 16:37:30 +02:00
|
|
|
options = {
|
2009-04-13 12:55:41 +02:00
|
|
|
|
2009-05-28 16:37:30 +02:00
|
|
|
services.xserver.displayManager.kdm = {
|
2009-04-13 12:55:41 +02:00
|
|
|
enable = mkOption {
|
|
|
|
default = false;
|
|
|
|
description = "
|
|
|
|
Whether to enable the KDE display manager.
|
|
|
|
";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2009-05-28 16:37:30 +02:00
|
|
|
};
|
2009-04-13 12:55:41 +02:00
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
###### implementation
|
|
|
|
let
|
|
|
|
xcfg = config.services.xserver;
|
|
|
|
dmcfg = xcfg.displayManager;
|
|
|
|
cfg = dmcfg.kdm;
|
|
|
|
|
|
|
|
inherit (pkgs.lib) mkIf;
|
|
|
|
inherit (pkgs) stdenv;
|
|
|
|
inherit (pkgs.kde42) kdebase_workspace;
|
|
|
|
|
|
|
|
kdmrc = stdenv.mkDerivation {
|
|
|
|
name = "kdmrc";
|
2009-05-28 16:37:30 +02:00
|
|
|
# -e "s|Session=${kdebase_workspace}/share/config/kdm/Xsession|Session=${dmcfg.session.script}|" \
|
2009-04-13 12:55:41 +02:00
|
|
|
buildCommand = ''
|
|
|
|
cp ${kdebase_workspace}/share/config/kdm/kdmrc .
|
|
|
|
sed -i -e "s|#HaltCmd=|HaltCmd=${pkgs.upstart}/sbin/halt|" \
|
|
|
|
-e "s|#RebootCmd=|RebootCmd=${pkgs.upstart}/sbin/reboot|" \
|
|
|
|
-e "s|#Xrdb=|Xrdb=${pkgs.xlibs.xrdb}/bin/xrdb|" \
|
|
|
|
-e "s|#HiddenUsers=root|HiddenUsers=root,nixbld1,nixbld2,nixbld3,nixbld4,nixbld5,nixbld6,nixbld7,nixbld8,nixbld9,nixbld10|" \
|
|
|
|
-e "s|ServerCmd=/FOO/bin/X|ServerCmd=${dmcfg.xserverBin} ${dmcfg.xserverArgs}|" \
|
2009-04-13 12:57:36 +02:00
|
|
|
-e "s|^SessionsDirs=.*$|SessionsDirs=${dmcfg.session.desktops}|" \
|
2009-04-13 12:55:41 +02:00
|
|
|
-e "s|#FailsafeClient=|FailsafeClient=${pkgs.xterm}/bin/xterm|" \
|
|
|
|
-e "s|#PluginsLogin=sign|PluginsLogin=${kdebase_workspace}/lib/kde4/kgreet_classic.so|" \
|
|
|
|
kdmrc
|
|
|
|
ensureDir $out
|
|
|
|
cp kdmrc $out
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
mkIf cfg.enable {
|
|
|
|
require = [
|
|
|
|
options
|
|
|
|
];
|
|
|
|
|
|
|
|
services = {
|
|
|
|
xserver = {
|
|
|
|
displayManager = {
|
|
|
|
job = {
|
|
|
|
beforeScript = "";
|
|
|
|
env = "";
|
|
|
|
execCmd = "${kdebase_workspace}/bin/kdm -config ${kdmrc}/kdmrc";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|