feat: service.postgresql module extension
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,5 +1,5 @@
|
|||||||
.env
|
.env
|
||||||
result
|
result
|
||||||
result-man/
|
result-man
|
||||||
rust-toolchain.toml
|
rust-toolchain.toml
|
||||||
target/
|
target/
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
{ ... }: {}
|
|
||||||
67
nixos/module/generic/postgresql.nix
Normal file
67
nixos/module/generic/postgresql.nix
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
self,
|
||||||
|
flake
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
system = pkgs.system;
|
||||||
|
cfg = config.services.postgresql;
|
||||||
|
extensionFlags = {
|
||||||
|
pg_cron = false;
|
||||||
|
pgjwt = false;
|
||||||
|
pg_net = false;
|
||||||
|
pg_smtp_client = false;
|
||||||
|
http = false;
|
||||||
|
plsh = false;
|
||||||
|
hemar = false;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
services.postgresql = {
|
||||||
|
lazzyExtensions = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf lib.types.bool;
|
||||||
|
default = extensionFlags;
|
||||||
|
};
|
||||||
|
environment = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf lib.types.str;
|
||||||
|
default = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
systemd.services.postgresql.environment = cfg.environment;
|
||||||
|
services.postgresql = {
|
||||||
|
settings.shared_preload_libraries =
|
||||||
|
lib.concatStringsSep ", "
|
||||||
|
(lib.attrNames (
|
||||||
|
lib.filterAttrs (n: v: v &&
|
||||||
|
n != "http"
|
||||||
|
&& n != "plsh"
|
||||||
|
&& n != "pgjwt"
|
||||||
|
&& n != "pg_smtp_client"
|
||||||
|
) cfg.lazzyExtensions));
|
||||||
|
|
||||||
|
extensions = let
|
||||||
|
packages = {
|
||||||
|
inherit (cfg.package.pkgs) pg_net pgjwt pg_cron http pg_smtp_client plsh;
|
||||||
|
hemar = inputs.hutil.packages.${system}.pg-15-hemar;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
lib.attrValues (
|
||||||
|
lib.filterAttrs (n: v: v != null)
|
||||||
|
(lib.mapAttrs' (
|
||||||
|
name: enabled:
|
||||||
|
if enabled
|
||||||
|
then lib.nameValuePair name (packages.${name} or (throw "Package ${name} not found in pkgs"))
|
||||||
|
else null
|
||||||
|
)
|
||||||
|
cfg.lazzyExtensions)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
/nix/store/914rqhi68mlykix1dd72rspwc5zmnj4g-postgresql-15.7-man
|
|
||||||
Reference in New Issue
Block a user