cursa: build sd-card image with secret injection

`clan machines build cursa --format sd-card` failed in clan-cli's
post-build secret injection:

  Expected directory /nix/store/...-nixos-image-sd-card-...img.zst/sd-card not found in build output

clan-cli assumed $out/<format>/ (only true for iso; sd-card writes
$out/sd-image/) and tried to inject into every format although only iso
has an addFilesScript. Fixed upstream in
patches/upstream-sd-card-secret-injection.patch (pending PR); until it
lands:

- shell.nix: apply patches/clan-cli-image-filepath.patch (the clan-cli
  part of the upstream change) to the devshell's clan-cli.
- modules/nixos/sd-card-image.nix: local copy of the upstream
  clan.core.image.sd-card.addFilesScript module. Writes the vars tree
  directly into the ext4 root partition with debugfs (no boot-time
  hook), verifies with cmp + e2fsck. Delete once clan-core ships it.
- cursa imports it and builds its sd-card image without disko.
This commit is contained in:
kurogeek committed 2026-09-29 15:33:22 +07:00
1 parent 6039edfac6
commit b4f9ae3f94
6 files changed
+1182 -1

No files matched your search

+11
View File
@@ -1,7 +1,12 @@
{
self,
...
}:
{
imports = [
self.nixosModules.sd-card-image
];
clan.core.settings.machine.description =
"VM machine for collecting prometheus metrics and fire alerts";
@@ -11,4 +16,10 @@
system.stateVersion = "25.11";
clan.core.sops.defaultGroups = [ "admins" ];
image.modules.sd-card = {
disabledModules = [
./disko.nix
];
};
}