supabase-postgres.git / summary / log / commit / refs
commit 7de5141e331cf1e307ec65aa2b929fc40af50a79
Author: Jean-François Roche <jfroche@pyxel.be>
Commit: GitHub <noreply@github.com>
Date: Wed Feb 04 00:11:48 2026 +0000
feat: enable nixosTest on aarch64 darwin (#1989)
* feat: enable nixosTest on aarch64 darwin
Build nixosTest using a local aarch64 linux builder and run nixosTest qemu VM in
aarch64 darwin. This keeps the tests fast as they don't require nested virtualisation.
For example, you can run the nixos test for the http extension on your aarch64 macOS with:
```shell
nix build .\#checks.aarch64-darwin.ext-http
```
* chore: reduce warnings related to system
Current system value has been moved into `pkgs.stdenv.hostPlatform` by https://github.com/NixOS/nixpkgs/pull/456527
* fix: remove redundant postgresqlWithExtension wrapper in extension tests
The tests were unnecessarily wrapping psql_15 with postgresqlWithExtension when psql_15 already includes the extensions.
* fix: remove port forwarding from test configurations
This cause problem starting nixos tests on darwin hosts.
* fix: remaining nixos test references to use pkgs.pkgsLinux
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system} -> pkgs.pkgsLinux.stdenv.hostPlatform.system
- self.packages.${pkgs.stdenv.hostPlatform.system} -> pkgs.pkgsLinux.stdenv.hostPlatform.system
* fix: improve HTTP mock server error handling and directory creation
- Guard against empty dirname when creating port file directory
- Use bare 'raise' to preserve original exception traceback
- Only create directory if dirname is non-empty
* fix: check full PostGIS version instead of just major version
Changes the version assertion to compare the complete version string
rather than only the major version, providing more precise validation.
---------
Co-authored-by: Yvan Sraka <yvan@sraka.xyz>
nix/cargo-pgrx/mkPgrxExtension.nix | 2 +-
nix/checks.nix | 30 ++++---
nix/ext/tests/default.nix | 35 ++++----
nix/ext/tests/http.nix | 112 +++++++++++++++++++-------
nix/ext/tests/index_advisor.nix | 39 +++++----
nix/ext/tests/orioledb.nix | 22 ++----
nix/ext/tests/pg_plan_filter.nix | 19 +++--
nix/ext/tests/pg_repack.nix | 28 +++----
nix/ext/tests/pg_safeupdate.nix | 19 +++--
nix/ext/tests/pgjwt.nix | 27 +++----
nix/ext/tests/pgmq.nix | 21 ++---
nix/ext/tests/pgroonga.nix | 32 +++-----
nix/ext/tests/pgrouting.nix | 40 ++++------
nix/ext/tests/pgsodium.nix | 32 +++-----
nix/ext/tests/plpgsql_check.nix | 26 +++---
nix/ext/tests/plv8.nix | 26 +++---
nix/ext/tests/postgis.nix | 158 +++++++++++++++++++++++++++++++++++++
nix/ext/tests/timescaledb.nix | 15 ++--
nix/ext/tests/vault.nix | 30 +++----
nix/postgresql/generic.nix | 4 +-
nix/tests/http-mock-server.py | 10 ++-
21 files changed, 444 insertions(+), 283 deletions(-)
diff --git a/nix/cargo-pgrx/mkPgrxExtension.nix b/nix/cargo-pgrx/mkPgrxExtension.nix
index 0bf99e3d..cee5eae1 100644
--- a/nix/cargo-pgrx/mkPgrxExtension.nix
+++ b/nix/cargo-pgrx/mkPgrxExtension.nix
@@ -42,7 +42,7 @@ let
import (builtins.fetchTarball {
url = "https://channels.nixos.org/nixos-22.11/nixexprs.tar.xz";
sha256 = "1j7h75a9hwkkm97jicky5rhvzkdwxsv5v46473rl6agvq2sj97y1";
- }) { system = stdenv.hostPlatform.system; }
+ }) { inherit (stdenv.hostPlatform) system; }
);
in
rustPlatform.bindgenHook.overrideAttrs {
diff --git a/nix/checks.nix b/nix/checks.nix
index a7219647..4af756f1 100644
--- a/nix/checks.nix
+++ b/nix/checks.nix
@@ -439,21 +439,19 @@
;
devShell = self'.devShells.default;
}
- // pkgs.lib.optionalAttrs (pkgs.stdenv.isLinux) (
- {
- inherit (self'.packages)
- postgresql_15_debug
- postgresql_15_src
- postgresql_orioledb-17_debug
- postgresql_orioledb-17_src
- postgresql_17_debug
- postgresql_17_src
- ;
- }
- // (import ./ext/tests {
- inherit self;
- inherit pkgs;
- })
- );
+ // (import ./ext/tests {
+ inherit self;
+ inherit pkgs;
+ })
+ // pkgs.lib.optionalAttrs (pkgs.stdenv.isLinux) {
+ inherit (self'.packages)
+ postgresql_15_debug
+ postgresql_15_src
+ postgresql_orioledb-17_debug
+ postgresql_orioledb-17_src
+ postgresql_17_debug
+ postgresql_17_src
+ ;
+ };
};
}
diff --git a/nix/ext/tests/default.nix b/nix/ext/tests/default.nix
index d3e6540e..e2545471 100644
--- a/nix/ext/tests/default.nix
+++ b/nix/ext/tests/default.nix
@@ -16,7 +16,7 @@ let
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -25,7 +25,7 @@ let
let
majorVersion =
if postgresql.isOrioleDB then "orioledb-17" else lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -33,7 +33,7 @@ let
(installedExtension majorVersion)
]
++ lib.optional (postgresql.isOrioleDB
- ) self.legacyPackages.${pkgs.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb;
+ ) self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb;
passthru = {
inherit (postgresql) version psqlSchema;
lib = pkg;
@@ -42,7 +42,7 @@ let
withoutJIT = pkg;
installedExtensions = [ (installedExtension majorVersion) ];
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -56,27 +56,21 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
orioledb_17 =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17;
in
- self.inputs.nixpkgs.lib.nixos.runTest {
+ pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
services.openssh = {
enable = true;
};
@@ -153,7 +147,8 @@ let
specialisation.orioledb17.configuration = {
services.postgresql = {
package = lib.mkForce (
- postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17
);
settings = lib.mkForce (
((installedExtension "17").defaultSettings or { })
@@ -191,7 +186,7 @@ let
let
newPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17;
in
''
if [[ -z "${newPostgresql.psqlSchema}" ]]; then
diff --git a/nix/ext/tests/http.nix b/nix/ext/tests/http.nix
index 2879ad2c..edc2d316 100644
--- a/nix/ext/tests/http.nix
+++ b/nix/ext/tests/http.nix
@@ -2,9 +2,10 @@
let
pname = "http";
inherit (pkgs) lib;
+ mockServer = ../../tests/http-mock-server.py;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -13,7 +14,7 @@ let
let
majorVersion =
if postgresql.isOrioleDB then "orioledb-17" else lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -21,7 +22,7 @@ let
(installedExtension majorVersion)
]
++ lib.optional (postgresql.isOrioleDB
- ) self.legacyPackages.${pkgs.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb;
+ ) self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb;
passthru = {
inherit (postgresql) version psqlSchema;
installedExtensions = [ (installedExtension majorVersion) ];
@@ -30,7 +31,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -44,34 +45,30 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
orioledb_17 =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
services.openssh = {
enable = true;
};
services.postgresql = {
enable = true;
- package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ package =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
settings = (installedExtension "15").defaultSettings or { };
authentication = ''
local all postgres peer map=postgres
@@ -89,24 +86,40 @@ self.inputs.nixpkgs.lib.nixos.runTest {
];
initialScript = pkgs.writeText "init-postgres" ''
CREATE TABLE IF NOT EXISTS test_config (key TEXT PRIMARY KEY, value TEXT);
- INSERT INTO test_config (key, value) VALUES ('http_mock_port', '8880') ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value;
'';
};
systemd.services.http-mock-server = {
wantedBy = [ "multi-user.target" ];
+ before = [ "postgresql.service" ];
serviceConfig = {
Type = "simple";
+ Restart = "on-failure";
+ RestartSec = "2";
+ TimeoutStartSec = "30";
+ User = "root";
+ };
+ environment = {
+ HTTP_MOCK_PORT_FILE = "/tmp/http-mock-port";
+ PYTHONUNBUFFERED = "1";
};
script = ''
- ${pkgs.python3}/bin/python3 ${../../tests/http-mock-server.py}
+ # Ensure temp directory exists
+ mkdir -p /tmp
+
+ # Start the mock server
+ exec ${pkgs.pkgsLinux.python3}/bin/python3 ${mockServer}
'';
};
+ systemd.services.postgresql = {
+ after = [ "http-mock-server.service" ];
+ };
+
specialisation.postgresql17.configuration = {
services.postgresql = {
package = lib.mkForce (
- postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17
+ postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17
);
settings = ((installedExtension "17").defaultSettings or { });
};
@@ -124,10 +137,10 @@ self.inputs.nixpkgs.lib.nixos.runTest {
let
oldPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
newPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}";
newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}";
in
@@ -152,7 +165,8 @@ self.inputs.nixpkgs.lib.nixos.runTest {
specialisation.orioledb17.configuration = {
services.postgresql = {
package = lib.mkForce (
- postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17
);
settings = lib.mkForce (
((installedExtension "17").defaultSettings or { })
@@ -175,7 +189,6 @@ self.inputs.nixpkgs.lib.nixos.runTest {
pkgs.writeText "init-postgres-with-orioledb" ''
CREATE EXTENSION orioledb CASCADE;
CREATE TABLE IF NOT EXISTS test_config (key TEXT PRIMARY KEY, value TEXT);
- INSERT INTO test_config (key, value) VALUES ('http_mock_port', '8880') ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value;
''
);
};
@@ -194,7 +207,7 @@ self.inputs.nixpkgs.lib.nixos.runTest {
let
newPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17;
in
''
if [[ -z "${newPostgresql.psqlSchema}" ]]; then
@@ -243,8 +256,37 @@ self.inputs.nixpkgs.lib.nixos.runTest {
start_all()
server.wait_for_unit("multi-user.target")
+ server.wait_for_unit("http-mock-server.service")
server.wait_for_unit("postgresql.service")
+ # Read the HTTP mock port and configure it in PostgreSQL
+ # Wait for the port file to be created with retry logic
+ server.succeed("""
+ for i in {1..30}; do
+ if [ -f /tmp/http-mock-port ]; then
+ break
+ fi
+ echo "Waiting for HTTP mock server port file... ($i/30)"
+ sleep 1
+ done
+
+ if [ ! -f /tmp/http-mock-port ]; then
+ echo "ERROR: HTTP mock server port file not found after 30 seconds"
+ systemctl status http-mock-server.service || true
+ journalctl -u http-mock-server.service --no-pager || true
+ exit 1
+ fi
+ """)
+
+ http_port = server.succeed("cat /tmp/http-mock-port").strip()
+ server.succeed(f"""
+ sudo -u postgres psql -d postgres -c '
+ CREATE TABLE IF NOT EXISTS test_config (key TEXT PRIMARY KEY, value TEXT);
+ INSERT INTO test_config (key, value) VALUES ('"'"'http_mock_port'"'"', '"'"'{http_port}'"'"')
+ ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value;
+ '
+ """)
+
test = PostgresExtensionTest(server, extension_name, versions, sql_test_directory, support_upgrade, ext_schema, lib_name)
test.create_schema()
@@ -269,6 +311,14 @@ self.inputs.nixpkgs.lib.nixos.runTest {
server.succeed(
"${pg17-configuration}/bin/switch-to-configuration test >&2"
)
+ server.wait_for_unit("postgresql.service")
+ # Reconfigure the HTTP mock port after switching PostgreSQL version
+ server.succeed(f"""
+ sudo -u postgres psql -d postgres -c '
+ INSERT INTO test_config (key, value) VALUES ('"'"'http_mock_port'"'"', '"'"'{http_port}'"'"')
+ ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value;
+ '
+ """)
with subtest("Check last version of the extension after postgresql upgrade"):
test.assert_version_matches(last_version)
@@ -289,6 +339,14 @@ self.inputs.nixpkgs.lib.nixos.runTest {
server.succeed(
"${orioledb17-configuration}/bin/switch-to-configuration test >&2"
)
+ server.wait_for_unit("postgresql.service")
+ # Reconfigure the HTTP mock port after switching to orioledb
+ server.succeed(f"""
+ sudo -u postgres psql -d postgres -c '
+ INSERT INTO test_config (key, value) VALUES ('"'"'http_mock_port'"'"', '"'"'{http_port}'"'"')
+ ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value;
+ '
+ """)
installed_extensions=test.run_sql("""SELECT extname FROM pg_extension WHERE extname = 'orioledb';""")
assert "orioledb" in installed_extensions
test.create_schema()
diff --git a/nix/ext/tests/index_advisor.nix b/nix/ext/tests/index_advisor.nix
index 564ec350..b936cb03 100644
--- a/nix/ext/tests/index_advisor.nix
+++ b/nix/ext/tests/index_advisor.nix
@@ -4,14 +4,14 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.system}."psql_${postgresMajorVersion}".exts.index_advisor;
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts.index_advisor;
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
postgresqlWithExtension =
postgresql:
let
majorVersion =
if postgresql.isOrioleDB then "orioledb-17" else lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -19,7 +19,7 @@ let
(installedExtension majorVersion)
]
++ lib.optional (postgresql.isOrioleDB
- ) self.legacyPackages.${pkgs.system}.psql_orioledb-17.exts.orioledb;
+ ) self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb;
passthru = {
inherit (postgresql) version psqlSchema;
installedExtensions = [ (installedExtension majorVersion) ];
@@ -28,7 +28,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -42,25 +42,21 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.system}.postgresql_17;
- orioledb_17 = postgresqlWithExtension self.packages.${pkgs.system}.postgresql_orioledb-17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
+ orioledb_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
services.openssh = {
enable = true;
};
@@ -130,7 +126,10 @@ self.inputs.nixpkgs.lib.nixos.runTest {
specialisation.orioledb17.configuration = {
services.postgresql = {
- package = lib.mkForce (postgresqlWithExtension self.packages.${pkgs.system}.postgresql_orioledb-17);
+ package = lib.mkForce (
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17
+ );
settings = lib.mkForce (
((installedExtension "17").defaultSettings or { })
// {
@@ -167,7 +166,7 @@ self.inputs.nixpkgs.lib.nixos.runTest {
let
newPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17;
in
''
if [[ -z "${newPostgresql.psqlSchema}" ]]; then
diff --git a/nix/ext/tests/orioledb.nix b/nix/ext/tests/orioledb.nix
index de50710b..bb1a3125 100644
--- a/nix/ext/tests/orioledb.nix
+++ b/nix/ext/tests/orioledb.nix
@@ -6,24 +6,24 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
postgresql.lib
- (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb)
+ (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb)
];
passthru = {
inherit (postgresql) version psqlSchema;
installedExtensions = [
- (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb)
+ (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb)
];
lib = pkg;
withPackages = _: pkg;
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -39,23 +39,13 @@ let
pkg;
psql_orioledb =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
services.openssh = {
enable = true;
};
diff --git a/nix/ext/tests/pg_plan_filter.nix b/nix/ext/tests/pg_plan_filter.nix
index f8d1c9ca..30e1170e 100644
--- a/nix/ext/tests/pg_plan_filter.nix
+++ b/nix/ext/tests/pg_plan_filter.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,7 +12,7 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -27,7 +27,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -41,18 +41,21 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
services.postgresql = {
enable = true;
- package = (postgresqlWithExtension psql_15);
+ package = psql_15;
settings = (installedExtension "15").defaultSettings or { };
};
diff --git a/nix/ext/tests/pg_repack.nix b/nix/ext/tests/pg_repack.nix
index c81e29b2..7ca0da12 100644
--- a/nix/ext/tests/pg_repack.nix
+++ b/nix/ext/tests/pg_repack.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,7 +12,7 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -27,7 +27,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -42,28 +42,20 @@ let
in
pkg;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
services.openssh = {
enable = true;
};
services.postgresql = {
enable = true;
- package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ package =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
enableTCPIP = true;
authentication = ''
local all postgres peer map=postgres
@@ -86,7 +78,7 @@ self.inputs.nixpkgs.lib.nixos.runTest {
specialisation.postgresql17.configuration = {
services.postgresql = {
package = lib.mkForce (
- postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17
+ postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17
);
};
@@ -103,10 +95,10 @@ self.inputs.nixpkgs.lib.nixos.runTest {
let
oldPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
newPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}";
newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}";
in
diff --git a/nix/ext/tests/pg_safeupdate.nix b/nix/ext/tests/pg_safeupdate.nix
index 4f168f8b..83c2b080 100644
--- a/nix/ext/tests/pg_safeupdate.nix
+++ b/nix/ext/tests/pg_safeupdate.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,7 +12,7 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -27,7 +27,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -41,18 +41,21 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
services.postgresql = {
enable = true;
- package = (postgresqlWithExtension psql_15);
+ package = psql_15;
settings = (installedExtension "15").defaultSettings or { };
};
diff --git a/nix/ext/tests/pgjwt.nix b/nix/ext/tests/pgjwt.nix
index 2f0cc9ef..39fcd18f 100644
--- a/nix/ext/tests/pgjwt.nix
+++ b/nix/ext/tests/pgjwt.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,7 +12,7 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -27,7 +27,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -41,25 +41,18 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
-
services.postgresql = {
enable = true;
package = psql_15;
diff --git a/nix/ext/tests/pgmq.nix b/nix/ext/tests/pgmq.nix
index 3e2dc7f9..eac0c350 100644
--- a/nix/ext/tests/pgmq.nix
+++ b/nix/ext/tests/pgmq.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,7 +12,7 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -27,7 +27,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -41,18 +41,21 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
- name = "timescaledb";
- hostPkgs = pkgs;
+pkgs.testers.runNixOSTest {
+ name = "pgmq";
nodes.server =
{ config, ... }:
{
services.postgresql = {
enable = true;
- package = (postgresqlWithExtension psql_15);
+ package = psql_15;
authentication = ''
local all postgres peer map=postgres
local all all peer map=root
diff --git a/nix/ext/tests/pgroonga.nix b/nix/ext/tests/pgroonga.nix
index 4316d4a7..ee9c505c 100644
--- a/nix/ext/tests/pgroonga.nix
+++ b/nix/ext/tests/pgroonga.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,7 +12,7 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -27,7 +27,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -41,24 +41,18 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
services.openssh = {
enable = true;
};
@@ -83,11 +77,11 @@ self.inputs.nixpkgs.lib.nixos.runTest {
];
};
systemd.services.postgresql.environment.MECAB_DICDIR = "${
- self.packages.${pkgs.stdenv.hostPlatform.system}.mecab-naist-jdic
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.mecab-naist-jdic
}/lib/mecab/dic/naist-jdic";
- systemd.services.postgresql.environment.MECAB_CONFIG = "${pkgs.mecab}/bin/mecab-config";
+ systemd.services.postgresql.environment.MECAB_CONFIG = "${pkgs.pkgsLinux.mecab}/bin/mecab-config";
systemd.services.postgresql.environment.GRN_PLUGINS_DIR = "${
- self.packages.${pkgs.stdenv.hostPlatform.system}.supabase-groonga
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.supabase-groonga
}/lib/groonga/plugins";
specialisation.postgresql17.configuration = {
diff --git a/nix/ext/tests/pgrouting.nix b/nix/ext/tests/pgrouting.nix
index 5a023d5c..845246d8 100644
--- a/nix/ext/tests/pgrouting.nix
+++ b/nix/ext/tests/pgrouting.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,16 +12,17 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
postgresql.lib
(installedExtension majorVersion)
- (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.postgis)
+ (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.postgis
+ )
]
++ lib.optional (postgresql.isOrioleDB) (
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb
);
passthru = {
inherit (postgresql) version psqlSchema;
@@ -31,7 +32,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -46,24 +47,14 @@ let
in
pkg;
pg_regress = pkgs.callPackage ../pg_regress.nix {
- postgresql = self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ postgresql = self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
};
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
services.openssh = {
enable = true;
};
@@ -73,13 +64,15 @@ self.inputs.nixpkgs.lib.nixos.runTest {
services.postgresql = {
enable = true;
- package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ package =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
};
specialisation.postgresql17.configuration = {
services.postgresql = {
package = lib.mkForce (
- postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17
+ postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17
);
};
@@ -96,10 +89,10 @@ self.inputs.nixpkgs.lib.nixos.runTest {
let
oldPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
newPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}";
newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}";
in
@@ -124,7 +117,8 @@ self.inputs.nixpkgs.lib.nixos.runTest {
specialisation.orioledb17.configuration = {
services.postgresql = {
package = lib.mkForce (
- postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17
);
settings = {
shared_preload_libraries = "orioledb";
@@ -155,7 +149,7 @@ self.inputs.nixpkgs.lib.nixos.runTest {
let
newPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17;
in
''
set -x
diff --git a/nix/ext/tests/pgsodium.nix b/nix/ext/tests/pgsodium.nix
index 00a2bf44..4d296280 100644
--- a/nix/ext/tests/pgsodium.nix
+++ b/nix/ext/tests/pgsodium.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,13 +12,14 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
postgresql.lib
(installedExtension majorVersion)
- (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.hypopg)
+ (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.hypopg
+ )
];
passthru = {
inherit (postgresql) version psqlSchema;
@@ -28,7 +29,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -48,25 +49,16 @@ let
''
);
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
-
services.postgresql = {
enable = true;
- package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ package =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
settings = {
"shared_preload_libraries" = pname;
"pgsodium.getkey_script" = pgsodiumGetKey;
@@ -76,7 +68,7 @@ self.inputs.nixpkgs.lib.nixos.runTest {
specialisation.postgresql17.configuration = {
services.postgresql = {
package = lib.mkForce (
- postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17
+ postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17
);
};
@@ -93,10 +85,10 @@ self.inputs.nixpkgs.lib.nixos.runTest {
let
oldPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
newPostgresql =
postgresqlWithExtension
- self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}";
newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}";
in
diff --git a/nix/ext/tests/plpgsql_check.nix b/nix/ext/tests/plpgsql_check.nix
index 3beac0c7..e4b381fe 100644
--- a/nix/ext/tests/plpgsql_check.nix
+++ b/nix/ext/tests/plpgsql_check.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,7 +12,7 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -27,7 +27,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -41,24 +41,18 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
services.openssh = {
enable = true;
};
diff --git a/nix/ext/tests/plv8.nix b/nix/ext/tests/plv8.nix
index 91d7d29d..381cbcae 100644
--- a/nix/ext/tests/plv8.nix
+++ b/nix/ext/tests/plv8.nix
@@ -5,7 +5,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -13,7 +13,7 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -28,7 +28,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -42,30 +42,24 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
services.openssh = {
enable = true;
};
services.postgresql = {
enable = true;
- package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ package =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
authentication = ''
local all postgres peer map=postgres
local all all peer map=root
diff --git a/nix/ext/tests/postgis.nix b/nix/ext/tests/postgis.nix
new file mode 100644
index 00000000..d7b8ccb3
--- /dev/null
+++ b/nix/ext/tests/postgis.nix
@@ -0,0 +1,158 @@
+{ self, pkgs }:
+let
+ pname = "postgis";
+ inherit (pkgs) lib;
+ installedExtension =
+ postgresMajorVersion:
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ pname
+ }";
+ versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
+ postgresqlWithExtension =
+ postgresql:
+ let
+ majorVersion = lib.versions.major postgresql.version;
+ pkg = pkgs.pkgsLinux.buildEnv {
+ name = "postgresql-${majorVersion}-${pname}";
+ paths = [
+ postgresql
+ postgresql.lib
+ (installedExtension majorVersion)
+ ];
+ passthru = {
+ inherit (postgresql) version psqlSchema;
+ installedExtensions = [ (installedExtension majorVersion) ];
+ lib = pkg;
+ withPackages = _: pkg;
+ withJIT = pkg;
+ withoutJIT = pkg;
+ };
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
+ pathsToLink = [
+ "/"
+ "/bin"
+ "/lib"
+ ];
+ postBuild = ''
+ wrapProgram $out/bin/postgres --set NIX_PGLIBDIR $out/lib
+ wrapProgram $out/bin/pg_ctl --set NIX_PGLIBDIR $out/lib
+ wrapProgram $out/bin/pg_upgrade --set NIX_PGLIBDIR $out/lib
+ '';
+ };
+ in
+ pkg;
+in
+pkgs.testers.runNixOSTest {
+ name = pname;
+ nodes.server =
+ { config, ... }:
+ {
+ services.openssh = {
+ enable = true;
+ };
+
+ services.postgresql = {
+ enable = true;
+ package =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ };
+
+ specialisation.postgresql17.configuration = {
+ services.postgresql = {
+ package = lib.mkForce (
+ postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17
+ );
+ };
+
+ systemd.services.postgresql-migrate = {
+ serviceConfig = {
+ Type = "oneshot";
+ RemainAfterExit = true;
+ User = "postgres";
+ Group = "postgres";
+ StateDirectory = "postgresql";
+ WorkingDirectory = "${builtins.dirOf config.services.postgresql.dataDir}";
+ };
+ script =
+ let
+ oldPostgresql =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ newPostgresql =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
+ oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}";
+ newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}";
+ in
+ ''
+ if [[ ! -d ${newDataDir} ]]; then
+ install -d -m 0700 -o postgres -g postgres "${newDataDir}"
+ ${newPostgresql}/bin/initdb -D "${newDataDir}"
+ ${newPostgresql}/bin/pg_upgrade --old-datadir "${oldDataDir}" --new-datadir "${newDataDir}" \
+ --old-bindir "${oldPostgresql}/bin" --new-bindir "${newPostgresql}/bin"
+ else
+ echo "${newDataDir} already exists"
+ fi
+ '';
+ };
+
+ systemd.services.postgresql = {
+ after = [ "postgresql-migrate.service" ];
+ requires = [ "postgresql-migrate.service" ];
+ };
+ };
+ };
+ testScript =
+ { nodes, ... }:
+ let
+ pg17-configuration = "${nodes.server.system.build.toplevel}/specialisation/postgresql17";
+ in
+ ''
+ versions = {
+ "15": [${lib.concatStringsSep ", " (map (s: ''"${s}"'') (versions "15"))}],
+ "17": [${lib.concatStringsSep ", " (map (s: ''"${s}"'') (versions "17"))}],
+ }
+
+ def run_sql(query):
+ return server.succeed(f"""sudo -u postgres psql -t -A -F\",\" -c \"{query}\" """).strip()
+
+ def check_upgrade_path(pg_version):
+ with subtest("Check ${pname} upgrade path"):
+ firstVersion = versions[pg_version][0]
+ server.succeed("sudo -u postgres psql -c 'DROP EXTENSION IF EXISTS ${pname};'")
+ run_sql(f"""CREATE EXTENSION ${pname} WITH VERSION '{firstVersion}' CASCADE;""")
+ installed_version = run_sql(r"""SELECT extversion FROM pg_extension WHERE extname = '${pname}';""")
+ assert installed_version == firstVersion, f"Expected ${pname} version {firstVersion}, but found {installed_version}"
+ for version in versions[pg_version][1:]:
+ run_sql(f"""ALTER EXTENSION ${pname} UPDATE TO '{version}';""")
+ installed_version = run_sql(r"""SELECT extversion FROM pg_extension WHERE extname = '${pname}';""")
+ assert installed_version == version, f"Expected ${pname} version {version}, but found {installed_version}"
+
+ start_all()
+
+ server.wait_for_unit("multi-user.target")
+ server.wait_for_unit("postgresql.service")
+
+ check_upgrade_path("15")
+
+ with subtest("Check ${pname} latest extension version"):
+ server.succeed("sudo -u postgres psql -c 'DROP EXTENSION ${pname};'")
+ server.succeed("sudo -u postgres psql -c 'CREATE EXTENSION ${pname} CASCADE;'")
+ installed_extensions=run_sql(r"""SELECT extname, extversion FROM pg_extension where extname = '${pname}';""")
+ latestVersion = versions["15"][-1]
+ assert f"${pname},{latestVersion}" in installed_extensions, f"Expected ${pname} version {latestVersion}, but found {installed_extensions}"
+
+ with subtest("switch to postgresql 17"):
+ server.succeed(
+ "${pg17-configuration}/bin/switch-to-configuration test >&2"
+ )
+
+ with subtest("Check ${pname} latest extension version after upgrade"):
+ installed_extensions=run_sql(r"""SELECT extname, extversion FROM pg_extension;""")
+ latestVersion = versions["17"][-1]
+ assert f"${pname},{latestVersion}" in installed_extensions
+
+ check_upgrade_path("17")
+ '';
+}
diff --git a/nix/ext/tests/timescaledb.nix b/nix/ext/tests/timescaledb.nix
index a98d1f5e..285ad39c 100644
--- a/nix/ext/tests/timescaledb.nix
+++ b/nix/ext/tests/timescaledb.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = (installedExtension "15").versions;
@@ -12,7 +12,7 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
@@ -27,7 +27,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -41,17 +41,18 @@ let
};
in
pkg;
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = "timescaledb";
- hostPkgs = pkgs;
nodes.server =
{ ... }:
{
services.postgresql = {
enable = true;
- package = (postgresqlWithExtension psql_15);
+ package = psql_15;
authentication = ''
local all postgres peer map=postgres
local all all peer map=root
diff --git a/nix/ext/tests/vault.nix b/nix/ext/tests/vault.nix
index 42fafaca..28ad6b62 100644
--- a/nix/ext/tests/vault.nix
+++ b/nix/ext/tests/vault.nix
@@ -4,7 +4,7 @@ let
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
- self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
+ self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
@@ -12,13 +12,14 @@ let
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
- pkg = pkgs.buildEnv {
+ pkg = pkgs.pkgsLinux.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
postgresql.lib
(installedExtension majorVersion)
- (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.pgsodium) # dependency
+ (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.pgsodium
+ ) # dependency
];
passthru = {
inherit (postgresql) version psqlSchema;
@@ -28,7 +29,7 @@ let
withJIT = pkg;
withoutJIT = pkg;
};
- nativeBuildInputs = [ pkgs.makeWrapper ];
+ nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ];
pathsToLink = [
"/"
"/bin"
@@ -47,25 +48,18 @@ let
echo 0000000000000000000000000000000000000000000000000000000000000000
''
);
- psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
- psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
+ psql_15 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15;
+ psql_17 =
+ postgresqlWithExtension
+ self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17;
in
-self.inputs.nixpkgs.lib.nixos.runTest {
+pkgs.testers.runNixOSTest {
name = pname;
- hostPkgs = pkgs;
nodes.server =
{ config, ... }:
{
- virtualisation = {
- forwardPorts = [
- {
- from = "host";
- host.port = 13022;
- guest.port = 22;
- }
- ];
- };
-
services.postgresql = {
enable = true;
package = psql_15;
diff --git a/nix/postgresql/generic.nix b/nix/postgresql/generic.nix
index a99ecad6..6eaf873a 100644
--- a/nix/postgresql/generic.nix
+++ b/nix/postgresql/generic.nix
@@ -322,7 +322,7 @@ let
tests = {
postgresql-wal-receiver = import ../../../../nixos/tests/postgresql-wal-receiver.nix {
- system = stdenv.hostPlatform.system;
+ inherit (stdenv.hostPlatform) system;
pkgs = self;
package = this;
};
@@ -330,7 +330,7 @@ let
}
// lib.optionalAttrs jitSupport {
postgresql-jit = import ../../../../nixos/tests/postgresql-jit.nix {
- system = stdenv.hostPlatform.system;
+ inherit (stdenv.hostPlatform) system;
pkgs = self;
package = this;
};
diff --git a/nix/tests/http-mock-server.py b/nix/tests/http-mock-server.py
index fedeb40a..005c892f 100644
--- a/nix/tests/http-mock-server.py
+++ b/nix/tests/http-mock-server.py
@@ -237,10 +237,16 @@ def run_server(port=None):
port_file = os.environ.get("HTTP_MOCK_PORT_FILE", "/tmp/http-mock-port")
try:
+ # Ensure directory exists (if any)
+ port_dir = os.path.dirname(port_file)
+ if port_dir:
+ os.makedirs(port_dir, exist_ok=True)
with open(port_file, "w") as f:
f.write(str(port))
- except:
- pass # Ignore if we can't write the port file
+ print(f"Port file written to {port_file}")
+ except Exception as e:
+ print(f"ERROR: Failed to write port file {port_file}: {e}")
+ raise # Don't ignore port file write errors
server.serve_forever()
except OSError as e:
[parent: 2ee1ac86b336]