Author: eelco
Date: Fri Jul 23 14:23:08 2010
New Revision: 22720
URL: https://svn.nixos.org/websvn/nix/?rev=22720&sc=1

Log:
* `pam_console' maintains the set of locally logged in users in
  /var/run/console.  This is obsolete, but D-Bus still uses it for its
  `at_console' feature.  So maintain it using a ConsoleKit session
  script.  Borrowed from
  
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/sys-auth/consolekit/files/pam-foreground-compat.ck

Modified:
   nixos/trunk/modules/security/consolekit.nix

Modified: nixos/trunk/modules/security/consolekit.nix
==============================================================================
--- nixos/trunk/modules/security/consolekit.nix Fri Jul 23 13:59:50 2010        
(r22719)
+++ nixos/trunk/modules/security/consolekit.nix Fri Jul 23 14:23:08 2010        
(r22720)
@@ -2,6 +2,44 @@
 
 with pkgs.lib;
 
+let
+
+  # `pam_console' maintains the set of locally logged in users in
+  # /var/run/console.  This is obsolete, but D-Bus still uses it for
+  # its `at_console' feature.  So maintain it using a ConsoleKit
+  # session script.  Borrowed from
+  # 
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/sys-auth/consolekit/files/pam-foreground-compat.ck
+  updateVarRunConsole = pkgs.writeTextFile {
+    name = "var-run-console.ck";
+    destination = "/etc/ConsoleKit/run-session.d/var-run-console.ck";
+    executable = true;
+    
+    text =
+      ''
+        #! ${pkgs.stdenv.shell} -e
+        PATH=${pkgs.coreutils}/bin:${pkgs.gnused}/bin:${pkgs.glibc}/bin
+        TAGDIR=/var/run/console
+
+        exec >> /tmp/xyzzy 2>&1
+
+        [ -n "$CK_SESSION_USER_UID" ] || exit 1
+
+        TAGFILE="$TAGDIR/`getent passwd $CK_SESSION_USER_UID | cut -f 1 -d:`"
+
+        if [ "$1" = "session_added" ]; then
+            mkdir -p "$TAGDIR"
+            echo "$CK_SESSION_ID" >> "$TAGFILE"
+        fi
+
+        if [ "$1" = "session_removed" ] && [ -e "$TAGFILE" ]; then
+            sed -i "\%^$CK_SESSION_ID\$%d" "$TAGFILE"
+            [ -s "$TAGFILE" ] || rm -f "$TAGFILE"
+        fi
+      '';
+  };
+
+in
+
 {
 
   config = {
@@ -14,7 +52,7 @@
       { source = (pkgs.buildEnv {
           name = "consolekit-config";
           pathsToLink = [ "/etc/ConsoleKit" ];
-          paths = [ pkgs.consolekit pkgs.udev ];
+          paths = [ pkgs.consolekit pkgs.udev updateVarRunConsole ];
         }) + "/etc/ConsoleKit";
         target = "ConsoleKit";
       };
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to