1import ./make-test-python.nix ({ pkgs, ... }: {
2 name = "sogo";
3 meta = with pkgs.lib.maintainers; {
4 maintainers = [ ajs124 das_j ];
5 };
6
7 nodes = {
8 sogo = { config, pkgs, ... }: {
9 services.nginx.enable = true;
10
11 services.mysql = {
12 enable = true;
13 package = pkgs.mariadb;
14 ensureDatabases = [ "sogo" ];
15 ensureUsers = [{
16 name = "sogo";
17 ensurePermissions = {
18 "sogo.*" = "ALL PRIVILEGES";
19 };
20 }];
21 };
22
23 services.sogo = {
24 enable = true;
25 timezone = "Europe/Berlin";
26 extraConfig = ''
27 WOWorkersCount = 1;
28
29 SOGoUserSources = (
30 {
31 type = sql;
32 userPasswordAlgorithm = md5;
33 viewURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_users";
34 canAuthenticate = YES;
35 id = users;
36 }
37 );
38
39 SOGoProfileURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_user_profile";
40 OCSFolderInfoURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_folder_info";
41 OCSSessionsFolderURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_sessions_folder";
42 OCSEMailAlarmsFolderURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_alarms_folder";
43 OCSStoreURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_store";
44 OCSAclURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_acl";
45 OCSCacheFolderURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_cache_folder";
46 '';
47 };
48 };
49 };
50
51 testScript = ''
52 start_all()
53 sogo.wait_for_unit("multi-user.target")
54 sogo.wait_for_open_port(20000)
55 sogo.wait_for_open_port(80)
56 sogo.succeed("curl -sSfL http://sogo/SOGo")
57 '';
58})