summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kreutz <mail@skreutz.com>2026-04-16 15:22:51 +0200
committerStefan Kreutz <mail@skreutz.com>2026-04-16 15:22:51 +0200
commitb5442f6657d4245866104989a1f75ec0a5fe06ed (patch)
tree3c855ff8abd4fae9750a3b19c28d57ce7c092f6b
parent4ee4e4e3e98479b98e5b92305f0ba3e6cff0c3c6 (diff)
downloadtemp-postgres-b5442f6657d4245866104989a1f75ec0a5fe06ed.tar.gz
Add PostgreSQL version-specific Nix packages
-rw-r--r--CHANGELOG.md4
-rw-r--r--README.md6
-rw-r--r--examples/nixos/flake.nix7
-rw-r--r--flake.nix58
4 files changed, 54 insertions, 21 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6d61e20..2ddeb67 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,10 @@ The format is based on [Keep A Changelog][] and this project adheres to [Semanti
## Unreleased
+### Added
+
+* Added PostgreSQL version-specific packages to Nix flake
+
## [0.3.0] - 2026-04-16
### Added
diff --git a/README.md b/README.md
index 07aae60..599c083 100644
--- a/README.md
+++ b/README.md
@@ -96,6 +96,12 @@ Alternatively you can run or install the experimental Nix flake:
nix run git+https://git.skreutz.com/temp-postgres.git -- --help
```
+You can optionally select the PostgreSQL version provided by Nixpkgs:
+
+```sh
+nix run git+https://git.skreutz.com/temp-postgres.git#temp-postgres_18 -- --help
+```
+
Try using Nix' `--refresh` flag, or adding `?ref=main&shallow=0` to the URL if you experience caching issues.
See the [NixOS example](./examples/nixos) for how to install `temp-postgres` on NixOS using Nix flakes.
diff --git a/examples/nixos/flake.nix b/examples/nixos/flake.nix
index f97422c..78bc39a 100644
--- a/examples/nixos/flake.nix
+++ b/examples/nixos/flake.nix
@@ -29,7 +29,12 @@
modules = [
# The following goes typically into ./configuration.nix
{
- environment.systemPackages = [ inputs.temp-postgres.packages.${system}.default ];
+ environment.systemPackages = [
+ inputs.temp-postgres.packages.${system}.default
+
+ # Optionally select the PostgreSQL version provided by Nixpkgs.
+ #inputs.temp-postgres.packages.${system}.temp-postgres_18
+ ];
users.users.stefan = {
isNormalUser = true;
diff --git a/flake.nix b/flake.nix
index 7b2eb9c..2076939 100644
--- a/flake.nix
+++ b/flake.nix
@@ -30,28 +30,46 @@
let
version = builtins.head (lib.splitString "\n" (builtins.readFile ./version));
revision = lib.toString (self.shortRev or self.dirtyShortRev or "unknown");
+ mkPackage =
+ {
+ postgresql,
+ suffix ? "",
+ }:
+ pkgs.stdenv.mkDerivation {
+ name = "temp-postgres-${version}-${revision}${suffix}";
+ version = "${version}-${revision}";
+ src = lib.cleanSource (
+ builtins.path {
+ path = ./.;
+ name = "temp-postgres";
+ }
+ );
+ nativeBuildInputs = [ pkgs.makeBinaryWrapper ];
+ installPhase = ''
+ mkdir -p $out/bin
+ cp temp-postgres.sh $out/bin/temp-postgres
+ mkdir -p $out/man/man1
+ cp temp-postgres.1 $out/man/man1/temp-postgres.1
+ wrapProgram $out/bin/temp-postgres --prefix PATH : ${lib.makeBinPath [ postgresql ]}
+ '';
+ };
+ postgresqlVersions = lib.mapAttrs' (
+ name: drv:
+ let
+ postgresqlVersion = lib.removePrefix "postgresql_" name;
+ in
+ lib.nameValuePair "temp-postgres_${postgresqlVersion}" (mkPackage {
+ postgresql = drv;
+ suffix = "_${postgresqlVersion}";
+ })
+ ) pkgs.postgresqlVersions;
in
{
- packages.default = self'.packages.temp-postgres;
-
- packages.temp-postgres = pkgs.stdenv.mkDerivation {
- name = "temp-postgres-${version}-${revision}";
- version = "${version}-${revision}";
- src = lib.cleanSource (
- builtins.path {
- path = ./.;
- name = "temp-postgres";
- }
- );
- nativeBuildInputs = [ pkgs.makeBinaryWrapper ];
- installPhase = ''
- mkdir -p $out/bin
- cp temp-postgres.sh $out/bin/temp-postgres
- mkdir -p $out/man/man1
- cp temp-postgres.1 $out/man/man1/temp-postgres.1
- wrapProgram $out/bin/temp-postgres --prefix PATH : ${lib.makeBinPath [ pkgs.postgresql ]}
- '';
- };
+ packages = {
+ default = self'.packages.temp-postgres;
+ temp-postgres = mkPackage { postgresql = pkgs.postgresql; };
+ }
+ // postgresqlVersions;
formatter = pkgs.nixfmt-tree;
Generated by cgit. See skreutz.com for my tech blog and contact information.