rewrite activation script with a systemd-initrd compatible version
This commit is contained in:
parent
d1758754aa
commit
f35cc93d09
1 changed files with 43 additions and 14 deletions
|
@ -1,17 +1,46 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
is2405 = lib.traceVal (lib.versionAtLeast lib.version "24.05pre");
|
||||
in
|
||||
{
|
||||
# Restore ssh host and user keys if they are available.
|
||||
# This avoids warnings of unknown ssh keys.
|
||||
boot.initrd.postMountCommands = ''
|
||||
mkdir -m 700 -p /mnt-root/root/.ssh
|
||||
mkdir -m 755 -p /mnt-root/etc/ssh
|
||||
mkdir -m 755 -p /mnt-root/root/network
|
||||
if [[ -f ssh/authorized_keys ]]; then
|
||||
install -m 400 ssh/authorized_keys /mnt-root/root/.ssh
|
||||
fi
|
||||
install -m 400 ssh/ssh_host_* /mnt-root/etc/ssh
|
||||
cp *.json /mnt-root/root/network/
|
||||
if [[ -f machine-id ]]; then
|
||||
cp machine-id /mnt-root/etc/machine-id
|
||||
fi
|
||||
# We have a bug in 23.11 in combination with netboot.
|
||||
boot.initrd.systemd.enable = is2405;
|
||||
boot.initrd.systemd.services.restore-state-from-initrd = {
|
||||
unitConfig = {
|
||||
DefaultDependencies = false;
|
||||
RequiresMountsFor = "/sysroot /dev";
|
||||
};
|
||||
wantedBy = [ "initrd.target" ];
|
||||
requiredBy = [ "rw-etc.service" ];
|
||||
before = [ "rw-etc.service" ];
|
||||
serviceConfig.Type = "oneshot";
|
||||
# Restore ssh host and user keys if they are available.
|
||||
# This avoids warnings of unknown ssh keys.
|
||||
script = ''
|
||||
mkdir -m 700 -p /sysroot/root/.ssh
|
||||
mkdir -m 755 -p /sysroot/etc/ssh
|
||||
mkdir -m 755 -p /sysroot/root/network
|
||||
if [[ -f ssh/authorized_keys ]]; then
|
||||
install -m 400 ssh/authorized_keys /sysroot/root/.ssh
|
||||
fi
|
||||
install -m 400 ssh/ssh_host_* /sysroot/etc/ssh
|
||||
cp *.json /sysroot/root/network/
|
||||
if [[ -f machine-id ]]; then
|
||||
cp machine-id /sysroot/etc/machine-id
|
||||
fi
|
||||
'';
|
||||
};
|
||||
boot.initrd.postMountCommands = lib.mkIf (!is2405) ''
|
||||
mkdir -m 700 -p /mnt-root/root/.ssh
|
||||
mkdir -m 755 -p /mnt-root/etc/ssh
|
||||
mkdir -m 755 -p /mnt-root/root/network
|
||||
if [[ -f ssh/authorized_keys ]]; then
|
||||
install -m 400 ssh/authorized_keys /mnt-root/root/.ssh
|
||||
fi
|
||||
install -m 400 ssh/ssh_host_* /mnt-root/etc/ssh
|
||||
cp *.json /mnt-root/root/network/
|
||||
if [[ -f machine-id ]]; then
|
||||
cp machine-id /mnt-root/etc/machine-id
|
||||
fi
|
||||
'';
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue