Problem
I’m trying to build a NixOS image but the build fails with permission denied error.
Details
My machine is running Ubuntu 20.04, aarch64-linux. Nix is installed in multi-user mode.
Image definition:
The build command:
nix-build '<nixpkgs/nixos>' -A config.system.build.sdImage -I nixos-config=./sd-image-aarch64.nix
Output:
Device Boot Start End Sectors Size Id Type
/nix/store/ws93y7zjx9wdafdz5frxbkqwr9c1lii6-nixos-sd-image-21.05pre288832.4d8dd0afd2d-aarch64-linux.img/sd-image/nixos-sd-image-21.05pre288832.4d8dd0afd2d-aarch64-linux.img1 16384 77823 61440 30M b W95
/nix/store/ws93y7zjx9wdafdz5frxbkqwr9c1lii6-nixos-sd-image-21.05pre288832.4d8dd0afd2d-aarch64-linux.img/sd-image/nixos-sd-image-21.05pre288832.4d8dd0afd2d-aarch64-linux.img2 * 77824 5391655 5313832 2.5G 83 Linu
The partition table has been altered.
Syncing disks.
5313832+0 records in
5313832+0 records out
2720681984 bytes (2.7 GB, 2.5 GiB) copied, 10.0503 s, 271 MB/s
mkfs.fat 4.1 (2017-01-24)
cp: cannot create regular file '/build/firmware/bootcode.bin': Permission denied
cp: cannot create regular file '/build/firmware/fixup.dat': Permission denied
cp: cannot create regular file '/build/firmware/fixup4.dat': Permission denied
cp: cannot create regular file '/build/firmware/fixup4cd.dat': Permission denied
cp: cannot create regular file '/build/firmware/fixup4db.dat': Permission denied
cp: cannot create regular file '/build/firmware/fixup4x.dat': Permission denied
cp: cannot create regular file '/build/firmware/fixup_cd.dat': Permission denied
cp: cannot create regular file '/build/firmware/fixup_db.dat': Permission denied
cp: cannot create regular file '/build/firmware/fixup_x.dat': Permission denied
cp: cannot create regular file '/build/firmware/start.elf': Permission denied
cp: cannot create regular file '/build/firmware/start4.elf': Permission denied
cp: cannot create regular file '/build/firmware/start4cd.elf': Permission denied
cp: cannot create regular file '/build/firmware/start4db.elf': Permission denied
cp: cannot create regular file '/build/firmware/start4x.elf': Permission denied
cp: cannot create regular file '/build/firmware/start_cd.elf': Permission denied
cp: cannot create regular file '/build/firmware/start_db.elf': Permission denied
cp: cannot create regular file '/build/firmware/start_x.elf': Permission denied
builder for '/nix/store/c13n2bcyfgv9y4g9309aqwfi5rsx0n8p-nixos-sd-image-21.05pre288832.4d8dd0afd2d-aarch64-linux.img.drv' failed with exit code 1
error: build of '/nix/store/c13n2bcyfgv9y4g9309aqwfi5rsx0n8p-nixos-sd-image-21.05pre288832.4d8dd0afd2d-aarch64-linux.img.drv' failed
What I tried so far
The error must be caused by this line
I tried to define sandbox-build-dir in nix.conf but it fails with the same error.
When I replaced $NIX_BUILD_TOP/firmware/
in this line to just firmware
or ./firmware
or /home/user/firmware
it says that it’s not a directory.
Any advise on how to deal with the error is hugely appreciated.