Aarch64-linux linux derivation often not in binary cache

I’m using nixops to manage few machines at home and I often have the problem that I can’t update my Raspberry PI 3 because nixops can’t find the kernel derivation in the binary cache and it can’t build it locally.
The exact error is:

error: a ‘aarch64-linux’ with features {big-parallel} is required to build ‘/nix/store/xcir72yqwxk91mgm7x9k3n4ivs6xasnw-linux-4.19.81.drv’, but I am a ‘x86_64-linux’ with features {benchmark, big-parallel, kvm, nixos-test}
Traceback (most recent call last):

I’m aware that it can’t build the kernel on my raspberry pi (and I don’t want to) because even if it is configured as build machine it doesn’t have the big-parallel feature, what I don’t understand is why is it happening; I’m using

$ nix-channel --list
nixpkgs nixos-19.09-small release nixos-19.09.2522.75f4ba05c63

shouldn’t this channel being updated after all derivations have been built?
If it is not the case, how do I know that the cache is updated?
I tried to understand how the hydra jobs are setup, currently Hydra - Jobset nixos:release-19.09-small is green but maybe should I check if Hydra - Jobset nixos:release-19.09-aarch64 completed successfully? (I was not able to find a 19.09-aarch64-small)

Now and then I’m able to get a new prebuilt kernel from the cache, so I’m not using any strange kernel configuration that it is requiring to always build the kernel locally.

Do you have any suggestion that I can use to make my server update more reliable?


1 Like

As it is now, non-default kernel versions are not channel-critical. Actually, relatively few packages are channel-critical ATM – that’s the tested jobset. And… the -small channel probably won’t even wait for 4.19 kernel finishing – the point is to update very fast for security updates on servers even though all those 50k packages couldn’t have caught up yet.

Oops… 4.19 is actually the default version.

I believe the point here is that -small channels don’t wait for aarch64 at all, so I’d recommend you to switch to the big one.

Perhaps with today’s infrastructure would could change that, but it’s not so ATM. Big nixos-19.09 channel does not actually wait for all aarch64 to finish either, but it at least (critically) depends on basic stuff like aarch64 installation images (and transitively on the kernel).