63 lines
1.9 KiB
Nix
63 lines
1.9 KiB
Nix
{ pkgs, ... }:
|
|
{
|
|
virtualisation.arion = {
|
|
backend = "docker";
|
|
projects = {
|
|
"db".settings.services."db".service = {
|
|
restart = "unless-stopped";
|
|
build.context = "/nix/store";
|
|
build.dockerfile = builtins.baseNameOf "${pkgs.writeScript "pgDockerfile" ''
|
|
FROM postgres:16
|
|
# install packages
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
postgresql-16-postgis \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
''}";
|
|
environment = {
|
|
POSTGRES_PASSWORD = "balls1234";
|
|
POSTGRES_USER = "admin";
|
|
POSTGRES_DB = "admin_db";
|
|
PGDATA = "/var/lib/postgresql/data/pgdata";
|
|
};
|
|
ports = [ "5432:5432" ];
|
|
volumes = [
|
|
"/mnt/postgres:/var/lib/postgresql/data"
|
|
|
|
# PG init script
|
|
"${pkgs.writeScript "init.sh" ''
|
|
#!/bin/bash
|
|
|
|
# Create additional databases
|
|
psql -v --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
create database bitcoin;
|
|
create database osm;
|
|
EOSQL
|
|
|
|
# Create additional users
|
|
psql -v --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
create user gis;
|
|
create user satoshi;
|
|
EOSQL
|
|
|
|
# Setup bitcoin db
|
|
psql -v --username "$POSTGRES_USER" --dbname "bitcoin" <<-EOSQL
|
|
grant all privileges on database bitcoin to satoshi;
|
|
EOSQL
|
|
|
|
# Setup osm db
|
|
psql -v --username "$POSTGRES_USER" --dbname "osm" <<-EOSQL
|
|
grant all privileges on database osm to gis;
|
|
create extension if not exists postgis;
|
|
create extension if not exists hstore;
|
|
EOSQL
|
|
|
|
''}:/docker-entrypoint-initdb.d/init.sh"
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
}
|
|
|