From 31c747812e48da29a1d4987aa1b5f992661f953c Mon Sep 17 00:00:00 2001 From: Jordan Holt Date: Mon, 8 Jul 2024 22:13:36 +0100 Subject: [PATCH] Add postgresql module --- hosts/vps1/default.nix | 8 +++-- modules/databases/postgresql.nix | 38 +++++++++++++++++++++ modules/default.nix | 1 + modules/services/matrix-synapse/default.nix | 6 ++-- 4 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 modules/databases/postgresql.nix diff --git a/hosts/vps1/default.nix b/hosts/vps1/default.nix index 25ada02..74d99e9 100644 --- a/hosts/vps1/default.nix +++ b/hosts/vps1/default.nix @@ -43,7 +43,8 @@ services.openssh.settings.PermitRootLogin = lib.mkForce "prohibit-password"; - modules = { + modules = rec { + databases.postgresql.enable = true; services = { borgmatic = { enable = true; @@ -61,7 +62,10 @@ }; gitea.enable = true; headscale.enable = true; - matrix-synapse.enable = true; + matrix-synapse = { + enable = true; + usePostgresql = databases.postgresql.enable; + }; nginx.enable = true; photoprism.enable = true; }; diff --git a/modules/databases/postgresql.nix b/modules/databases/postgresql.nix new file mode 100644 index 0000000..afb1c3d --- /dev/null +++ b/modules/databases/postgresql.nix @@ -0,0 +1,38 @@ +{ + config, + lib, + ... +}: + +let + cfg = config.modules.databases.postgresql; +in { + options.modules.databases.postgresql = { + enable = lib.mkOption { + default = false; + example = true; + }; + }; + + config = lib.mkIf cfg.enable { + services.postgresql = { + enable = true; + initdbArgs = [ + "--allow-group-access" + ]; + settings = { + log_connections = true; + log_disconnections = true; + log_destination = lib.mkForce "syslog"; + }; + }; + + services.borgmatic.settings = { + postgresql_databases = [ + { + name = "all"; + } + ]; + }; + }; +} diff --git a/modules/default.nix b/modules/default.nix index bba8b18..e2d2e93 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -2,6 +2,7 @@ imports = [ ./options.nix ./podman.nix + ./databases/postgresql.nix ./desktop/gnome.nix ./desktop/forensics.nix ./desktop/hyprland.nix diff --git a/modules/services/matrix-synapse/default.nix b/modules/services/matrix-synapse/default.nix index 0d54dde..c913ac0 100644 --- a/modules/services/matrix-synapse/default.nix +++ b/modules/services/matrix-synapse/default.nix @@ -22,7 +22,7 @@ in { default = "vimium.com"; example = "vimium.com"; }; - usePostgres = lib.mkOption { + usePostgresql = lib.mkOption { default = false; example = true; }; @@ -129,7 +129,7 @@ in { services.matrix-synapse = { enable = true; settings = { - database.name = (if cfg.usePostgres then "psycopg2" else "sqlite3"); + database.name = (if cfg.usePostgresql then "psycopg2" else "sqlite3"); enable_metrics = false; enable_registration = false; max_upload_size = "100M"; @@ -138,7 +138,7 @@ in { }; }; - services.postgresql = lib.mkIf cfg.usePostgres { + services.postgresql = lib.mkIf cfg.usePostgresql { ensureUsers = [ { name = "matrix-synapse";