Skip to content

Build NixOS images for various ARM single computer boards

Notifications You must be signed in to change notification settings

Mic92/nixos-aarch64-images

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
CM3588 cm3588NAS Tested & works
roc-pc-rk3399 roc-pc-rk3399 Untested & should work (please provide feedback)
PinebookPro pinebookPro Untested, hopefully works?

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://wiki.nixos.org/wiki/Template:ARM/installation_allwinner

About

Build NixOS images for various ARM single computer boards

Resources

Stars

Watchers

Forks

Packages

No packages published