From b3f483a5c22134294727b253603a9f6441c638e8 Mon Sep 17 00:00:00 2001 From: Sophie Tauchert Date: Fri, 2 Feb 2024 19:33:49 +0100 Subject: [PATCH 1/3] pgbouncer: build with systemd support --- pkgs/servers/sql/pgbouncer/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/sql/pgbouncer/default.nix b/pkgs/servers/sql/pgbouncer/default.nix index dd47de907576..a17f2f89421e 100644 --- a/pkgs/servers/sql/pgbouncer/default.nix +++ b/pkgs/servers/sql/pgbouncer/default.nix @@ -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; From b89cd583aedd1d4dff6dc1b763d498ab05bb4941 Mon Sep 17 00:00:00 2001 From: Sophie Tauchert Date: Fri, 2 Feb 2024 19:35:01 +0100 Subject: [PATCH 2/3] nixos/pgbouncer: only depend on postgresql.service when enabled and use notify See also the upstream service file: https://github.com/pgbouncer/pgbouncer/blob/e6ce619785c93392794976c1e936e8c9f589a5ad/etc/pgbouncer.service --- .../doc/manual/release-notes/rl-2405.section.md | 2 ++ nixos/modules/services/databases/pgbouncer.nix | 17 ++++++----------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md index 768e3c54ae1b..110dae64c350 100644 --- a/nixos/doc/manual/release-notes/rl-2405.section.md +++ b/nixos/doc/manual/release-notes/rl-2405.section.md @@ -162,6 +162,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. diff --git a/nixos/modules/services/databases/pgbouncer.nix b/nixos/modules/services/databases/pgbouncer.nix index 65b287e84442..4dee50a2a192 100644 --- a/nixos/modules/services/databases/pgbouncer.nix +++ b/nixos/modules/services/databases/pgbouncer.nix @@ -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,17 +597,16 @@ 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; }; }; From f6278d4f6a85b1a512b266428c12adc9c8c26f2e Mon Sep 17 00:00:00 2001 From: Sophie Tauchert Date: Fri, 2 Feb 2024 22:55:29 +0100 Subject: [PATCH 3/3] nixos/pgbouncer: fix openFirewall option --- nixos/modules/services/databases/pgbouncer.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/modules/services/databases/pgbouncer.nix b/nixos/modules/services/databases/pgbouncer.nix index 4dee50a2a192..157d49c13161 100644 --- a/nixos/modules/services/databases/pgbouncer.nix +++ b/nixos/modules/services/databases/pgbouncer.nix @@ -611,7 +611,7 @@ in { }; }; - networking.firewall.allowedTCPPorts = optional cfg.openFirewall cfg.port; + networking.firewall.allowedTCPPorts = optional cfg.openFirewall cfg.listenPort; };