From 8f65587f9997f5a6873980ae1879f4e3a2486c56 Mon Sep 17 00:00:00 2001 From: Nils Stinnesbeck Date: Thu, 29 Oct 2026 09:42:27 +0100 Subject: [PATCH] Keep routers and the installer running with the lid closed logind suspends laptops on lid close by default; a router (and an install in progress) must keep running. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01AeFqV9dZrK6nipHkPfyM4F --- modules/installer/iso.nix | 7 +++++++ modules/router/default.nix | 1 + modules/router/power.nix | 12 ++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 modules/router/power.nix diff --git a/modules/installer/iso.nix b/modules/installer/iso.nix index eeee5f8..28c1518 100644 --- a/modules/installer/iso.nix +++ b/modules/installer/iso.nix @@ -16,6 +16,13 @@ isoImage.volumeID = "ROUTER_INSTALL"; isoImage.squashfsCompression = "zstd -Xcompression-level 6"; + # Installing on a laptop must survive closing its lid. + services.logind.settings.Login = { + HandleLidSwitch = "ignore"; + HandleLidSwitchExternalPower = "ignore"; + HandleLidSwitchDocked = "ignore"; + }; + services.openssh = { enable = true; settings.PermitRootLogin = "prohibit-password"; diff --git a/modules/router/default.nix b/modules/router/default.nix index 96e2037..4073bc3 100644 --- a/modules/router/default.nix +++ b/modules/router/default.nix @@ -9,5 +9,6 @@ ./dhcp.nix ./dns.nix ./rollback.nix + ./power.nix ]; } diff --git a/modules/router/power.nix b/modules/router/power.nix new file mode 100644 index 0000000..79048ca --- /dev/null +++ b/modules/router/power.nix @@ -0,0 +1,12 @@ +# A router keeps routing with the lid shut: laptops make fine routers, but +# logind suspends them on lid close by default. +{ config, lib, ... }: +{ + config = lib.mkIf config.router.enable { + services.logind.settings.Login = { + HandleLidSwitch = "ignore"; + HandleLidSwitchExternalPower = "ignore"; + HandleLidSwitchDocked = "ignore"; + }; + }; +}