summary refs log tree commit diff
path: root/services/mattermost/default.nix
blob: f16f72126b8e41ee27c016cd03e160f87d9c5ea1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
{ config, pkgs, lib, ... }:

{
  systemd.services.mattermost = {
    description = "Mattermost server";
    after = [ "network.target" "postgresql.service" ];
    wantedBy = [ "multi-user.target" ];

    preStart = ''
      mkdir -p /var/lib/mattermost/bin
      mkdir -p /var/lib/mattermost/client
      mkdir -p /var/lib/mattermost/config
      mkdir -p /var/lib/mattermost/templates
      cp -r ${pkgs.mattermost}/client/* /var/lib/mattermost/client/
      cp -r ${pkgs.mattermost}/bin/*  /var/lib/mattermost/bin/
      cp -r ${pkgs.mattermost}/config/*  /var/lib/mattermost/config/
      cp -r ${pkgs.mattermost}/templates/*  /var/lib/mattermost/templates/
      chown -R mattermost:mattermost /var/lib/mattermost
    '';

    serviceConfig = {
      User = "mattermost";
      Group = "mattermost";
      WorkingDirectory = "/var/lib/mattermost";
      ExecStart = "${pkgs.mattermost}/bin/mattermost";
      Environment = [
        "MM_SQLSETTINGS_DRIVERNAME=postgres"
        "MM_SQLSETTINGS_DATASOURCE=postgres://mattermost@localhost:5432/mattermost?sslmode=disable&connect_timeout=10"
        "MM_SERVICESETTINGS_SITEURL=http://islmm"
        "MM_SERVICESETTINGS_LISTENADDRESS=:8065"
        "MM_SERVICESETTINGS_ENABLEUSERCREATION=true"
        "MM_SERVICESETTINGS_ALLOWCORSFROM=*"
      ];
      Restart = "always";
    };
  };

  users.users.mattermost = {
    isSystemUser = true;
    home = "/var/lib/mattermost";
    createHome = true;
    group = "mattermost";
  };

  users.groups.mattermost = { };

  services.postgresql = {
    enable = true;

    ensureDatabases = [ "mattermost" ];
    ensureUsers = [
      {
        name = "mattermost";
        ensureDBOwnership = true;
      }
    ];
  };

  services.postgresqlBackup.databases = [ "mattermost" ];
}