Merge pull request #285866 from 999eagle/feat/pgbouncer-systemd

This commit is contained in:
Sandro 2024-02-19 14:42:01 +01:00 committed by GitHub
commit 30f71249a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 13 additions and 14 deletions

View file

@ -179,6 +179,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
`wants`), because the dependency that `multi-user.target` has on
`network-online.target` is planned for removal.
- `services.pgbouncer` now has systemd support enabled and will log to journald. The default setting for `services.pgbouncer.logFile` is now `null` to disable logging to a separate log file.
- `services.archisteamfarm` no longer uses the abbreviation `asf` for its state directory (`/var/lib/asf`), user and group (both `asf`). Instead the long name `archisteamfarm` is used.
Configurations with `system.stateVersion` 23.11 or earlier, default to the old stateDirectory until the 24.11 release and must either set the option explicitly or move the data to the new directory.

View file

@ -66,9 +66,6 @@ let
${optionalString (cfg.adminUsers != null) "admin_users = ${cfg.adminUsers}"}
${optionalString (cfg.statsUsers != null) "stats_users = ${cfg.statsUsers}"}
# linux
pidfile = /run/pgbouncer/pgbouncer.pid
# extra
${cfg.extraConfig}
'';
@ -96,10 +93,9 @@ in {
logFile = mkOption {
type = types.nullOr types.str;
default = "pgbouncer.log";
default = null;
description = lib.mdDoc ''
Specifies the log file.
Either this or syslog has to be specified.
Specifies a log file in addition to journald.
'';
};
@ -601,22 +597,21 @@ in {
systemd.services.pgbouncer = {
description = "PgBouncer - PostgreSQL connection pooler";
wants = [ "postgresql.service" ];
after = [ "postgresql.service" ];
wants = [ "network-online.target" ] ++ lib.optional config.services.postgresql.enable "postgresql.service";
after = [ "network-online.target" ] ++ lib.optional config.services.postgresql.enable "postgresql.service";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "forking";
Type = "notify";
User = cfg.user;
Group = cfg.group;
ExecStart = "${pkgs.pgbouncer}/bin/pgbouncer -d ${confFile}";
ExecStart = "${lib.getExe pkgs.pgbouncer} ${confFile}";
ExecReload = "${pkgs.coreutils}/bin/kill -SIGHUP $MAINPID";
RuntimeDirectory = "pgbouncer";
PIDFile = "/run/pgbouncer/pgbouncer.pid";
LimitNOFILE = cfg.openFilesLimit;
};
};
networking.firewall.allowedTCPPorts = optional cfg.openFirewall cfg.port;
networking.firewall.allowedTCPPorts = optional cfg.openFirewall cfg.listenPort;
};

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchurl, openssl, libevent, c-ares, pkg-config, nixosTests }:
{ lib, stdenv, fetchurl, openssl, libevent, c-ares, pkg-config, systemd, nixosTests }:
stdenv.mkDerivation rec {
pname = "pgbouncer";
@ -10,8 +10,10 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libevent openssl c-ares ];
buildInputs = [ libevent openssl c-ares ]
++ lib.optional stdenv.isLinux systemd;
enableParallelBuilding = true;
configureFlags = lib.optional stdenv.isLinux "--with-systemd";
passthru.tests = {
pgbouncer = nixosTests.pgbouncer;