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