summary refs log tree commit diff
path: root/nixos/tests/hydra/common.nix
blob: fdf2b2c6f6dc1ea7a77de0ac980c62f9685aa270 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{ system, ... }:
{
  baseConfig = { pkgs, ... }: let
    trivialJob = pkgs.writeTextDir "trivial.nix" ''
     { trivial = builtins.derivation {
         name = "trivial";
         system = "${system}";
         builder = "/bin/sh";
         allowSubstitutes = false;
         preferLocalBuild = true;
         args = ["-c" "echo success > $out; exit 0"];
       };
     }
    '';

    createTrivialProject = pkgs.stdenv.mkDerivation {
      name = "create-trivial-project";
      dontUnpack = true;
      buildInputs = [ pkgs.makeWrapper ];
      installPhase = "install -m755 -D ${./create-trivial-project.sh} $out/bin/create-trivial-project.sh";
      postFixup = ''
        wrapProgram "$out/bin/create-trivial-project.sh" --prefix PATH ":" ${pkgs.lib.makeBinPath [ pkgs.curl ]} --set EXPR_PATH ${trivialJob}
      '';
    };
  in {
    virtualisation.memorySize = 2048;
    time.timeZone = "UTC";
    environment.systemPackages = [ createTrivialProject pkgs.jq ];
    services.hydra = {
      enable = true;
      # Hydra needs those settings to start up, so we add something not harmfull.
      hydraURL = "example.com";
      notificationSender = "example@example.com";
      extraConfig = ''
        email_notification = 1
      '';
    };
    services.postfix.enable = true;
    nix = {
      distributedBuilds = true;
      buildMachines = [{
        hostName = "localhost";
        systems = [ system ];
      }];
      settings.substituters = [];
    };
  };
}