From 298af6ba655bb7197c60503668bc126d04da594e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Roche?= Date: Mon, 22 Dec 2025 11:29:33 +0100 Subject: [PATCH 1/7] 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 ``` --- nix/checks.nix | 30 ++++++++++++++---------------- nix/ext/tests/default.nix | 15 +++++++++------ nix/ext/tests/http.nix | 13 ++++++------- nix/ext/tests/orioledb.nix | 13 ++++++------- nix/ext/tests/pg_plan_filter.nix | 17 ++++++++++------- nix/ext/tests/pg_repack.nix | 19 ++++++++++--------- nix/ext/tests/pg_safeupdate.nix | 17 ++++++++++------- nix/ext/tests/pgjwt.nix | 17 ++++++++++------- nix/ext/tests/pgmq.nix | 17 ++++++++++------- nix/ext/tests/pgroonga.nix | 21 ++++++++++++--------- nix/ext/tests/pgrouting.nix | 31 +++++++++++++++++-------------- nix/ext/tests/pgsodium.nix | 22 ++++++++++++---------- nix/ext/tests/plpgsql_check.nix | 17 ++++++++++------- nix/ext/tests/plv8.nix | 17 ++++++++++------- nix/ext/tests/timescaledb.nix | 13 +++++++------ nix/ext/tests/vault.nix | 20 ++++++++++++-------- 16 files changed, 165 insertions(+), 134 deletions(-) diff --git a/nix/checks.nix b/nix/checks.nix index a721964761..4af756f1d4 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 b0918ae22b..cc421127b5 100644 --- a/nix/ext/tests/default.nix +++ b/nix/ext/tests/default.nix @@ -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 @@ -42,7 +42,7 @@ let withoutJIT = pkg; installedExtensions = [ (installedExtension majorVersion) ]; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -56,15 +56,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; orioledb_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17; in - self.inputs.nixpkgs.lib.nixos.runTest { + pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { diff --git a/nix/ext/tests/http.nix b/nix/ext/tests/http.nix index 2879ad2ca2..cbdd45fe7a 100644 --- a/nix/ext/tests/http.nix +++ b/nix/ext/tests/http.nix @@ -13,7 +13,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 @@ -30,7 +30,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -50,9 +50,8 @@ let postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { @@ -106,7 +105,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 ); settings = ((installedExtension "17").defaultSettings or { }); }; @@ -124,10 +123,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/orioledb.nix b/nix/ext/tests/orioledb.nix index de50710b50..51407d2218 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,11 +39,10 @@ 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 = { ... }: { diff --git a/nix/ext/tests/pg_plan_filter.nix b/nix/ext/tests/pg_plan_filter.nix index f8d1c9ca63..c4ea9143a4 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,12 +41,15 @@ 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, ... }: { diff --git a/nix/ext/tests/pg_repack.nix b/nix/ext/tests/pg_repack.nix index c81e29b2d1..9308a09a8c 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,9 +42,8 @@ let in pkg; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { @@ -63,7 +62,9 @@ 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; enableTCPIP = true; authentication = '' local all postgres peer map=postgres @@ -86,7 +87,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 +104,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 4f168f8b0a..1bb0225ea5 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,12 +41,15 @@ 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, ... }: { diff --git a/nix/ext/tests/pgjwt.nix b/nix/ext/tests/pgjwt.nix index 2f0cc9efcd..ec8df64d5d 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,12 +41,15 @@ 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, ... }: { diff --git a/nix/ext/tests/pgmq.nix b/nix/ext/tests/pgmq.nix index 3e2dc7f919..99a2f672bd 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,12 +41,15 @@ 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 = "timescaledb"; - hostPkgs = pkgs; nodes.server = { config, ... }: { diff --git a/nix/ext/tests/pgroonga.nix b/nix/ext/tests/pgroonga.nix index 4316d4a720..fe1b474472 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,12 +41,15 @@ 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, ... }: { @@ -83,11 +86,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.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 5a023d5caa..469dc5b343 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,12 +47,11 @@ 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, ... }: { @@ -73,13 +73,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 +98,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 +126,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 +158,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 00a2bf44f2..4dbcf5019a 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,9 +49,8 @@ let '' ); in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { @@ -66,7 +66,9 @@ 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; settings = { "shared_preload_libraries" = pname; "pgsodium.getkey_script" = pgsodiumGetKey; @@ -76,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 ); }; @@ -93,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/plpgsql_check.nix b/nix/ext/tests/plpgsql_check.nix index 3beac0c720..0f4175417c 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,12 +41,15 @@ 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, ... }: { diff --git a/nix/ext/tests/plv8.nix b/nix/ext/tests/plv8.nix index 91d7d29d13..58bb2f9628 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,11 +42,12 @@ 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 = { ... }: { @@ -65,7 +66,9 @@ 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; authentication = '' local all postgres peer map=postgres local all all peer map=root diff --git a/nix/ext/tests/timescaledb.nix b/nix/ext/tests/timescaledb.nix index a98d1f5ebe..5a29442abb 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,11 +41,12 @@ 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 = { ... }: { diff --git a/nix/ext/tests/vault.nix b/nix/ext/tests/vault.nix index 42fafacabd..c15a469faa 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,12 +48,15 @@ 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, ... }: { From 6d6509fc6319a6fcf006f9c8ad99b556293c3185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Roche?= Date: Mon, 22 Dec 2025 11:29:33 +0100 Subject: [PATCH 2/7] chore: reduce warnings related to system Current system value has been moved into `pkgs.stdenv.hostPlatform` by https://github.com/NixOS/nixpkgs/pull/456527 --- nix/cargo-pgrx/mkPgrxExtension.nix | 2 +- nix/postgresql/generic.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nix/cargo-pgrx/mkPgrxExtension.nix b/nix/cargo-pgrx/mkPgrxExtension.nix index 0bf99e3de4..cee5eae1a8 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/postgresql/generic.nix b/nix/postgresql/generic.nix index a99ecad6d2..6eaf873aef 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; }; From 9d9bcb7a718c2213b3fdf2f64cfe1932fa6932ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Roche?= Date: Mon, 22 Dec 2025 17:00:33 +0100 Subject: [PATCH 3/7] fix: remove redundant postgresqlWithExtension wrapper in extension tests The tests were unnecessarily wrapping psql_15 with postgresqlWithExtension when psql_15 already includes the extensions. --- nix/ext/tests/pg_plan_filter.nix | 2 +- nix/ext/tests/pg_safeupdate.nix | 2 +- nix/ext/tests/pgmq.nix | 4 ++-- nix/ext/tests/timescaledb.nix | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nix/ext/tests/pg_plan_filter.nix b/nix/ext/tests/pg_plan_filter.nix index c4ea9143a4..30e1170e01 100644 --- a/nix/ext/tests/pg_plan_filter.nix +++ b/nix/ext/tests/pg_plan_filter.nix @@ -55,7 +55,7 @@ pkgs.testers.runNixOSTest { { services.postgresql = { enable = true; - package = (postgresqlWithExtension psql_15); + package = psql_15; settings = (installedExtension "15").defaultSettings or { }; }; diff --git a/nix/ext/tests/pg_safeupdate.nix b/nix/ext/tests/pg_safeupdate.nix index 1bb0225ea5..83c2b080b0 100644 --- a/nix/ext/tests/pg_safeupdate.nix +++ b/nix/ext/tests/pg_safeupdate.nix @@ -55,7 +55,7 @@ pkgs.testers.runNixOSTest { { services.postgresql = { enable = true; - package = (postgresqlWithExtension psql_15); + package = psql_15; settings = (installedExtension "15").defaultSettings or { }; }; diff --git a/nix/ext/tests/pgmq.nix b/nix/ext/tests/pgmq.nix index 99a2f672bd..eac0c350d0 100644 --- a/nix/ext/tests/pgmq.nix +++ b/nix/ext/tests/pgmq.nix @@ -49,13 +49,13 @@ let self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; in pkgs.testers.runNixOSTest { - name = "timescaledb"; + 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/timescaledb.nix b/nix/ext/tests/timescaledb.nix index 5a29442abb..285ad39ce1 100644 --- a/nix/ext/tests/timescaledb.nix +++ b/nix/ext/tests/timescaledb.nix @@ -52,7 +52,7 @@ pkgs.testers.runNixOSTest { { services.postgresql = { enable = true; - package = (postgresqlWithExtension psql_15); + package = psql_15; authentication = '' local all postgres peer map=postgres local all all peer map=root From d0ce0ebeaeb73631ce68aea0ced4d11d9f81de00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Roche?= Date: Mon, 22 Dec 2025 18:06:59 +0100 Subject: [PATCH 4/7] fix: remove port forwarding from test configurations This cause problem starting nixos tests on darwin hosts. --- nix/ext/tests/default.nix | 9 -- nix/ext/tests/http.nix | 9 -- nix/ext/tests/orioledb.nix | 9 -- nix/ext/tests/pg_repack.nix | 9 -- nix/ext/tests/pgjwt.nix | 10 -- nix/ext/tests/pgroonga.nix | 9 -- nix/ext/tests/pgrouting.nix | 9 -- nix/ext/tests/pgsodium.nix | 10 -- nix/ext/tests/plpgsql_check.nix | 9 -- nix/ext/tests/plv8.nix | 9 -- nix/ext/tests/postgis.nix | 160 ++++++++++++++++++++++++++++++++ nix/ext/tests/vault.nix | 10 -- 12 files changed, 160 insertions(+), 102 deletions(-) create mode 100644 nix/ext/tests/postgis.nix diff --git a/nix/ext/tests/default.nix b/nix/ext/tests/default.nix index cc421127b5..8c1fdd24c0 100644 --- a/nix/ext/tests/default.nix +++ b/nix/ext/tests/default.nix @@ -71,15 +71,6 @@ let nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; diff --git a/nix/ext/tests/http.nix b/nix/ext/tests/http.nix index cbdd45fe7a..93b732a8f4 100644 --- a/nix/ext/tests/http.nix +++ b/nix/ext/tests/http.nix @@ -55,15 +55,6 @@ pkgs.testers.runNixOSTest { nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; diff --git a/nix/ext/tests/orioledb.nix b/nix/ext/tests/orioledb.nix index 51407d2218..bb1a3125f1 100644 --- a/nix/ext/tests/orioledb.nix +++ b/nix/ext/tests/orioledb.nix @@ -46,15 +46,6 @@ pkgs.testers.runNixOSTest { nodes.server = { ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; diff --git a/nix/ext/tests/pg_repack.nix b/nix/ext/tests/pg_repack.nix index 9308a09a8c..7ca0da128d 100644 --- a/nix/ext/tests/pg_repack.nix +++ b/nix/ext/tests/pg_repack.nix @@ -47,15 +47,6 @@ pkgs.testers.runNixOSTest { nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; diff --git a/nix/ext/tests/pgjwt.nix b/nix/ext/tests/pgjwt.nix index ec8df64d5d..39fcd18f66 100644 --- a/nix/ext/tests/pgjwt.nix +++ b/nix/ext/tests/pgjwt.nix @@ -53,16 +53,6 @@ pkgs.testers.runNixOSTest { 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/pgroonga.nix b/nix/ext/tests/pgroonga.nix index fe1b474472..3a7a0e78e4 100644 --- a/nix/ext/tests/pgroonga.nix +++ b/nix/ext/tests/pgroonga.nix @@ -53,15 +53,6 @@ pkgs.testers.runNixOSTest { nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; diff --git a/nix/ext/tests/pgrouting.nix b/nix/ext/tests/pgrouting.nix index 469dc5b343..845246d8e6 100644 --- a/nix/ext/tests/pgrouting.nix +++ b/nix/ext/tests/pgrouting.nix @@ -55,15 +55,6 @@ pkgs.testers.runNixOSTest { nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; diff --git a/nix/ext/tests/pgsodium.nix b/nix/ext/tests/pgsodium.nix index 4dbcf5019a..4d2962803e 100644 --- a/nix/ext/tests/pgsodium.nix +++ b/nix/ext/tests/pgsodium.nix @@ -54,16 +54,6 @@ pkgs.testers.runNixOSTest { nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; - services.postgresql = { enable = true; package = diff --git a/nix/ext/tests/plpgsql_check.nix b/nix/ext/tests/plpgsql_check.nix index 0f4175417c..e4b381fee3 100644 --- a/nix/ext/tests/plpgsql_check.nix +++ b/nix/ext/tests/plpgsql_check.nix @@ -53,15 +53,6 @@ pkgs.testers.runNixOSTest { 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 58bb2f9628..381cbcae48 100644 --- a/nix/ext/tests/plv8.nix +++ b/nix/ext/tests/plv8.nix @@ -51,15 +51,6 @@ pkgs.testers.runNixOSTest { nodes.server = { ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; diff --git a/nix/ext/tests/postgis.nix b/nix/ext/tests/postgis.nix new file mode 100644 index 0000000000..bc168c5063 --- /dev/null +++ b/nix/ext/tests/postgis.nix @@ -0,0 +1,160 @@ +{ 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] + majMinVersion = ".".join(latestVersion.split('.')[:1]) + assert f"${pname},{majMinVersion}" 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] + majMinVersion = ".".join(latestVersion.split('.')[:1]) + assert f"${pname},{majMinVersion}" in installed_extensions + + check_upgrade_path("17") + ''; +} diff --git a/nix/ext/tests/vault.nix b/nix/ext/tests/vault.nix index c15a469faa..28ad6b6298 100644 --- a/nix/ext/tests/vault.nix +++ b/nix/ext/tests/vault.nix @@ -60,16 +60,6 @@ pkgs.testers.runNixOSTest { nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; - services.postgresql = { enable = true; package = psql_15; From c92dbc7c72792a3d5dd30f1974ab44d4ca9e0279 Mon Sep 17 00:00:00 2001 From: Yvan Sraka Date: Wed, 28 Jan 2026 17:08:44 +0100 Subject: [PATCH 5/7] 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 --- nix/ext/tests/default.nix | 11 ++-- nix/ext/tests/http.nix | 90 +++++++++++++++++++++++++++++---- nix/ext/tests/index_advisor.nix | 39 +++++++------- nix/ext/tests/pgroonga.nix | 2 +- nix/tests/http-mock-server.py | 8 ++- 5 files changed, 111 insertions(+), 39 deletions(-) diff --git a/nix/ext/tests/default.nix b/nix/ext/tests/default.nix index 8c1fdd24c0..6b02f1562d 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; @@ -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; @@ -64,7 +64,7 @@ let 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 pkgs.testers.runNixOSTest { name = pname; @@ -147,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 { }) @@ -185,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 93b732a8f4..edc2d31681 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; @@ -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) ]; @@ -44,11 +45,15 @@ 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 pkgs.testers.runNixOSTest { name = pname; @@ -61,7 +66,9 @@ pkgs.testers.runNixOSTest { 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 @@ -79,20 +86,36 @@ pkgs.testers.runNixOSTest { ]; 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 ( @@ -142,7 +165,8 @@ pkgs.testers.runNixOSTest { 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 { }) @@ -165,7 +189,6 @@ pkgs.testers.runNixOSTest { 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; '' ); }; @@ -184,7 +207,7 @@ pkgs.testers.runNixOSTest { 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 @@ -233,8 +256,37 @@ pkgs.testers.runNixOSTest { 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() @@ -259,6 +311,14 @@ pkgs.testers.runNixOSTest { 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) @@ -279,6 +339,14 @@ pkgs.testers.runNixOSTest { 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 564ec350bc..b936cb0369 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/pgroonga.nix b/nix/ext/tests/pgroonga.nix index 3a7a0e78e4..ee9c505c42 100644 --- a/nix/ext/tests/pgroonga.nix +++ b/nix/ext/tests/pgroonga.nix @@ -79,7 +79,7 @@ pkgs.testers.runNixOSTest { systemd.services.postgresql.environment.MECAB_DICDIR = "${ 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.pkgsLinux.stdenv.hostPlatform.system}.supabase-groonga }/lib/groonga/plugins"; diff --git a/nix/tests/http-mock-server.py b/nix/tests/http-mock-server.py index fedeb40ade..85d62cb7fc 100644 --- a/nix/tests/http-mock-server.py +++ b/nix/tests/http-mock-server.py @@ -237,10 +237,14 @@ def run_server(port=None): port_file = os.environ.get("HTTP_MOCK_PORT_FILE", "/tmp/http-mock-port") try: + # Ensure directory exists + os.makedirs(os.path.dirname(port_file), 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 e # Don't ignore port file write errors server.serve_forever() except OSError as e: From 21b8de2290ad1df972cf9a9d92943a5e95ad4f8e Mon Sep 17 00:00:00 2001 From: Yvan Sraka Date: Wed, 4 Feb 2026 00:13:41 +0100 Subject: [PATCH 6/7] 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 --- nix/tests/http-mock-server.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/nix/tests/http-mock-server.py b/nix/tests/http-mock-server.py index 85d62cb7fc..005c892f25 100644 --- a/nix/tests/http-mock-server.py +++ b/nix/tests/http-mock-server.py @@ -237,14 +237,16 @@ def run_server(port=None): port_file = os.environ.get("HTTP_MOCK_PORT_FILE", "/tmp/http-mock-port") try: - # Ensure directory exists - os.makedirs(os.path.dirname(port_file), exist_ok=True) + # 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)) print(f"Port file written to {port_file}") except Exception as e: print(f"ERROR: Failed to write port file {port_file}: {e}") - raise e # Don't ignore port file write errors + raise # Don't ignore port file write errors server.serve_forever() except OSError as e: From d49edf44cc44916225f35fbf52fad0fbc41e1ec6 Mon Sep 17 00:00:00 2001 From: Yvan Sraka Date: Wed, 4 Feb 2026 00:13:34 +0100 Subject: [PATCH 7/7] 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. --- nix/ext/tests/postgis.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/nix/ext/tests/postgis.nix b/nix/ext/tests/postgis.nix index bc168c5063..d7b8ccb3bd 100644 --- a/nix/ext/tests/postgis.nix +++ b/nix/ext/tests/postgis.nix @@ -141,8 +141,7 @@ pkgs.testers.runNixOSTest { 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] - majMinVersion = ".".join(latestVersion.split('.')[:1]) - assert f"${pname},{majMinVersion}" in installed_extensions, f"Expected ${pname} version {latestVersion}, but found {installed_extensions}" + assert f"${pname},{latestVersion}" in installed_extensions, f"Expected ${pname} version {latestVersion}, but found {installed_extensions}" with subtest("switch to postgresql 17"): server.succeed( @@ -152,8 +151,7 @@ pkgs.testers.runNixOSTest { with subtest("Check ${pname} latest extension version after upgrade"): installed_extensions=run_sql(r"""SELECT extname, extversion FROM pg_extension;""") latestVersion = versions["17"][-1] - majMinVersion = ".".join(latestVersion.split('.')[:1]) - assert f"${pname},{majMinVersion}" in installed_extensions + assert f"${pname},{latestVersion}" in installed_extensions check_upgrade_path("17") '';