county-sprints/flake.nix
Jonas Rabenstein a9d22e8312 chatgpt
2026-08-12 13:24:01 +02:00

127 lines
3.3 KiB
Nix

{
description = "Landkreis-Sprints";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { nixpkgs, rust-overlay, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ (import rust-overlay) ];
};
rust = pkgs.rust-bin.stable.latest.default.override {
extensions = [
"rustfmt"
"clippy"
];
};
in {
devShells.default = pkgs.mkShell {
packages = with pkgs; [
rust
postgresql
postgis
sqlx-cli
gdal
geos
proj
pkg-config
openssl
];
shellHook = ''
export PGDATA="$PWD/.pgdata"
export PGHOST="$PWD/.pgsocket"
export PGPORT="5433"
export PGDATABASE="county_sprints"
export PGUSER="county_sprints"
mkdir -p "$PGHOST"
if [ ! -f "$PGDATA/PG_VERSION" ]; then
echo "initialising PostgreSQL..."
initdb \
--auth=trust \
--no-locale \
"$PGDATA" >/dev/null
cat >> "$PGDATA/postgresql.conf" <<PGEOF
listen_addresses = ''
port = 5433
unix_socket_directories = '$PGHOST'
PGEOF
fi
if ! pg_ctl -D "$PGDATA" status >/dev/null 2>&1; then
pg_ctl \
-D "$PGDATA" \
-o "-k $PGHOST -p $PGPORT" \
-l "$PGDATA/postgresql.log" \
start >/dev/null
fi
if ! psql \
-h "$PGHOST" \
-p "$PGPORT" \
-d postgres \
-tAc "SELECT 1 FROM pg_roles WHERE rolname='$PGUSER'" |
grep -q 1
then
createuser \
-h "$PGHOST" \
-p "$PGPORT" \
"$PGUSER"
fi
if ! psql \
-h "$PGHOST" \
-p "$PGPORT" \
-d postgres \
-tAc "SELECT 1 FROM pg_database WHERE datname='$PGDATABASE'" |
grep -q 1
then
createdb \
-h "$PGHOST" \
-p "$PGPORT" \
-O "$PGUSER" \
"$PGDATABASE"
fi
if ! psql \
-h "$PGHOST" \
-p "$PGPORT" \
-d "$PGDATABASE" \
-tAc "SELECT 1 FROM pg_extension WHERE extname='postgis'" |
grep -q 1
then
psql \
-h "$PGHOST" \
-p "$PGPORT" \
-d "$PGDATABASE" \
-c "CREATE EXTENSION postgis;" >/dev/null
fi
export DATABASE_URL="postgresql://$PGUSER@/$PGDATABASE?host=$PGHOST&port=$PGPORT"
echo
echo "========================================"
echo " county-sprints development environment"
echo "========================================"
echo "DATABASE_URL=$DATABASE_URL"
echo
'';
};
}
);
}