1{ system, ... }:
2{
3 baseConfig = { pkgs, ... }: let
4 trivialJob = pkgs.writeTextDir "trivial.nix" ''
5 { trivial = builtins.derivation {
6 name = "trivial";
7 system = "${system}";
8 builder = "/bin/sh";
9 allowSubstitutes = false;
10 preferLocalBuild = true;
11 args = ["-c" "echo success > $out; exit 0"];
12 };
13 }
14 '';
15
16 createTrivialProject = pkgs.stdenv.mkDerivation {
17 name = "create-trivial-project";
18 dontUnpack = true;
19 nativeBuildInputs = [ pkgs.makeWrapper ];
20 installPhase = "install -m755 -D ${./create-trivial-project.sh} $out/bin/create-trivial-project.sh";
21 postFixup = ''
22 wrapProgram "$out/bin/create-trivial-project.sh" --prefix PATH ":" ${pkgs.lib.makeBinPath [ pkgs.curl ]} --set EXPR_PATH ${trivialJob}
23 '';
24 };
25 in {
26 virtualisation.memorySize = 2048;
27 time.timeZone = "UTC";
28 environment.systemPackages = [ createTrivialProject pkgs.jq ];
29 services.hydra = {
30 enable = true;
31 # Hydra needs those settings to start up, so we add something not harmfull.
32 hydraURL = "example.com";
33 notificationSender = "example@example.com";
34 extraConfig = ''
35 email_notification = 1
36 '';
37 };
38 services.postfix.enable = true;
39 nix = {
40 distributedBuilds = true;
41 buildMachines = [{
42 hostName = "localhost";
43 systems = [ system ];
44 }];
45 settings.substituters = [];
46 };
47 };
48}