Building nixos installer images for quartz64 devices
Go to file
asonix 7ebd08d664 Tell uboot to load blade dtb
Also play with image writer. It seems to be enough to read files from uboot but the partition itself isn't solid
2023-01-12 23:38:24 -06:00
images Mark root as arm64 root 2023-01-12 19:40:25 -06:00
pkgs Tell uboot to load blade dtb 2023-01-12 23:38:24 -06:00
.gitignore Try adding soquartz 2023-01-12 18:31:59 -06:00
default.nix Update to use custom base image 2023-01-12 19:11:53 -06:00
flake.lock Update to use custom base image 2023-01-12 19:11:53 -06:00
flake.nix Update to use custom base image 2023-01-12 19:11:53 -06:00
README.md mark pinebook as not working yet 2022-01-27 04:48:49 +01:00

NixOS aarch64 images

Build aarch64 images for ARM single board computer that require custom uboot firmware. It re-uses pre-build NixOS installation images, so it can be also built on non aarch64 architectures.

Example

$ nix-build -A rock64 # for regular Rock64
$ nix-build -A rockPro64 # for RockPro64
$ sfdisk --dump result
label: gpt
label-id: 0493C426-ACD9-9843-9C4B-268C90698145
device: result
unit: sectors
first-lba: 64
last-lba: 5505943
sector-size: 512

result1 : start=          64, size=       16320, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=87A01291-DFAE-A54F-BB22-731A4A07FE78, name="idbloader"
result2 : start=       16384, size=       16384, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=34FAD60D-02BE-514E-BA65-80550BAACEF3, name="uboot"
result3 : start=       32768, size=     5473176, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=B4283CE4-FC2F-6942-A542-ABDFB5DC7668, name="nixos", attrs="LegacyBIOSBootable"

Built images can be than copied to sdcards etc as usual:

$ sudo dd if=./result of=/dev/mmcblk0 iflag=direct oflag=direct bs=16M status=progress

Replace /dev/mmcblk0 with your actual device.

Flakes support

Flakes support is also provided. This repository has no dependencies except for nixpkgs, however we do not provide a lock file which means that one will be created using your system if you pull down the repo. This lets you use an up-to-date uboot at whatever level of stability you are already comfortable with.

To build the rockPro64 image without pulling down the repo, use:

nix build --no-write-lock-file 'github:Mic92/nixos-aarch64-images#rockPro64'

To build the rockPro64 image without pulling down the repo and switching nixpkgs with nixpkgs-unstable:

nix build --no-write-lock-file --override-input nixpkgs github:nixos/nixpkgs/nixpkgs-unstable 'github:Mic92/nixos-aarch64-images#rockPro64'

Of course, you can replace rockPro64 with any of the outputs included in this flake. To see the outputs, you can invoke nix flake show:

 nix flake show
git+file:///home/user/git/nixos-aarch64-images
└───packages
    └───x86_64-linux
        ├───aarch64Image: package 'aarch64-image'
        ├───pinebookPro: package 'image'
        ├───roc-pc-rk3399: package 'image'
        ├───rock64: package 'image'
        └───rockPro64: package 'image'

Supported boards

Board Attribute Status
Rock64 rock64 Tested & works
RockPro64 rockPro64 Tested & works (requires nixpkgs-unstable or 21.11)
roc-pc-rk3399 roc-pc-rk3399 Untested & should work (please provide feedback)
PinebookPro pinebookPro Does not work yet

Add a new board

See images/rockchip.nix for an example. All options are defined in here;

Board wishlist

Allwinner boards have their bootloader in a free space after mbr:

https://nixos.wiki/wiki/Template:ARM/installation_allwinner