NixOS on ARM: Difference between revisions

imported>Petersjt014
added resource regarding sd images
imported>Samueldr
Renames Crosscompiling section to Compiling through QEMU.
Line 301: Line 301:
Note that this requires a machine with aarch64. You can however also build it from your laptop using an aarch64 remote builder as described in [[Distributed build]] or ask for access on the [https://github.com/nix-community/aarch64-build-box community aarch64 builder].
Note that this requires a machine with aarch64. You can however also build it from your laptop using an aarch64 remote builder as described in [[Distributed build]] or ask for access on the [https://github.com/nix-community/aarch64-build-box community aarch64 builder].


=== Crosscompiling ===
=== Compiling through QEMU ===


It is also possible to crosscompile aarch64 on your local machine or a remote builder by registering QEMU as a binfmt wrapper for the aarch64 architecture. This wrapper uses emulation and will therefore be slower than comparable native machines. A [https://github.com/cleverca22/nixos-configs/blob/master/qemu.nix module] and and [https://github.com/cleverca22/nixos-configs/tree/master/overlays/qemu overlay] are provided by user '''@clever'''.
It is also possible to compile for aarch64 on your non-aarch64 local machine, or a remote builder, by registering QEMU as a binfmt wrapper for the aarch64 architecture. This <b>wrapper uses emulation</b> and will therefore be slower than comparable native machines. A [https://github.com/cleverca22/nixos-configs/blob/master/qemu.nix module] and and [https://github.com/cleverca22/nixos-configs/tree/master/overlays/qemu overlay] are provided by user '''@clever'''.


If you are building on non-NixOS machine with QEMU binfmt wrapper configured, you will want to configure nix daemon to let it know that it can build for aarch64. Add the following line to <code>/etc/nix/nix.conf</code>:
If you are building on non-NixOS machine with QEMU binfmt wrapper configured, you will want to configure nix daemon to let it know that it can build for aarch64. Add the following line to <code>/etc/nix/nix.conf</code>: