summary refs log tree commit diff
path: root/services/mattermost/default.nix
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@internetsafetylabs.org>2025-06-05 18:01:02 -0700
committerIrene Knapp <ireneista@internetsafetylabs.org>2025-06-05 18:04:16 -0700
commitaecfac7a404b86b26d28bfe2a3077d3b0a41eee4 (patch)
treec22cd7ba6160ab266b071b3ef7db2e2d6a4ee974 /services/mattermost/default.nix
parentbf3a4dff20feead2a87e5833988344fcc7970611 (diff)
add database setup; export everything from the flake as a module
database.nix is substantially copied from the ISL config repo, with a few
changes to make it more generic and usable by others

I also removed stuff in mattermost.nix that wasn't doing anything; I'll
detail that in comments

Change-Id: I0ff6ea69f293dc4070f277f30ae0fde5254cd87c
Diffstat (limited to 'services/mattermost/default.nix')
-rw-r--r--services/mattermost/default.nix60
1 files changed, 60 insertions, 0 deletions
diff --git a/services/mattermost/default.nix b/services/mattermost/default.nix
new file mode 100644
index 0000000..f16f721
--- /dev/null
+++ b/services/mattermost/default.nix
@@ -0,0 +1,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" ];
+}