nixos gdm: support autologin

This commit is contained in:
Luca Bruno 2015-08-27 18:11:09 +02:00
parent 52d7550da3
commit 6eb096900f

View File

@ -18,14 +18,42 @@ in
services.xserver.displayManager.gdm = { services.xserver.displayManager.gdm = {
enable = mkOption { enable = mkEnableOption ''
type = types.bool; Whether to enable GDM as the display manager.
default = false; <emphasis>GDM is very experimental and may render system unusable.</emphasis>
example = true; '';
description = ''
Whether to enable GDM as the display manager. autoLogin = mkOption {
<emphasis>GDM is very experimental and may render system unusable.</emphasis> default = {};
'';
type = types.submodule {
options = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Automatically log in as the sepecified <option>auto.user</option>.
'';
};
user = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
User to be used for the autologin.
'';
};
delay = mkOption {
type = types.int;
default = 0;
description = ''
Seconds of inactivity after which the autologin will be performed.
'';
};
};
};
}; };
}; };
@ -71,6 +99,25 @@ in
programs.dconf.profiles.gdm = "${gdm}/share/dconf/profile/gdm"; programs.dconf.profiles.gdm = "${gdm}/share/dconf/profile/gdm";
environment.etc."gdm/custom.conf".text = ''
[daemon]
${optionalString cfg.gdm.autoLogin.enable ''
TimedLoginEnable=true
TimedLogin=${cfg.gdm.autoLogin.user}
TimedLoginDelay=${toString cfg.gdm.autoLogin.delay}
''}
[security]
[xdmcp]
[greeter]
[chooser]
[debug]
'';
# GDM LFS PAM modules, adapted somehow to NixOS # GDM LFS PAM modules, adapted somehow to NixOS
security.pam.services = { security.pam.services = {
gdm-launch-environment.text = '' gdm-launch-environment.text = ''
@ -89,7 +136,7 @@ in
session optional pam_permit.so session optional pam_permit.so
''; '';
gdm.text = '' gdm.text = ''
auth requisite pam_nologin.so auth requisite pam_nologin.so
auth required pam_env.so auth required pam_env.so