1{ pkgs, ... }:
2
3let
4 certs = import ../common/acme/server/snakeoil-certs.nix;
5
6 serverDomain = certs.domain;
7in
8{
9 name = "open-web-calendar";
10 meta.maintainers = with pkgs.lib.maintainers; [ erictapen ];
11
12 nodes.server =
13 { pkgs, lib, ... }:
14 {
15 services.open-web-calendar = {
16 enable = true;
17 domain = serverDomain;
18 calendarSettings.title = "My custom title";
19 };
20
21 services.nginx.virtualHosts."${serverDomain}" = {
22 enableACME = lib.mkForce false;
23 sslCertificate = certs."${serverDomain}".cert;
24 sslCertificateKey = certs."${serverDomain}".key;
25 };
26
27 security.pki.certificateFiles = [ certs.ca.cert ];
28
29 networking.hosts."::1" = [ "${serverDomain}" ];
30 networking.firewall.allowedTCPPorts = [
31 80
32 443
33 ];
34 };
35
36 nodes.client =
37 { pkgs, nodes, ... }:
38 {
39 networking.hosts."${nodes.server.networking.primaryIPAddress}" = [ "${serverDomain}" ];
40
41 security.pki.certificateFiles = [ certs.ca.cert ];
42 };
43
44 testScript = ''
45 start_all()
46 server.wait_for_unit("open-web-calendar.socket")
47 server.wait_until_succeeds("curl -f https://${serverDomain}/ | grep 'My custom title'")
48 '';
49}