{ 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" ]; }