lemurs, i3status-rust: what the first assignment refused

The host refuses boot on a service that leaves its state to the machine, so lemurs.service
is declared running (no trigger, so a push still never restarts it). pacman-contrib is the
pacman module's, and two modules declaring one package make a node unresolvable.
This commit is contained in:
jochen
2026-10-04 15:17:07 +02:00
parent c5c47b92f4
commit c790ee24d3
6 changed files with 14 additions and 15 deletions
+4 -3
View File
@@ -5,9 +5,10 @@ The login manager as a module (novox/hq ADR 0208, research 026, to-be 42 phase 2
- **Claims `node-login-manager`** and serves its verb `sessions`.
- **Package `lemurs`**, from the official repositories. It replaces the user repository's
`lemurs-git` that both workstations run.
- **Service `lemurs.service`, enabled at boot.** It is its own `display-manager.service` alias. Its
state is declared as nothing: a push never starts, stops or restarts the login manager, because
restarting it ends the session it started. A change to its configuration applies at its next
- **Service `lemurs.service`, enabled at boot and running.** It is its own `display-manager.service`
alias. It declares no restart or reload trigger, so a push starts it only where it is not running
and never restarts it, because restarting it ends the session it started. (A state is required:
the host refuses `boot` on a service that leaves its state to the machine.) A change to its configuration applies at its next
start (a reboot).
- **Gated by `package-manager`, `service-manager` and `seat`.** A machine without a display has
nothing to log into.
@@ -75,12 +75,14 @@ func TestTheOfficialPackageAndItsServiceEnabledButNeverRestarted(t *testing.T) {
t.Fatalf("the official package, not lemurs-git: %v", p)
}
s := resource(t, m, "service")
if s["unit"] != "lemurs.service" || s["boot"] != "enabled" {
// Running and enabled: the host refuses boot without a state (a stateless service declares only
// its triggers). Running starts it only where it is not; with no trigger, nothing restarts it.
if s["unit"] != "lemurs.service" || s["boot"] != "enabled" || s["state"] != "running" {
t.Fatalf("%v", s)
}
for _, k := range []string{"state", "restart-on", "reload-on"} {
for _, k := range []string{"restart-on", "reload-on"} {
if _, ok := s[k]; ok {
t.Fatalf("the login manager is never started, stopped or restarted by a push (%s): a change applies at its next start", k)
t.Fatalf("the login manager is never restarted by a push (%s): a change applies at its next start", k)
}
}
if strings.Join(m.Capabilities, ",") != "package-manager,service-manager,seat" {
+1
View File
@@ -48,6 +48,7 @@
"id": "service",
"type": "service",
"unit": "lemurs.service",
"state": "running",
"boot": "enabled"
}
],