diff options
| author | Stefan Kreutz <mail@skreutz.com> | 2026-04-16 15:22:51 +0200 |
|---|---|---|
| committer | Stefan Kreutz <mail@skreutz.com> | 2026-04-16 15:22:51 +0200 |
| commit | b5442f6657d4245866104989a1f75ec0a5fe06ed (patch) | |
| tree | 3c855ff8abd4fae9750a3b19c28d57ce7c092f6b | |
| parent | 4ee4e4e3e98479b98e5b92305f0ba3e6cff0c3c6 (diff) | |
| download | temp-postgres-b5442f6657d4245866104989a1f75ec0a5fe06ed.tar.gz | |
Add PostgreSQL version-specific Nix packages
| -rw-r--r-- | CHANGELOG.md | 4 | ||||
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | examples/nixos/flake.nix | 7 | ||||
| -rw-r--r-- | flake.nix | 58 |
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 @@ -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; @@ -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; |