refactor: move to nixpkgs 25.05

This commit is contained in:
2025-06-30 20:43:38 +00:00
parent 5e112f5df8
commit f7fda629f5
4 changed files with 142 additions and 155 deletions

View File

@@ -87,7 +87,7 @@ let
preBuildAndTest = '' preBuildAndTest = ''
export PGRX_HOME=$(mktemp -d) export PGRX_HOME=$(mktemp -d)
export PGDATA="$PGRX_HOME/data-${pgrxPostgresMajor}/" export PGDATA="$PGRX_HOME/data-${pgrxPostgresMajor}/"
cargo-pgrx pgrx init "--pg${pgrxPostgresMajor}" ${lib.getDev postgresql}/bin/pg_config cargo-pgrx pgrx init "--pg${pgrxPostgresMajor}" ${postgresql.pg_config}/bin/pg_config
echo "unix_socket_directories = '$(mktemp -d)'" > "$PGDATA/postgresql.conf" echo "unix_socket_directories = '$(mktemp -d)'" > "$PGDATA/postgresql.conf"
# This is primarily for Mac or other Nix systems that don't use the nixbld user. # This is primarily for Mac or other Nix systems that don't use the nixbld user.
@@ -121,7 +121,7 @@ let
PGRX_BUILD_FLAGS="--frozen -j $NIX_BUILD_CORES ${builtins.concatStringsSep " " cargoBuildFlags}" \ PGRX_BUILD_FLAGS="--frozen -j $NIX_BUILD_CORES ${builtins.concatStringsSep " " cargoBuildFlags}" \
${lib.optionalString stdenv.hostPlatform.isDarwin ''RUSTFLAGS="''${RUSTFLAGS:+''${RUSTFLAGS} }-Clink-args=-Wl,-undefined,dynamic_lookup"''} \ ${lib.optionalString stdenv.hostPlatform.isDarwin ''RUSTFLAGS="''${RUSTFLAGS:+''${RUSTFLAGS} }-Clink-args=-Wl,-undefined,dynamic_lookup"''} \
cargo pgrx package \ cargo pgrx package \
--pg-config ${lib.getDev postgresql}/bin/pg_config \ --pg-config ${postgresql.pg_config}/bin/pg_config \
${maybeDebugFlag} \ ${maybeDebugFlag} \
--features "${builtins.concatStringsSep " " buildFeatures}" \ --features "${builtins.concatStringsSep " " buildFeatures}" \
--out-dir "$out" --out-dir "$out"

View File

@@ -57,7 +57,7 @@
# hooks run, this needs to be run in an override of `mkDerivation` and not in a setup hook. # hooks run, this needs to be run in an override of `mkDerivation` and not in a setup hook.
{ {
lib, lib,
stdenv, clangStdenv,
postgresql, postgresql,
nix-update-script, nix-update-script,
}: args: let }: args: let
@@ -75,7 +75,7 @@
)); ));
}; };
buildInputs = [postgresql] ++ prevAttrs.buildInputs or []; buildInputs = [postgresql postgresql.pg_config] ++ prevAttrs.buildInputs or [];
installFlags = installFlags =
[ [
@@ -137,4 +137,4 @@
+ prevAttrs.postInstall or ""; + prevAttrs.postInstall or "";
}; };
in in
stdenv.mkDerivation (lib.extends buildPostgresqlExtension (lib.toFunction args)) clangStdenv.mkDerivation (lib.extends buildPostgresqlExtension (lib.toFunction args))

25
flake.lock generated
View File

@@ -2,32 +2,16 @@
"nodes": { "nodes": {
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1738435198, "lastModified": 1751211869,
"narHash": "sha256-5+Hmo4nbqw8FrW85FlNm4IIrRnZ7bn0cmXlScNsNRLo=", "narHash": "sha256-1Cu92i1KSPbhPCKxoiVG5qnoRiKTgR5CcGSRyLpOd7Y=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "f6687779bf4c396250831aa5a32cbfeb85bb07a3", "rev": "b43c397f6c213918d6cfe6e3550abfe79b5d1c51",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-24.11", "ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1739451785,
"narHash": "sha256-3ebRdThRic9bHMuNi2IAA/ek9b32bsy8F5R4SvGTIog=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1128e89fd5e11bb25aedbfc287733c6502202ea9",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@@ -35,7 +19,6 @@
"root": { "root": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
} }
}, },

222
flake.nix
View File

@@ -1,8 +1,7 @@
{ {
description = "yukkop's nix utilities"; description = "yukkop's nix utilities";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
rust-overlay = { rust-overlay = {
url = "github:oxalica/rust-overlay"; url = "github:oxalica/rust-overlay";
inputs = { inputs = {
@@ -15,7 +14,6 @@
self, self,
nixpkgs, nixpkgs,
rust-overlay, rust-overlay,
nixpkgs-unstable,
}: let }: let
lib = nixpkgs.lib; lib = nixpkgs.lib;
@@ -68,6 +66,82 @@
''; '';
preInstall = ''mkdir $out''; preInstall = ''mkdir $out'';
}; };
buildPgrxExtension = pkgs:
pkgs.callPackage (import (builtins.path {
name = "extension-builder";
path = ./buildPgrxExtension.nix;
})) {
cargo-pgrx = pkgs.cargo-pgrx_0_12_6;
inherit (pkgs.darwin.apple_sdk.frameworks) Security;
};
buildSmtpExt = pkgs: versionSuffix: let
postgresql = pkgs."postgresql_${versionSuffix}";
src = pkgs.fetchFromGitHub {
owner = "brianpursley";
repo = "pg_smtp_client";
rev = "6ff3b71e3705e0d4081a51c21ca0379e869ba5fb";
hash = "sha256-wC/2rAsSDO83UITaFhtaf3do3aaOAko4gnKUOzwURc8=";
};
cargo = self.lib.cargoToml src;
in
buildPgrxExtension pkgs {
pname = cargo.package.name;
version = cargo.package.version;
inherit src postgresql;
buildInputs = with pkgs; [ openssl ];
cargoHash = "sha256-Cg5qY4TKkSJRSAtlFbjIRhea0dXPLEyasi5n09HcYeo=";
doCheck = false;
};
buildPlShExt = pkgs: versionSuffix: let
version = "4.0";
in buildPostgresqlExtension pkgs {
postgresql = pkgs."postgresql_${versionSuffix}";
} {
pname = "plsh";
inherit version;
src = pkgs.fetchFromGitHub {
owner = "petere";
repo = "plsh";
rev = "d88079617309974f71b3f8e4d5f96869dba66835";
hash = "sha256-H9B5L+yIjjVNhnuF+bIZKyCrOqfIvu5W26aqyqL5UdQ=";
};
nativeBuildInputs = with pkgs; [ pkg-config ];
};
buildPlHaskellExt = pkgs: versionSuffix: let
version = "4.0";
in buildPostgresqlExtension pkgs {
postgresql = pkgs."postgresql_${versionSuffix}";
} {
pname = "plhaskell";
inherit version;
src = pkgs.fetchFromGitHub {
owner = "ed-o-saurus";
repo = "PLHaskell";
rev = "d917f0991a455cf0558c2036e360ba1a9b40a8ef";
hash = "sha256-+sJmR/SCMfxxExa7GZuNmWez1dfhvlM9qOdO9gHNf74=";
};
nativeBuildInputs = with pkgs; [pkg-config curl ghc haskellPackages.hsc2hs haskellPackages.HSFFIG];
};
buildHttpExt = pkgs: versionSuffix: let
version = "1.6.1";
in buildPostgresqlExtension pkgs {
postgresql = pkgs."postgresql_${versionSuffix}";
} {
pname = "http";
inherit version;
src = pkgs.fetchFromGitHub {
owner = "pramsey";
repo = "pgsql-http";
rev = "v${version}";
hash = "sha256-C8eqi0q1dnshUAZjIsZFwa5FTYc7vmATF3vv2CReWPM=";
};
nativeBuildInputs = with pkgs; [pkg-config curl];
};
dotEnv = builtins.getEnv "DOTENV"; dotEnv = builtins.getEnv "DOTENV";
minorEnvironment = minorEnvironment =
@@ -84,7 +158,6 @@
system, system,
pkgs, pkgs,
}: let }: let
pkgs-unstable = import nixpkgs-unstable { inherit system; };
in { in {
packages.${system} = let packages.${system} = let
rust = { rust = {
@@ -157,9 +230,21 @@
pg_wdumpall = pkgs.callPackage ./package/postgres/pg_wdumpall.nix rust.commonArgs; pg_wdumpall = pkgs.callPackage ./package/postgres/pg_wdumpall.nix rust.commonArgs;
pg_wdump = pkgs.callPackage ./package/postgres/pg_wdump.nix rust.commonArgs; pg_wdump = pkgs.callPackage ./package/postgres/pg_wdump.nix rust.commonArgs;
pg-migration = pkgs.callPackage ./package/postgres/pg-migration/default.nix rust.commonArgs; pg-migration = pkgs.callPackage ./package/postgres/pg-migration/default.nix rust.commonArgs;
pg-15-hemar = buildHemarExt pkgs "15"; pg-17-ext-hemar = buildHemarExt pkgs "17";
pg-16-hemar = buildHemarExt pkgs "16"; pg-17-ext-http = buildHttpExt pkgs "17";
pg-17-hemar = buildHemarExt pkgs "17"; pg-17-ext-smtp-client = buildSmtpExt pkgs "17";
pg-17-ext-plhaskell = buildPlHaskellExt pkgs "17";
pg-17-ext-plsh = buildPlShExt pkgs "17";
pg-16-ext-hemar = buildHemarExt pkgs "16";
pg-16-ext-http = buildHttpExt pkgs "16";
pg-16-ext-smtp-client = buildSmtpExt pkgs "16";
pg-16-ext-plhaskell = buildPlHaskellExt pkgs "16";
pg-16-ext-plsh = buildPlShExt pkgs "16";
pg-15-ext-hemar = buildHemarExt pkgs "15";
pg-15-ext-http = buildHttpExt pkgs "15";
pg-15-ext-smtp-client = buildSmtpExt pkgs "15";
pg-15-ext-plhaskell = buildPlHaskellExt pkgs "15";
pg-15-ext-plsh = buildPlShExt pkgs "15";
c-hectic = pkgs.callPackage ./package/c/hectic/default.nix {}; c-hectic = pkgs.callPackage ./package/c/hectic/default.nix {};
watch = pkgs.callPackage ./package/c/watch/default.nix {}; watch = pkgs.callPackage ./package/c/watch/default.nix {};
}; };
@@ -172,20 +257,20 @@
PAGER = "${self.packages.${system}.nvim-pager}/bin/pager"; PAGER = "${self.packages.${system}.nvim-pager}/bin/pager";
}; };
postgres-c = pkgs.mkShell { postgres-c = pkgs.mkShell {
buildInputs = (with pkgs; [ inotify-tools postgresql_15 ]) ++ (with self.packages.${system}; [ nvim-pager ]) ++ (with pkgs-unstable; [ gdb gcc ]); buildInputs = (with pkgs; [ inotify-tools postgresql_15 ]) ++ (with self.packages.${system}; [ nvim-pager ]) ++ (with pkgs; [ gdb gcc ]);
PAGER = "${self.packages.${system}.nvim-pager}/bin/pager"; PAGER = "${self.packages.${system}.nvim-pager}/bin/pager";
shellHook = '' shellHook = ''
export PATH=${pkgs-unstable.gcc}/bin:$PATH export PATH=${pkgs.gcc}/bin:$PATH
export PAGER="${self.packages.${system}.nvim-pager}/bin/pager" export PAGER="${self.packages.${system}.nvim-pager}/bin/pager"
''; '';
}; };
pure-c = pkgs.mkShell { pure-c = pkgs.mkShell {
buildInputs = (with pkgs; [ inotify-tools ]) ++ (with self.packages.${system}; [ nvim-pager ]) ++ (with pkgs-unstable; [ gdb gcc binutils ]); buildInputs = (with pkgs; [ inotify-tools ]) ++ (with self.packages.${system}; [ nvim-pager ]) ++ (with pkgs; [ gdb gcc binutils ]);
PAGER = "${self.packages.${system}.nvim-pager}/bin/pager"; PAGER = "${self.packages.${system}.nvim-pager}/bin/pager";
shellHook = '' shellHook = ''
export PATH=${pkgs-unstable.gcc}/bin:$PATH export PATH=${pkgs.gcc}/bin:$PATH
export PAGER="${self.packages.${system}.nvim-pager}/bin/pager" export PAGER="${self.packages.${system}.nvim-pager}/bin/pager"
''; '';
}; };
@@ -483,111 +568,30 @@
}; };
overlays.default = final: prev: ( overlays.default = final: prev: (
let let
pkgs-unstable = import nixpkgs-unstable { inherit (prev) system; }; hectic-packages = self.packages.${prev.system};
buildPgrxExtension =
prev.callPackage (import (builtins.path {
name = "extension-builder";
path = ./buildPgrxExtension.nix;
})) {
cargo-pgrx = pkgs-unstable.cargo-pgrx_0_12_6;
inherit (pkgs-unstable.darwin.apple_sdk.frameworks) Security;
};
buildSmtpExt = versionSuffix: let
postgresql = prev."postgresql_${versionSuffix}";
src = prev.fetchFromGitHub {
owner = "brianpursley";
repo = "pg_smtp_client";
rev = "6ff3b71e3705e0d4081a51c21ca0379e869ba5fb";
hash = "sha256-wC/2rAsSDO83UITaFhtaf3do3aaOAko4gnKUOzwURc8=";
};
cargo = self.lib.cargoToml src;
in
buildPgrxExtension {
pname = cargo.package.name;
version = cargo.package.version;
inherit src postgresql;
buildInputs = with prev; [ openssl ];
cargoHash = "sha256-AbLT7vcFV89zwZIaTC1ELat9l4UeNP8Bn9QMMOms1Co=";
doCheck = false;
};
buildPlShExt = versionSuffix: let
version = "4.0";
in buildPostgresqlExtension prev {
postgresql = prev."postgresql_${versionSuffix}";
} {
pname = "plsh";
inherit version;
src = prev.fetchFromGitHub {
owner = "petere";
repo = "plsh";
rev = "d88079617309974f71b3f8e4d5f96869dba66835";
hash = "sha256-H9B5L+yIjjVNhnuF+bIZKyCrOqfIvu5W26aqyqL5UdQ=";
};
nativeBuildInputs = with prev; [ pkg-config ];
};
buildPlHaskellExt = versionSuffix: let
version = "4.0";
in buildPostgresqlExtension prev {
postgresql = prev."postgresql_${versionSuffix}";
} {
pname = "plhaskell";
inherit version;
src = prev.fetchFromGitHub {
owner = "ed-o-saurus";
repo = "PLHaskell";
rev = "d917f0991a455cf0558c2036e360ba1a9b40a8ef";
hash = "sha256-+sJmR/SCMfxxExa7GZuNmWez1dfhvlM9qOdO9gHNf74=";
};
nativeBuildInputs = with prev; [pkg-config curl ghc haskellPackages.hsc2hs haskellPackages.HSFFIG];
};
buildHttpExt = versionSuffix: let
version = "1.6.1";
in buildPostgresqlExtension prev {
postgresql = prev."postgresql_${versionSuffix}";
} {
pname = "http";
inherit version;
src = prev.fetchFromGitHub {
owner = "pramsey";
repo = "pgsql-http";
rev = "v${version}";
hash = "sha256-C8eqi0q1dnshUAZjIsZFwa5FTYc7vmATF3vv2CReWPM=";
};
nativeBuildInputs = with prev; [pkg-config curl];
};
in { in {
hectic = self.packages.${prev.system}; hectic = hectic-packages;
postgresql_17 = prev.postgresql_17 // {pkgs = prev.postgresql_17.pkgs // { postgresql_17 = prev.postgresql_17 // {pkgs = prev.postgresql_17.pkgs // {
http = buildHttpExt "17"; http = hectic-packages.pg-17-ext-http;
pg_smtp_client = buildSmtpExt "17"; pg_smtp_client = hectic-packages.pg-17-ext-smtp-client;
plhaskell = buildPlHaskellExt "17"; plhaskell = hectic-packages.pg-17-ext-plhaskell;
plsh = buildPlShExt "17"; plsh = hectic-packages.pg-17-ext-plsh;
hemar = buildHemarExt prev "17"; hemar = hectic-packages.pg-17-ext-hemar;
};}; };};
postgresql_16 = prev.postgresql_16 // {pkgs = prev.postgresql_16.pkgs // { postgresql_16 = prev.postgresql_16 // {pkgs = prev.postgresql_16.pkgs // {
http = buildHttpExt "16"; http = hectic-packages.pg-16-ext-http;
pg_smtp_client = buildSmtpExt "16"; pg_smtp_client = hectic-packages.pg-16-ext-smtp-client;
plhaskell = buildPlHaskellExt "16"; plhaskell = hectic-packages.pg-16-ext-plhaskell;
hemar = buildHemarExt prev "16"; plsh = hectic-packages.pg-16-ext-plsh;
hemar = hectic-packages.pg-16-ext-hemar;
};}; };};
postgresql_15 = prev.postgresql_15 // {pkgs = prev.postgresql_15.pkgs // { postgresql_15 = prev.postgresql_15 // {pkgs = prev.postgresql_15.pkgs // {
http = buildHttpExt "15"; http = hectic-packages.pg-15-ext-http;
pg_smtp_client = buildSmtpExt "15"; pg_smtp_client = hectic-packages.pg-15-ext-smtp-client;
plhaskell = buildPlHaskellExt "15"; plhaskell = hectic-packages.pg-15-ext-plhaskell;
plsh = buildPlShExt "15"; plsh = hectic-packages.pg-15-ext-plsh;
hemar = buildHemarExt prev "15"; hemar = hectic-packages.pg-15-ext-hemar;
};};
postgresql_14 = prev.postgresql_14 // {pkgs = prev.postgresql_14.pkgs // {
http = buildHttpExt "14";
pg_smtp_client = buildSmtpExt "14";
plhaskell = buildPlHaskellExt "14";
hemar = buildHemarExt prev "14";
};}; };};
writers = let writers = let
writeC = writeC =