recovery: grow fs to partition size before starting sshd

sshd expects there to be space in /persist/secrets that it can
use to write host keys, but when we make ext4fs images we don't
put any free space in them
This commit is contained in:
Daniel Barlow 2024-01-28 11:30:19 +00:00
parent 9e199c6957
commit 84ce618213

View file

@ -44,13 +44,16 @@ in rec {
dependencies = [ config.services.hostname ]; dependencies = [ config.services.hostname ];
}; };
services.sshd = svc.ssh.build { }; services.sshd = svc.ssh.build {
dependencies = [ config.services.growfs ];
};
services.defaultroute4 = svc.network.route.build { services.defaultroute4 = svc.network.route.build {
via = "$(output ${services.dhcpc} router)"; via = "$(output ${services.dhcpc} router)";
target = "default"; target = "default";
dependencies = [services.dhcpc]; dependencies = [services.dhcpc];
}; };
services.resolvconf = oneshot rec { services.resolvconf = oneshot rec {
dependencies = [ services.dhcpc ]; dependencies = [ services.dhcpc ];
name = "resolvconf"; name = "resolvconf";
@ -63,6 +66,16 @@ in rec {
) )
''; '';
}; };
services.growfs = let name = "growfs"; in oneshot {
inherit name;
up = ''
. ${serviceFns}
device=$(grep /persist /proc/1/mountinfo | cut -f9 -d' ')
${pkgs.e2fsprogs}/bin/resize2fs $device
'';
};
filesystem = dir { filesystem = dir {
etc = dir { etc = dir {
"resolv.conf" = symlink "${services.resolvconf}/.outputs/resolv.conf"; "resolv.conf" = symlink "${services.resolvconf}/.outputs/resolv.conf";