commit 3117d70f396289164ff7f714d2d688ff576b6e1b
parent 24b5830126bf3795a86def2535e5dfc3ba8d796a
Author: Andreas Gruhler <agruhl@gmx.ch>
Date:   Fri, 19 Sep 2025 21:54:38 +0200
fix: build on NixOS with preferStaticEmulators
* https://wiki.nixos.org/wiki/Podman#Run_cross-architecture_containers_with_binfmt/qemu
* https://github.com/NixOS/nixpkgs/issues/160300
Diffstat:
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
@@ -200,6 +200,7 @@ On NixOS, it is sufficient to [enable the binfmt wrapper in the
 configuration](https://wiki.nixos.org/wiki/NixOS_on_ARM/Building_Images):
 ```
 boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
+boot.binfmt.preferStaticEmulators = true;
 ```
 
 The wrapper on NixOS can be checked on this path:
@@ -208,11 +209,16 @@ cat /proc/sys/fs/binfmt_misc/aarch64-linux
 ```
 
 On NixOS, the interpreter is on this path (`hashi-pi.pkr.hcl`):
-```bash
+```
     "qemu_binary_source_path": "/run/binfmt/aarch64-linux",
     "qemu_binary_destination_path": "/run/binfmt/aarch64-linux"
 ```
 
+Also, set the chroot env appropriately:
+```
+image_chroot_env      = ["PATH=/run/current-system/sw/bin:/run/current-system/sw/sbin:/usr/bin:/bin"]
+```
+
 ## Run Packer
 Initialize required packer plugins:
 ```bash
diff --git a/hashi-pi.pkr.hcl b/hashi-pi.pkr.hcl
@@ -164,7 +164,7 @@ source "cross" "hashipi" {
   file_unarchive_cmd    = ["xz", "-d", "$ARCHIVE_PATH"]
   file_urls             = ["${var.img_url}"]
   image_build_method    = "resize"
-  image_chroot_env      = ["PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"]
+  image_chroot_env      = ["PATH=/run/current-system/sw/bin:/run/current-system/sw/sbin:/usr/bin:/bin"]
   image_partitions {
     filesystem   = "vfat"
     mountpoint   = "/boot"
@@ -184,8 +184,8 @@ source "cross" "hashipi" {
   image_path                   = "${var.img_name}"
   image_size                   = "${var.img_size}"
   image_type                   = "dos"
-  qemu_binary_destination_path = "/usr/bin/qemu-aarch64-static"
-  qemu_binary_source_path      = "/usr/bin/qemu-aarch64-static"
+  qemu_binary_destination_path = "/run/binfmt/aarch64-linux"
+  qemu_binary_source_path      = "/run/binfmt/aarch64-linux"
 }
 
 source "qemu" "hashiintel" {