From 95859c41afd89ab97eca87819b4adaff672e8508 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Tue, 21 Feb 2023 15:03:17 +0900 Subject: Use PostgreSQL for 소주 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- configuration.nix | 1 + dbms.nix | 38 ++++++++++++++++++++++++++++++++++++++ irc.nix | 13 ++++++++++++- matrix.nix | 21 ++------------------- 4 files changed, 53 insertions(+), 20 deletions(-) create mode 100644 dbms.nix 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 . + +{ 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"; - }; + } ]; }; }; -- cgit 1.4.1