nixos/systemd: Enable systemd-machine-id-commit.service

Prior to this contribution, every boot with a default configuration was
considered `ConditionFirstBoot=true` by systemd, since /etc/machine-id
was not commited to disk.

This also extends the systemd with a check for subsequent boots not
being considered first boots.
This commit is contained in:
Frédéric Christ 2024-10-25 14:00:41 +02:00
parent a1071d0055
commit 8f4b41cfd4
2 changed files with 8 additions and 0 deletions

View File

@ -160,6 +160,7 @@ let
# Misc.
"systemd-sysctl.service"
"systemd-machine-id-commit.service"
] ++ optionals cfg.package.withTimedated [
"dbus-org.freedesktop.timedate1.service"
"systemd-timedated.service"

View File

@ -85,10 +85,17 @@ import ./make-test-python.nix ({ pkgs, ... }: {
import re
import subprocess
machine.start(allow_reboot=True)
# Will not succeed unless ConditionFirstBoot=yes
machine.wait_for_unit("first-boot-complete.target")
# Make sure, a subsequent boot isn't a ConditionFirstBoot=yes.
machine.reboot()
machine.wait_for_x()
state = machine.get_unit_info("first-boot-complete.target")['ActiveState']
assert state == 'inactive', "Detected first boot despite first-boot-completed.target was already reached on a previous boot."
# wait for user services
machine.wait_for_unit("default.target", "alice")