summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorChristian Kampka <christian@kampka.net>2019-12-08 21:40:04 +0100
committerChristian Kampka <christian@kampka.net>2019-12-13 21:22:27 +0100
commitb2d67c08d03679ba1b9a928ac5610ad940846e7f (patch)
tree20c85356be90417a0fb4d36d69ac450e19f8e322 /nixos
parentb85286fe667f5c57a221a0e98269235507135c50 (diff)
downloadnixpkgs-b2d67c08d03679ba1b9a928ac5610ad940846e7f.tar
nixpkgs-b2d67c08d03679ba1b9a928ac5610ad940846e7f.tar.gz
nixpkgs-b2d67c08d03679ba1b9a928ac5610ad940846e7f.tar.bz2
nixpkgs-b2d67c08d03679ba1b9a928ac5610ad940846e7f.tar.lz
nixpkgs-b2d67c08d03679ba1b9a928ac5610ad940846e7f.tar.xz
nixpkgs-b2d67c08d03679ba1b9a928ac5610ad940846e7f.tar.zst
nixpkgs-b2d67c08d03679ba1b9a928ac5610ad940846e7f.zip
matrix-synapse: Use postgres service to create database and user
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/misc/matrix-synapse.nix31
1 files changed, 9 insertions, 22 deletions
diff --git a/nixos/modules/services/misc/matrix-synapse.nix b/nixos/modules/services/misc/matrix-synapse.nix
index 50661b873f6..0bda8980720 100644
--- a/nixos/modules/services/misc/matrix-synapse.nix
+++ b/nixos/modules/services/misc/matrix-synapse.nix
@@ -671,43 +671,30 @@ in {
         gid = config.ids.gids.matrix-synapse;
       } ];
 
-    services.postgresql.enable = mkIf usePostgresql (mkDefault true);
+    services.postgresql = mkIf (usePostgresql && cfg.create_local_database) {
+      enable = mkDefault true;
+      ensureDatabases = [ cfg.database_name ];
+      ensureUsers = [{
+        name = cfg.database_user;
+        ensurePermissions = { "DATABASE \"${cfg.database_name}\"" = "ALL PRIVILEGES"; };
+      }];
+    };
 
     systemd.services.matrix-synapse = {
       description = "Synapse Matrix homeserver";
-      after = [ "network.target" "postgresql.service" ];
+      after = [ "network.target" ] ++ lib.optional config.services.postgresql.enable "postgresql.service" ;
       wantedBy = [ "multi-user.target" ];
       preStart = ''
         ${cfg.package}/bin/homeserver \
           --config-path ${configFile} \
           --keys-directory ${cfg.dataDir} \
           --generate-keys
-      '' + optionalString (usePostgresql && cfg.create_local_database) ''
-        if ! test -e "${cfg.dataDir}/db-created"; then
-          ${pkgs.sudo}/bin/sudo -u ${pg.superUser} \
-            ${pg.package}/bin/createuser \
-            --login \
-            --no-createdb \
-            --no-createrole \
-            --encrypted \
-            ${cfg.database_user}
-          ${pkgs.sudo}/bin/sudo -u ${pg.superUser} \
-            ${pg.package}/bin/createdb \
-            --owner=${cfg.database_user} \
-            --encoding=UTF8 \
-            --lc-collate=C \
-            --lc-ctype=C \
-            --template=template0 \
-            ${cfg.database_name}
-          touch "${cfg.dataDir}/db-created"
-        fi
       '';
       serviceConfig = {
         Type = "notify";
         User = "matrix-synapse";
         Group = "matrix-synapse";
         WorkingDirectory = cfg.dataDir;
-        PermissionsStartOnly = true;
         ExecStart = ''
           ${cfg.package}/bin/homeserver \
             ${ concatMapStringsSep "\n  " (x: "--config-path ${x} \\") ([ configFile ] ++ cfg.extraConfigFiles) }