at master 1.9 kB view raw
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}