Add postgres spec.

pull/9/head
Joshua Potter 2023-11-26 15:44:53 -07:00
parent 87d2e8ca33
commit 638c4d62ab
5 changed files with 77 additions and 0 deletions

3
specs/postgres/runner Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
cp -r template/. "$OUT"

View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
use flake

View File

@ -0,0 +1,27 @@
# Postgres Flake Template
This is a template for constructing a working environment for local
[Postgres](https://www.postgresql.org/) (version 15.5) usage. [direnv](https://direnv.net/)
can be used to a launch a dev shell upon entering this directory (refer to
`.envrc`). Otherwise run via:
```bash
$> nix develop
```
## Quickstart
To begin, create a new database:
```bash
pg_ctl initdb
```
If the flake's default `devShell` is loaded, this will create a database cluster
at `$PWD/data`. To start the database, run the following:
```bash
pg_ctl start -o --unix_socket_directories="$PGDATA"
```
To shut the database down, run:
```bash
pg_ctl stop
```
You can also specify a different location for the database cluster using the
`-D` option in each of the above commands.

View File

@ -0,0 +1,10 @@
(import
(
let lock = builtins.fromJSON (builtins.readFile ./flake.lock); in
fetchTarball {
url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
)
{ src = ./.; }
).defaultNix

View File

@ -0,0 +1,34 @@
{
description = ''
An opinionated postgres flake.
To generate a copy of this template elsewhere, run:
$> bootstrap postgres
'';
inputs = {
flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
packages = with pkgs; [
postgresql_15
];
shellHook = ''
# The server will try to use the data directory named by this
# environment variable whenever `-D` is not specified (for e.g.
# `postgres` and `pg_ctl`).
# https://www.postgresql.org/docs/15/server-start.html
export PGDATA="$PWD/data"
'';
};
});
}