1{
2 lib,
3 config,
4 pkgs,
5 ...
6}: let
7 name = "postgresql";
8 cfg = config.myNixOS.services.${name};
9in {
10 options.myNixOS.services.${name} = {
11 enable = lib.mkEnableOption "${name} server";
12 databases = lib.mkOption {
13 type = lib.types.listOf lib.types.str;
14 default = [];
15 description = "PostgreSQL databases.";
16 };
17 };
18
19 config = lib.mkIf cfg.enable {
20 services.postgresql = {
21 enable = true;
22 enableTCPIP = true;
23 package = pkgs.postgresql_16;
24
25 ensureDatabases = cfg.databases;
26 ensureUsers =
27 lib.map (dbName: {
28 name = dbName;
29 ensureDBOwnership = true;
30 })
31 cfg.databases;
32 };
33 };
34}