Onboard: auto-enable systemd lingering on Linux
This commit is contained in:
committed by
Peter Steinberger
parent
949ea38ef5
commit
de153a40d0
@@ -42,8 +42,8 @@ export async function ensureSystemdUserLingerInteractive(params: {
|
||||
params.reason ??
|
||||
"Systemd user services stop when you log out or go idle, which kills the Gateway.";
|
||||
const actionNote = params.requireConfirm
|
||||
? "We can enable lingering now (needs sudo; writes /var/lib/systemd/linger)."
|
||||
: "Enabling lingering now (needs sudo; writes /var/lib/systemd/linger).";
|
||||
? "We can enable lingering now (may require sudo; writes /var/lib/systemd/linger)."
|
||||
: "Enabling lingering now (may require sudo; writes /var/lib/systemd/linger).";
|
||||
await prompter.note(`${reason}\n${actionNote}`, title);
|
||||
|
||||
if (params.requireConfirm && prompter.confirm) {
|
||||
@@ -60,6 +60,15 @@ export async function ensureSystemdUserLingerInteractive(params: {
|
||||
}
|
||||
}
|
||||
|
||||
const resultNoSudo = await enableSystemdUserLinger({
|
||||
env,
|
||||
user: status.user,
|
||||
});
|
||||
if (resultNoSudo.ok) {
|
||||
await prompter.note(`Enabled systemd lingering for ${status.user}.`, title);
|
||||
return;
|
||||
}
|
||||
|
||||
const result = await enableSystemdUserLinger({
|
||||
env,
|
||||
user: status.user,
|
||||
|
||||
@@ -489,6 +489,17 @@ export async function runOnboardingWizard(
|
||||
nextConfig = applyWizardMetadata(nextConfig, { command: "onboard", mode });
|
||||
await writeConfigFile(nextConfig);
|
||||
|
||||
await ensureSystemdUserLingerInteractive({
|
||||
runtime,
|
||||
prompter: {
|
||||
confirm: prompter.confirm,
|
||||
note: prompter.note,
|
||||
},
|
||||
reason:
|
||||
"Linux installs use a systemd user service by default. Without lingering, systemd stops the user session on logout/idle and kills the Gateway.",
|
||||
requireConfirm: false,
|
||||
});
|
||||
|
||||
const installDaemon = await prompter.confirm({
|
||||
message: "Install Gateway daemon (recommended)",
|
||||
initialValue: true,
|
||||
@@ -539,16 +550,6 @@ export async function runOnboardingWizard(
|
||||
});
|
||||
}
|
||||
|
||||
await ensureSystemdUserLingerInteractive({
|
||||
runtime,
|
||||
prompter: {
|
||||
confirm: prompter.confirm,
|
||||
note: prompter.note,
|
||||
},
|
||||
reason:
|
||||
"Linux installs use a systemd user service. Without lingering, systemd stops the user session on logout/idle and kills the Gateway.",
|
||||
requireConfirm: true,
|
||||
});
|
||||
}
|
||||
|
||||
await sleep(1500);
|
||||
|
||||
Reference in New Issue
Block a user