* Some hackery to get ConsoleKit to work with the SLIM and "auto"
display managers. This was broken due to a change in ConsoleKit 0.4.2: https://bugs.freedesktop.org/show_bug.cgi?id=28377 Using ConsoleKit's pam-ck-connector helps in that it creates local sessions; however, they're not marked as active because the x11-display-device property is not set. As a workaround, calling ck-launch-session seems to work. More details: https://bugs.gentoo.org/show_bug.cgi?id=336634 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=598150 https://bugzilla.redhat.com/show_bug.cgi?id=585952 svn path=/nixos/trunk/; revision=28400
This commit is contained in:
parent
80d817fcb7
commit
45d8c418b5
@ -75,7 +75,8 @@ in
|
||||
security.pam.services =
|
||||
[ { name = "chsh"; rootOK = true; }
|
||||
{ name = "chfn"; rootOK = true; }
|
||||
{ name = "su"; rootOK = true; forwardXAuth = true; }
|
||||
# Enable ‘ownDevices’ for the services/x11/display-managers/auto.nix module.
|
||||
{ name = "su"; rootOK = true; ownDevices = true; forwardXAuth = true; }
|
||||
{ name = "passwd"; }
|
||||
# Note: useradd, groupadd etc. aren't setuid root, so it
|
||||
# doesn't really matter what the PAM config says as long as it
|
||||
|
@ -52,6 +52,11 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
# The ConsoleKit PAM connector launches a local session, but it's
|
||||
# not set as "active" (maybe because x11-display-device is not
|
||||
# set). Launching a child session seems to fix that.
|
||||
services.xserver.displayManager.forceCKSession = true;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -53,8 +53,8 @@ let
|
||||
|
||||
# Start a ConsoleKit session so that we get ownership of various
|
||||
# devices.
|
||||
if test -z "$XDG_SESSION_COOKIE"; then
|
||||
exec ${pkgs.consolekit}/bin/ck-launch-session "$0" "$sessionType"
|
||||
if [ \( -z "$XDG_SESSION_COOKIE" -o -n "${toString cfg.displayManager.forceCKSession}" \) -a -z "$CK_STARTED" ]; then
|
||||
CK_STARTED=1 exec ${pkgs.consolekit}/bin/ck-launch-session "$0" "$sessionType"
|
||||
fi
|
||||
|
||||
# Handle being called by kdm.
|
||||
@ -162,6 +162,12 @@ in
|
||||
apply = toString;
|
||||
};
|
||||
|
||||
forceCKSession = mkOption {
|
||||
internal = true;
|
||||
default = false;
|
||||
description = "Whether to force launching of a ConsoleKit session.";
|
||||
};
|
||||
|
||||
session = mkOption {
|
||||
default = [];
|
||||
example = [
|
||||
|
@ -1,4 +1,4 @@
|
||||
{pkgs, config, ...}:
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
@ -106,7 +106,16 @@ in
|
||||
|
||||
# Allow null passwords so that the user can login as root on the
|
||||
# installation CD.
|
||||
security.pam.services = [ { name = "slim"; allowNullPassword = true; } ];
|
||||
security.pam.services = singleton
|
||||
{ name = "slim";
|
||||
allowNullPassword = true;
|
||||
ownDevices = true;
|
||||
};
|
||||
|
||||
# The ConsoleKit PAM connector launches a local session, but it's
|
||||
# not set as "active" (maybe because x11-display-device is not
|
||||
# set). Launching a child session seems to fix that.
|
||||
services.xserver.displayManager.forceCKSession = true;
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user