diff --git a/hosts/hydra/default.nix b/hosts/hydra/default.nix index c0d8cb9e..9338313c 100644 --- a/hosts/hydra/default.nix +++ b/hosts/hydra/default.nix @@ -31,15 +31,45 @@ in }; nix = { - buildMachines = [{ - hostName = "client@dacbert.hq.c3d2.de"; - system = lib.concatStringsSep "," [ - # "aarch64-linux" # very slow compared to gallium - "armv6l-linux" "armv7l-linux" - ]; - supportedFeatures = [ "kvm" "nixos-test" ]; - maxJobs = 1; - }]; + buildMachines = let + localPlatforms = feature: !(builtins.elem feature [ "x86_64-linux" "i686-linux" ]); + # strips features that don't make sense on qemu-user + extraPlatforms = builtins.filter localPlatforms config.nix.settings.extra-platforms; + in [ + { + hostName = "localhost"; + maxJobs = config.nix.settings.max-jobs; + speedFactors = 10; + supportedFeatures = config.nix.settings.system-features; + systems = [ "x86_64-linux" "i686-linux" ]; + } + # # local container to have an extra nix daemon for binfmt + # # NOTE: currently very, very slow and usually builds do not finish in any amount of time + # { + # hostName = "root@192.168.100.3"; + # maxJobs = 4; + # speedFactors = 20; + # supportedFeatures = [ "big-parallel" "nixos-test" "benchmark" ]; + # systems = lib.concatStringsSep "," extraPlatforms; + # } + { + hostName = "client@dacbert.hq.c3d2.de"; + system = lib.concatStringsSep "," [ + # "aarch64-linux" # very slow compared to gallium + "armv6l-linux" "armv7l-linux" + ]; + supportedFeatures = [ "kvm" "nixos-test" ]; + maxJobs = 1; + } + { + hostName = "gallium.supersandro.de"; + maxJobs = config.nix.settings.max-jobs; + speedFactors = 10; + sshUser = config.nix.remoteBuilder.name; + supportedFeatures = config.nix.settings.system-features; + system = "aarch64-linux"; + } + ]; daemonCPUSchedPolicy = "idle"; daemonIOSchedClass = "idle"; daemonIOSchedPriority = 7; @@ -315,22 +345,9 @@ in MemorySwapMax = "64G"; }; - hydra-init.preStart = let - localPlatforms = feature: !(builtins.elem feature [ "x86_64-linux" "i686-linux" ]); - # strips features that don't make sense on qemu-user - extraPlatforms = builtins.filter localPlatforms config.nix.settings.extra-platforms; - in - # both entries cannot have localhost alone because then hydra would merge them together but we want explictily two to not allow benchmarkts for binfmt emulated arches - # multiple container max-jobs by X because binfmt is very slow especially in configure scripts - '' - cat << EOF > ~/machines - localhost x86_64-linux,i686-linux - ${toString config.nix.settings.max-jobs} 10 ${lib.concatStringsSep "," config.nix.settings.system-features} - - # local container to have an extra nix daemon for binfmt - # NOTE: currently very, very slow and usually builds do not finish in any amount of time - # root@192.168.100.3 ${lib.concatStringsSep "," extraPlatforms} - ${toString (config.nix.settings.max-jobs * 3)} 10 big-parallel,nixos-test - - # sandro's native aarch64 builder - ${config.nix.remoteBuilder.name}@gallium.supersandro.de aarch64-linux - 4 20 big-parallel,nixos-test,benchmark - - EOF + hydra-init.preStart = '' + # TODO: remove after one deployment + rm -f ~/machines ''; nix-daemon.serviceConfig = {