Run user-data switch in transient unit
This commit is contained in:
+16
-1
@@ -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"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user