{ config, lib, pkgs, ... }: let inherit (lib) mkIf mkMerge mkThenElse; cfg = config.r6d.config-generator; computers = config.r6d.computers; profiles = config.r6d.profiles; in mkIf cfg.hydra-core { # Paquets environment.systemPackages = with pkgs; [ ]; # Documentation HYDRA ## Installation # 1. créer clef SSH : # ssh-keygen -C "hydra@pedro.dubronetwork.fr" -N "" -f /etc/nixos/id_buildfarm # 2. récupérer la clef publique du serveur ssh + l'ajouter dans les `knownHosts` : # ssh-keyscan localhost # 3. créer un utilisateur pour gérer hydra # su - hydra # hydra-create-user jpierre03 --password xxx --role 'admin' # 4. relancer hydra # 5. ajouter un vhost à nginx # 6. relancer nginx # 7. le service accessible à hydra. ## Tutoriel # * https://github.com/peti/hydra-tutorial # Services ## Hydra services.hydra = { enable = true; hydraURL = "http://hydra.${config.networking.hostName}"; notificationSender = "hydra@${config.networking.hostName}"; listenHost = "localhost"; minimumDiskFree = 50; # Go smtpHost = "localhost"; }; ## Ménage #nix.gc.automatic = true; ## Délégation des actions de compilation à la compilefarm ### Machines connues # 2. récupérer la clef publique du serveur ssh : ssh-keyscan localhost + l'ajouter dans les knownHosts programs.ssh.knownHosts = { "monstre.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBTTrLhq1Cwm0rpnwEIxSLqVrJWZnt+/9dt+SKd8NiIc"; "pedro.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7fjo2ysLqlfSo6BKnc6I6m1ayoPrbwEEyTKZmUzsOD"; "ocean.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINCaRuTl8iCTUE4XInOpkSlwQj5Re4w4Iq+gNIlJe8pA"; "radx.prunetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGyoXdTEnxSgZTMfRfVH+bpOGZJtJpydAijcRGsZik7U"; "rollo.dubronetwork.fr".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID4lWgS/sVdcZvnAAN+lBSOcCL9ISdAUsjp1kh9lalNu"; }; # une fois installé : # 1. créer chef SSH : ssh-keygen -C "hydra@pedro.dubronetwork.fr" -N "" -f /etc/nixos/id_buildfarm # ssh-keygen -t ed25519 -C "hydra MACHINE" -f /etc/nixos/hydra-ssh-key # accessible à hydra.pedro.dubnronetwork.fr nix = { distributedBuilds = false; buildMachines = [ # { hostName = "pedro.dubronetwork.fr"; maxJobs = 5; speedFactor = 10; sshKey = "/etc/nixos/id_buildfarm"; sshUser = "root"; system = "x86_64-linux"; } ]; extraOptions = "auto-optimise-store = true"; }; }