Run user-data switch in transient unit

This commit is contained in:
Timothy J. Aveni
2026-06-30 07:14:09 -07:00
parent ab5aec5f40
commit 0652925521
+16 -1
View File
@@ -120,7 +120,7 @@ write_final_config() {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "fetch-ec2-metadata.service" "network-online.target" "nix-daemon.socket" ]; after = [ "fetch-ec2-metadata.service" "network-online.target" "nix-daemon.socket" ];
wants = [ "fetch-ec2-metadata.service" "network-online.target" "nix-daemon.socket" ]; wants = [ "fetch-ec2-metadata.service" "network-online.target" "nix-daemon.socket" ];
path = [ pkgs.coreutils pkgs.git ]; path = [ pkgs.coreutils pkgs.git pkgs.systemd ];
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
RemainAfterExit = true; RemainAfterExit = true;
@@ -146,8 +146,23 @@ write_final_config() {
fi fi
install -m 0644 "$user_data" /etc/nixos/flake.nix install -m 0644 "$user_data" /etc/nixos/flake.nix
runner=/run/nixos-user-data-flake-apply
cat > "$runner" <<RUNNER_EOF
#!$${pkgs.runtimeShell}
set -eu
$${config.system.build.nixos-rebuild}/bin/nixos-rebuild switch --flake /etc/nixos $${config.system.build.nixos-rebuild}/bin/nixos-rebuild switch --flake /etc/nixos
printf '%s\n' "$new_hash" > "$applied_hash_file" printf '%s\n' "$new_hash" > "$applied_hash_file"
RUNNER_EOF
chmod 0700 "$runner"
systemd-run \
--unit=nixos-user-data-flake-apply \
--collect \
--no-ask-password \
--service-type=exec \
"$${pkgs.runtimeShell}" "$runner"
''; '';
}; };