aboutsummaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
authorPeter Bex <peter@more-magic.net>2023-03-19 10:06:45 +0100
committerPeter Bex <peter@more-magic.net>2023-03-19 10:46:25 +0100
commit9d05c9ca73c2b501744d528475532ab728318bde (patch)
tree66290d3bf9974ab7cf418508cc0937b838fd0343 /nix
downloadppq-9d05c9ca73c2b501744d528475532ab728318bde.tar.gz
Initial version of "ppq" - portable PostgreSQL
This allows running PostgreSQL locally without having to set up a system-wide service. It is portable in the sense that you can move the directory around, and you can run multiple instances side-by-side.
Diffstat (limited to 'nix')
-rw-r--r--nix/default.nix15
-rw-r--r--nix/pkgs.nix31
2 files changed, 46 insertions, 0 deletions
diff --git a/nix/default.nix b/nix/default.nix
new file mode 100644
index 0000000..ba8291d
--- /dev/null
+++ b/nix/default.nix
@@ -0,0 +1,15 @@
+{
+ system ? builtins.currentSystem,
+ pkgs ? import ./pkgs.nix { inherit system; }
+}:
+let
+ lib = pkgs.lib;
+ shell = pkgs.mkShell {
+ name = "portable-postgresql";
+ buildInputs = with pkgs; [
+ ppq_postgresql
+ ];
+ };
+in {
+ inherit shell pkgs;
+}
diff --git a/nix/pkgs.nix b/nix/pkgs.nix
new file mode 100644
index 0000000..cd15894
--- /dev/null
+++ b/nix/pkgs.nix
@@ -0,0 +1,31 @@
+{
+ system ? builtins.currentSystem,
+ nixpkgs ? builtins.fetchTarball {
+ url = "https://github.com/NixOS/nixpkgs/archive/22.11.tar.gz";
+ sha256 = "11w3wn2yjhaa5pv20gbfbirvjq6i3m7pqrq2msf0g7cv44vijwgw";
+ }
+}:
+let
+ # use the first version in the list for each component
+ getMajorVersion = builtins.getEnv "PPQ_POSTGRES_VERSION";
+
+ overlay = self: super: {
+ # NOTE: Overlaying `postgresql` is not possible anymore, leads to
+ # error: infinite recursion encountered
+ #
+ # TODO: Make extension packages more easily configurable. For now
+ # just load whatever we've ever needed.
+ ppq_postgresql = super."postgresql_${getMajorVersion}".withPackages (p: [
+ p.postgis
+ ]);
+ };
+
+ pkgs =
+ import nixpkgs {
+ inherit system;
+ overlays = [
+ overlay
+ ];
+ };
+in
+pkgs