{ config, lib, ... }: { nix.buildMachines = let base = [ "nixos-test" "benchmark" "big-parallel" "kvm" ]; x86-64 = [ "gccarch-x86-64" "gccarch-x86-64-v2" "gccarch-x86-64-v3" ]; aarch64 = [ "gccarch-armv8-a" "gccarch-armv8.1-a" "gccarch-armv8.2-a" "gccarch-armv8.2-a+fp16+rcpc+dotprod" ]; riscv64 = [ "gccarch-rv64imac" "gccarch-rv64imacfd" "gccarch-rv64gc" ]; in [ { hostName = "localhost"; protocol = null; maxJobs = 0; speedFactor = 0; systems = [ "x86_64-linux" ]; supportedFeatures = base; } { hostName = "integra.kyouma.net"; sshUser = "nix-ssh"; maxJobs = 2; speedFactor = 24; systems = [ "aarch64-linux" ]; supportedFeatures = base ++ aarch64 ++ [ "aarch64-linux-native" ]; sshKey = config.sops.secrets."services/hydra/id_ed25519_hydra".path; } { hostName = "schrodinger.kyouma.net"; sshUser = "root"; maxJobs = 2; speedFactor = 20; systems = [ "riscv64-linux" ]; supportedFeatures = base ++ riscv64 ++ [ "riscv64-linux-native" ]; sshKey = config.sops.secrets."services/hydra/id_ed25519_hydra".path; } ] ++ lib.forEach (lib.range 0 11) (num: { hostName = "build-worker-${lib.fixedWidthNumber 2 num}"; sshUser = "root"; maxJobs = 2; speedFactor = 20; systems = [ "i686-linux" "x86_64-linux" ] ++ lib.optionals (lib.mod num 5 == 0) [ "aarch64-linux" "riscv64-linux" ]; supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" ] ++ x86-64 ++ lib.optionals (lib.mod num 5 == 0) (aarch64 ++ riscv64 ++ [ "aarch64-linux-qemu" "riscv64-linux-qemu" "x86_64-linux-native" "i686-linux-native" ]); sshKey = config.sops.secrets."services/hydra/id_ed25519_hydra".path; }); nixpkgs.config.allowUnsupportedSystem = true; nix.distributedBuilds = true; nix.gc.automatic = lib.mkForce false; nix.settings = { allowed-uris = [ "github:" "git+https://" "git+ssh://" "https://" ]; }; programs.ssh = { knownHosts = { "build-worker-03.nyantec.com".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEGqTY74c5g15DSNPNM2Wdr5jAwS7BFgX1XRnhtGOnJc"; "build-worker-04.nyantec.com".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICOq+5I+nlAN2lJoOtoXrYEDuZ/TMPMa43pIlablYigK"; "integra.kyouma.net".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIBwEQiSfaDrUAwgul4mktusBPcIVxI4pLNDh9DPopVU"; "schrodinger.kyouma.net".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKo7vZ6lS1wx76YsbAdhOsGcc20YMAW52ep8SZ/FCHDp"; "lab.nyantec.com".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIUePtVPtBK+CYosufbaGiMT4EVanti4V5t2Wg0g/Fy4"; "localhost".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPNVavo3YHVsrYwXRVISu7kDoknn+5inFGySn4azlB8P"; "[build-worker-kyoumanet.fly.dev]:2200".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUGzlilikAUfUGKXVCoTeDvPRoWUgDDkNU5WaRUBzls"; "[build-worker-kyoumanet.fly.dev]:2201".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDL2M97UBHg9aUfjDUxzmzg1r0ga0m3/stummBVwuEAB"; "[build-worker-kyoumanet.fly.dev]:2202".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOTwVKL0P0chPM2Gz23rbT94844+w1CGJdCaZdzfjThz"; "[build-worker-kyoumanet.fly.dev]:2203".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAjy2eZGJQeAYy0+fLgW9jiS0jVY2LInY0NDMnzCvvKp"; "[build-worker-kyoumanet.fly.dev]:2204".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN72OyD9LYy4hq0WZ7ie5RPV+G54UreEJiA/RubjGoe9"; "[build-worker-kyoumanet.fly.dev]:2205".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICNh1o1I98XrI2XmOI6Q0aHPfyLCIQwKkKOxGUUeXL9v"; "[build-worker-kyoumanet.fly.dev]:2206".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGf0kxGgwOG9KhUhvxxTSiQC5YikrzZXKDgSpBw33qN4"; "[build-worker-kyoumanet.fly.dev]:2207".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL9z95a6Fn/dB+iNigEYpuJdBnBwCkIZYaKHcFbGP+RY"; "[build-worker-kyoumanet.fly.dev]:2208".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAk+FNMhTfAVqk3MfLp4QiG/i5ti53DlpnC0q+sOvU9O"; "[build-worker-kyoumanet-cdg.fly.dev]:2209".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJGlQD/3fLn/Kyb7v0RIycHRcArGi75jURj803EMpW0S"; "[build-worker-kyoumanet-cdg.fly.dev]:2210".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMQm1FSGBGdCR5f8MvBvdKM0M4yIQVnH1po7hHO5T1qz"; "[build-worker-kyoumanet-cdg.fly.dev]:2211".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINlH+v2ZlcDQY3itw4b7aRbwRTqDsTE0R5Ua3vF0VaGr"; }; extraConfig = '' Host machine-0008.cloud-v.co Hostname machine.cloud-v.co Port 20008 '' + lib.concatLines (lib.forEach (lib.range 0 11) (num: '' Host build-worker-${lib.fixedWidthNumber 2 num} Hostname build-worker-kyoumanet${lib.optionalString (num > 8) "-cdg"}.fly.dev Port 22${lib.fixedWidthNumber 2 num} '')); }; }