nixos/xserver: fix X.org session script logging
This commit is contained in:
parent
dc5cd7800a
commit
13bb5ff402
|
@ -48,6 +48,10 @@ with lib;
|
|||
(mkRemovedOptionModule [ "services" "rmilter" "bindInetSockets" ] "Use services.rmilter.bindSocket.* instead")
|
||||
(mkRemovedOptionModule [ "services" "rmilter" "bindUnixSockets" ] "Use services.rmilter.bindSocket.* instead")
|
||||
|
||||
# Xsession script
|
||||
(mkRenamedOptionModule [ "services" "xserver" "displayManager" "job" "logsXsession" ] [ "services" "xserver" "displayManager" "job" "logToFile" ])
|
||||
(mkRenamedOptionModule [ "services" "xserver" "displayManager" "logToJournal" ] [ "services" "xserver" "displayManager" "job" "logToJournal" ])
|
||||
|
||||
# Old Grub-related options.
|
||||
(mkRenamedOptionModule [ "boot" "initrd" "extraKernelModules" ] [ "boot" "initrd" "kernelModules" ])
|
||||
(mkRenamedOptionModule [ "boot" "extraKernelParams" ] [ "boot" "kernelParams" ])
|
||||
|
|
|
@ -59,12 +59,6 @@ let
|
|||
# Now it should be safe to assume that the script was called with the
|
||||
# expected parameters.
|
||||
|
||||
${optionalString cfg.displayManager.logToJournal ''
|
||||
if [ -z "$_DID_SYSTEMD_CAT" ]; then
|
||||
_DID_SYSTEMD_CAT=1 exec ${config.systemd.package}/bin/systemd-cat -t xsession -- "$0" "$@"
|
||||
fi
|
||||
''}
|
||||
|
||||
. /etc/profile
|
||||
cd "$HOME"
|
||||
|
||||
|
@ -72,16 +66,23 @@ let
|
|||
sessionType="$1"
|
||||
if [ "$sessionType" = default ]; then sessionType=""; fi
|
||||
|
||||
${optionalString (!cfg.displayManager.job.logsXsession && !cfg.displayManager.logToJournal) ''
|
||||
exec > ~/.xsession-errors 2>&1
|
||||
''}
|
||||
|
||||
${optionalString cfg.startDbusSession ''
|
||||
if test -z "$DBUS_SESSION_BUS_ADDRESS"; then
|
||||
exec ${pkgs.dbus.dbus-launch} --exit-with-session "$0" "$sessionType"
|
||||
fi
|
||||
''}
|
||||
|
||||
${optionalString cfg.displayManager.job.logToJournal ''
|
||||
if [ -z "$_DID_SYSTEMD_CAT" ]; then
|
||||
export _DID_SYSTEMD_CAT=1
|
||||
exec ${config.systemd.package}/bin/systemd-cat -t xsession "$0" "$sessionType"
|
||||
fi
|
||||
''}
|
||||
|
||||
${optionalString cfg.displayManager.job.logToFile ''
|
||||
exec &> >(tee ~/.xsession-errors)
|
||||
''}
|
||||
|
||||
# Start PulseAudio if enabled.
|
||||
${optionalString (config.hardware.pulseaudio.enable) ''
|
||||
${optionalString (!config.hardware.pulseaudio.systemWide)
|
||||
|
@ -306,26 +307,24 @@ in
|
|||
description = "Additional environment variables needed by the display manager.";
|
||||
};
|
||||
|
||||
logsXsession = mkOption {
|
||||
logToFile = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether the display manager redirects the
|
||||
output of the session script to
|
||||
<filename>~/.xsession-errors</filename>.
|
||||
Whether the display manager redirects the output of the
|
||||
session script to <filename>~/.xsession-errors</filename>.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
logToJournal = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether the display manager redirects the output of the
|
||||
session script to the systemd journal.
|
||||
'';
|
||||
};
|
||||
|
||||
logToJournal = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
By default, the stdout/stderr of sessions is written
|
||||
to <filename>~/.xsession-errors</filename>. When this option
|
||||
is enabled, it will instead be written to the journal.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
@ -190,7 +190,7 @@ in
|
|||
services.xserver.displayManager.slim.enable = false;
|
||||
|
||||
services.xserver.displayManager.job = {
|
||||
logsXsession = true;
|
||||
logToFile = true;
|
||||
|
||||
# lightdm relaunches itself via just `lightdm`, so needs to be on the PATH
|
||||
execCmd = ''
|
||||
|
|
|
@ -205,7 +205,7 @@ in
|
|||
services.xserver.displayManager.slim.enable = false;
|
||||
|
||||
services.xserver.displayManager.job = {
|
||||
logsXsession = true;
|
||||
logToFile = true;
|
||||
|
||||
environment = {
|
||||
# Load themes from system environment
|
||||
|
|
|
@ -220,7 +220,7 @@ in
|
|||
'';
|
||||
|
||||
services.xserver.displayManager.job = {
|
||||
logsXsession = true;
|
||||
logToFile = true;
|
||||
|
||||
execCmd = ''
|
||||
${optionalString (cfg.pulseaudio)
|
||||
|
|
Loading…
Reference in a new issue