nixos/service.tt-rss: improve pgsql support, do not use static uid/gid

+16 -14
-2
nixos/modules/misc/ids.nix
··· 301 301 pykms = 282; 302 302 kodi = 283; 303 303 restya-board = 284; 304 - tt_rss = 285; 305 304 306 305 # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! 307 306 ··· 571 570 pykms = 282; 572 571 kodi = 283; 573 572 restya-board = 284; 574 - tt_rss = 285; 575 573 576 574 # When adding a gid, make sure it doesn't match an existing 577 575 # uid. Users and groups with the same name should have equal
+16 -12
nixos/modules/services/web-apps/tt-rss.nix
··· 498 498 callSql = e: 499 499 if cfg.database.type == "pgsql" then '' 500 500 ${optionalString (cfg.database.password != null) "PGPASSWORD=${cfg.database.password}"} \ 501 - ${pkgs.postgresql95}/bin/psql \ 501 + ${pkgs.sudo}/bin/sudo -u ${cfg.user} ${config.services.postgresql.package}/bin/psql \ 502 502 -U ${cfg.database.user} \ 503 503 ${optionalString (cfg.database.host != null) "-h ${cfg.database.host} --port ${toString dbPort}"} \ 504 504 -c '${e}' \ ··· 523 523 '' 524 524 525 525 + (optionalString (cfg.database.type == "pgsql") '' 526 + ${optionalString (cfg.database.host == null && cfg.database.password == null) '' 527 + if ! [ -e ${cfg.root}/.db-created ]; then 528 + ${pkgs.sudo}/bin/sudo -u ${config.services.postgresql.superUser} ${config.services.postgresql.package}/bin/createuser ${cfg.database.user} 529 + ${pkgs.sudo}/bin/sudo -u ${config.services.postgresql.superUser} ${config.services.postgresql.package}/bin/createdb -O ${cfg.database.user} ${cfg.database.name} 530 + touch ${cfg.root}/.db-created 531 + fi 532 + ''} 533 + 526 534 exists=$(${callSql "select count(*) > 0 from pg_tables where tableowner = user"} \ 527 535 | tail -n+3 | head -n-2 | sed -e 's/[ \n\t]*//') 528 536 ··· 559 567 560 568 services.mysql = optionalAttrs (cfg.database.type == "mysql") { 561 569 enable = true; 562 - package = mkDefault pkgs.mariadb; 570 + package = mkDefault pkgs.mysql; 563 571 ensureDatabases = [ cfg.database.name ]; 564 572 ensureUsers = [ 565 573 { ··· 571 579 ]; 572 580 }; 573 581 574 - users = optionalAttrs (cfg.user == "tt_rss") { 575 - extraUsers = singleton { 576 - name = "tt_rss"; 577 - group = "tt_rss"; 578 - uid = config.ids.uids.tt_rss; 579 - }; 580 - extraGroups = singleton { 581 - name = "tt_rss"; 582 - gid = config.ids.gids.tt_rss; 583 - }; 582 + services.postgresql = optionalAttrs (cfg.database.type == "pgsql") { 583 + enable = mkDefault true; 584 584 }; 585 585 586 + users = optionalAttrs (cfg.user == "tt_rss") { 587 + extraUsers.tt_rss.group = "tt_rss"; 588 + extraGroups.tt_rss = {}; 589 + }; 586 590 }; 587 591 }