From e8ec88bd570bce146658c09a579f434ee852a6b6 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Thu, 12 Jun 2025 12:57:31 +0800 Subject: [PATCH] feat(server/web-apps): init mattermost --- .../server/web-apps/mattermost/default.nix | 60 +++++++++++++++++++ systems/x86_64-linux/apollo/default.nix | 14 +++-- 2 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 modules/nixos/server/web-apps/mattermost/default.nix diff --git a/modules/nixos/server/web-apps/mattermost/default.nix b/modules/nixos/server/web-apps/mattermost/default.nix new file mode 100644 index 0000000..868d9b3 --- /dev/null +++ b/modules/nixos/server/web-apps/mattermost/default.nix @@ -0,0 +1,60 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.server.web-apps.mattermost; +in +{ + options.server.web-apps.mattermost = { + enable = lib.mkEnableOption "the Mattermost service"; + port = lib.pantheon.mkPortOption 8065; + url = lib.pantheon.mkStrOption; + configDir = lib.pantheon.mkStrOption // { + default = "/etc/mattermost"; + }; + dataDir = lib.pantheon.mkStrOption // { + default = "/var/lib/mattermost"; + }; + logDir = lib.pantheon.mkStrOption // { + default = "/var/log/mattermost"; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = config.services.postgresql.enable; + message = "You must enable a local instance of postgresql."; + } + ]; + networking.firewall.allowedTCPPorts = lib.singleton cfg.port; + services.mattermost = { + enable = true; + inherit (cfg) + configDir + dataDir + logDir + port + ; + host = "0.0.0.0"; + siteName = "pantheon"; + siteUrl = "https://${cfg.url}"; + }; + services.postgresql = { + ensureDatabases = lib.singleton config.services.mattermost.database.name; + ensureUsers = lib.singleton { + name = config.services.mattermost.database.user; + ensureDBOwnership = true; + }; + }; + server.web-servers.nginx.proxies = lib.mkIf config.server.web-servers.nginx.enable ( + lib.singleton { + source = cfg.url; + target = "http://${config.system.hostname}:${builtins.toString cfg.port}"; + } + ); + }; +} diff --git a/systems/x86_64-linux/apollo/default.nix b/systems/x86_64-linux/apollo/default.nix index 7a2c393..9033745 100644 --- a/systems/x86_64-linux/apollo/default.nix +++ b/systems/x86_64-linux/apollo/default.nix @@ -22,10 +22,16 @@ server = { enableDDNS = true; mountHelios = true; - databases.mongodb.enable = true; - databases.mysql.enable = true; - databases.postgresql.enable = true; - web-apps.librechat.enable = true; + databases = { + mongodb.enable = true; + mysql.enable = true; + postgresql.enable = true; + }; + web-apps = { + librechat.enable = true; + mattermost.enable = true; + mattermost.url = "mm.bwfiq.com"; + }; web-servers.nginx.enable = true; web-servers.nginx.proxies = [ {