summary refs log tree commit diff
path: root/nixos/modules/services/web-apps/tt-rss.nix
diff options
context:
space:
mode:
authorRobin Gloster <mail@glob.in>2018-01-05 14:17:35 +0100
committerRobin Gloster <mail@glob.in>2018-01-05 14:47:54 +0100
commitcfed96ca5188d834f1dcd71c9160293f44f9362d (patch)
treeb89cd0df3c55df375f6f6e9878cb919d6b535ad3 /nixos/modules/services/web-apps/tt-rss.nix
parentc26ff439055faacac38e66b62817c019c0711f0f (diff)
downloadnixpkgs-cfed96ca5188d834f1dcd71c9160293f44f9362d.tar
nixpkgs-cfed96ca5188d834f1dcd71c9160293f44f9362d.tar.gz
nixpkgs-cfed96ca5188d834f1dcd71c9160293f44f9362d.tar.bz2
nixpkgs-cfed96ca5188d834f1dcd71c9160293f44f9362d.tar.lz
nixpkgs-cfed96ca5188d834f1dcd71c9160293f44f9362d.tar.xz
nixpkgs-cfed96ca5188d834f1dcd71c9160293f44f9362d.tar.zst
nixpkgs-cfed96ca5188d834f1dcd71c9160293f44f9362d.zip
nixos/service.tt-rss: improve pgsql support, do not use static uid/gid
Diffstat (limited to 'nixos/modules/services/web-apps/tt-rss.nix')
-rw-r--r--nixos/modules/services/web-apps/tt-rss.nix28
1 files changed, 16 insertions, 12 deletions
diff --git a/nixos/modules/services/web-apps/tt-rss.nix b/nixos/modules/services/web-apps/tt-rss.nix
index 03565085da3..c784f4756d1 100644
--- a/nixos/modules/services/web-apps/tt-rss.nix
+++ b/nixos/modules/services/web-apps/tt-rss.nix
@@ -498,7 +498,7 @@ let
           callSql = e:
               if cfg.database.type == "pgsql" then ''
                   ${optionalString (cfg.database.password != null) "PGPASSWORD=${cfg.database.password}"} \
-                  ${pkgs.postgresql95}/bin/psql \
+                  ${pkgs.sudo}/bin/sudo -u ${cfg.user} ${config.services.postgresql.package}/bin/psql \
                     -U ${cfg.database.user} \
                     ${optionalString (cfg.database.host != null) "-h ${cfg.database.host} --port ${toString dbPort}"} \
                     -c '${e}' \
@@ -523,6 +523,14 @@ let
         ''
 
         + (optionalString (cfg.database.type == "pgsql") ''
+          ${optionalString (cfg.database.host == null && cfg.database.password == null) ''
+            if ! [ -e ${cfg.root}/.db-created ]; then
+              ${pkgs.sudo}/bin/sudo -u ${config.services.postgresql.superUser} ${config.services.postgresql.package}/bin/createuser ${cfg.database.user}
+              ${pkgs.sudo}/bin/sudo -u ${config.services.postgresql.superUser} ${config.services.postgresql.package}/bin/createdb -O ${cfg.database.user} ${cfg.database.name}
+              touch ${cfg.root}/.db-created
+            fi
+          ''}
+
           exists=$(${callSql "select count(*) > 0 from pg_tables where tableowner = user"} \
           | tail -n+3 | head -n-2 | sed -e 's/[ \n\t]*//')
 
@@ -559,7 +567,7 @@ let
 
     services.mysql = optionalAttrs (cfg.database.type == "mysql") {
       enable = true;
-      package = mkDefault pkgs.mariadb;
+      package = mkDefault pkgs.mysql;
       ensureDatabases = [ cfg.database.name ];
       ensureUsers = [
         {
@@ -571,17 +579,13 @@ let
       ];
     };
 
-    users = optionalAttrs (cfg.user == "tt_rss") {
-      extraUsers = singleton {
-        name = "tt_rss";
-        group = "tt_rss";
-        uid = config.ids.uids.tt_rss;
-      };
-      extraGroups = singleton {
-        name = "tt_rss";
-        gid = config.ids.gids.tt_rss;
-      };
+    services.postgresql = optionalAttrs (cfg.database.type == "pgsql") {
+      enable = mkDefault true;
     };
 
+    users = optionalAttrs (cfg.user == "tt_rss") {
+      extraUsers.tt_rss.group = "tt_rss";
+      extraGroups.tt_rss = {};
+    };
   };
 }