diff --git a/archachatina.nix b/archachatina.nix index 27501a0..a7e2427 100644 --- a/archachatina.nix +++ b/archachatina.nix @@ -7,6 +7,7 @@ ./large-sw.nix ./uefi.nix ./fstrim.nix + ./qemu-user.nix ]; environment.etc."lvm/lvm.conf".text = '' diff --git a/qemu-user.nix b/qemu-user.nix new file mode 100644 index 0000000..9fe6be6 --- /dev/null +++ b/qemu-user.nix @@ -0,0 +1,29 @@ +{ config, pkgs, lib, ... }: + +let + arm = { + interpreter = "${pkgs.qemu}/bin/qemu-arm"; + magicOrExtension = ''\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00''; + mask = ''\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\x00\xff\xfe\xff\xff\xff''; + }; + aarch64 = { + interpreter = "${pkgs.qemu}/bin/qemu-aarch64"; + magicOrExtension = ''\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00''; + mask = ''\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\x00\xff\xfe\xff\xff\xff''; + }; + riscv64 = { + interpreter = "${pkgs.qemu}/bin/qemu-riscv64"; + magicOrExtension = ''\x7fELF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x00''; + mask = ''\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\x00\xff\xfe\xff\xff\xff''; + }; +in { + boot.binfmtMiscRegistrations = { + inherit arm; + inherit aarch64; + inherit riscv64; + }; + nix.extraOptions = '' + extra-platforms = armv6l-linux armv7l-linux aarch64-linux riscv64-linux i686-linux + ''; + nix.sandboxPaths = [ "/run/binfmt" "${pkgs.qemu}" ]; +}