{ pkgs, lib, config, ... }: let vivariumBuilderDefault = { systems = [ "x86_64-linux" ]; protocol = "ssh-ng"; sshUser = "nixremote"; # sshKey doesn't work }; vivariumBuilders = [ { hostName = "abavorana.frogeye.fr"; publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUZsaW9WYWZVWEIwdFNzSDRUVHBremphUkNkb0piSmRjVDRGOXFLZithMnEgcm9vdEBhYmF2b3JhbmEK"; supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ]; } { hostName = "ludwig.clowncar.frogeye.fr"; publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSVBaRHIrQmVqZzRXTVVGR1NGdkd5YituMk0zMG9VR09KVUlzY3Z1b2F4VEQgcm9vdEBsdWR3aWcK"; } ]; # MANU pass vivarium/lemmy/remote-builds/cache | nix key convert-secret-to-public | cat publicKeys = [ "abavorana.frogeye.fr:rcKZ9gwaIQLcst/vbhbF7meUQD5sveT2QQN4a+Zo1BM=" "ludwig.clowncar.frogeye.fr:jTlN0fCOLU49M3LQw5j/u++Gmwrsv3m9RGs0slSg6r0=" ]; in { config = { system.activationScripts.diff = { supportsDryActivation = true; text = '' mkdir -p /root/.ssh cat ${pkgs.writeText "root-ssh-config" (lib.strings.concatLines (builtins.map (builder: '' Host ${builder.hostName} Port 2278 '') vivariumBuilders)) } > /root/.ssh/config ''; }; nix = { buildMachines = builtins.map (vivariumBuilder: vivariumBuilderDefault // vivariumBuilder) vivariumBuilders; distributedBuilds = true; settings = { builders-use-substitutes = true; trusted-public-keys = publicKeys; }; }; }; } # TODO Make it work. I think it just doesn't like non-standard SSH ports.