about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--configuration.nix1
-rw-r--r--dbms.nix38
-rw-r--r--irc.nix13
-rw-r--r--matrix.nix21
4 files changed, 53 insertions, 20 deletions
diff --git a/configuration.nix b/configuration.nix
index 88e6397..712a88e 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -30,6 +30,7 @@
   };
 
   imports = [
+    ./dbms.nix
     ./dns.nix
     ./ipfs.nix
     ./irc.nix
diff --git a/dbms.nix b/dbms.nix
new file mode 100644
index 0000000..455125c
--- /dev/null
+++ b/dbms.nix
@@ -0,0 +1,38 @@
+# DBMS configuruation
+# Copyright (C) 2022  Nguyễn Gia Phong
+#
+# This file is part of loang configuration.
+#
+# Loang configuration is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Loang configuration is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with loang configuration.  If not, see <https://www.gnu.org/licenses/>.
+
+{ pkgs, ... }:
+{
+  services.postgresql = {
+    enable = true;
+    package = pkgs.postgresql_15;
+    settings = {
+      checkpoint_timeout = "5min";
+      effective_cache_size = "1GB";
+      effective_io_concurrency = 100;
+      maintenance_work_mem = "320MB";
+      max_parallel_maintenance_workers = 4;
+      max_parallel_workers_per_gather = 4;
+      max_wal_senders = 0;
+      random_page_cost = 1.25;
+      shared_buffers = "512MB";
+      wal_buffers = -1;
+      work_mem = "32MB";
+    };
+  };
+}
diff --git a/irc.nix b/irc.nix
index e8592c9..e8bdb09 100644
--- a/irc.nix
+++ b/irc.nix
@@ -20,7 +20,6 @@
 let
   inherit (config.networking) domain;
   cert = config.security.acme.certs.${domain};
-  port = 6697;
 in {
   environment.systemPackages = [ (pkgs.writeTextFile rec {
     name = "sojupw";
@@ -35,9 +34,21 @@ in {
   }) ];
 
   networking.firewall.allowedTCPPorts = [ 6697 ];
+
   services = {
+    postgresql = {
+      ensureDatabases = [ "soju" ];
+      ensureUsers = [ {
+        name = "soju";
+        ensurePermissions."DATABASE soju" = "ALL PRIVILEGES";
+      } ];
+    };
+
     soju = {
       enable = true;
+      extraConfig = ''
+        db postgres "host=/run/postgresql dbname=soju"
+      '';
       hostName = domain;
       tlsCertificate = "${cert.directory}/cert.pem";
       tlsCertificateKey = "${cert.directory}/key.pem";
diff --git a/matrix.nix b/matrix.nix
index 12a7655..cdd75cc 100644
--- a/matrix.nix
+++ b/matrix.nix
@@ -103,28 +103,11 @@ in {
     };
 
     postgresql = {
-      enable = true;
       ensureDatabases = [ "dendrite" ];
-      ensureUsers = [
-        {
+      ensureUsers = [ {
           name = "dendrite";
           ensurePermissions."DATABASE dendrite" = "ALL PRIVILEGES";
-        }
-      ];
-      package = pkgs.postgresql_15;
-      settings = {
-        checkpoint_timeout = "5min";
-        effective_cache_size = "1GB";
-        effective_io_concurrency = 100;
-        maintenance_work_mem = "320MB";
-        max_parallel_maintenance_workers = 4;
-        max_parallel_workers_per_gather = 4;
-        max_wal_senders = 0;
-        random_page_cost = 1.25;
-        shared_buffers = "512MB";
-        wal_buffers = -1;
-        work_mem = "32MB";
-      };
+      } ];
     };
   };