From 9781f3766de7293a67aa8098edb5dbe367939b36 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Sun, 17 Nov 2019 21:16:28 +0100 Subject: [PATCH] systemd: perform reload even in degraded state This fixes #355, fixes #798, and fixes #909. --- modules/systemd.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/systemd.nix b/modules/systemd.nix index cdc4486f..8885c538 100644 --- a/modules/systemd.nix +++ b/modules/systemd.nix @@ -242,15 +242,27 @@ in ''; ensureRuntimeDir = "XDG_RUNTIME_DIR=\${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"; + + systemctl = "${ensureRuntimeDir} ${cfg.systemctlPath}"; in '' - if ${ensureRuntimeDir} ${cfg.systemctlPath} --quiet --user is-system-running 2> /dev/null; then + systemdStatus=$(${systemctl} --user is-system-running 2>&1 || true) + + if [[ $systemdStatus == 'running' || $systemdStatus == 'degraded' ]]; then + if [[ $systemdStatus == 'degraded' ]]; then + warnEcho "The user systemd session is degraded:" + systemctl --user --state=failed + warnEcho "Attempting to reload services anyway..." + fi + ${ensureRuntimeDir} \ PATH=${dirOf cfg.systemctlPath}:$PATH \ ${if cfg.startServices then autoReloadCmd else legacyReloadCmd} else echo "User systemd daemon not running. Skipping reload." fi + + unset systemdStatus '' ); })