home: direnv: add 'postgres' library file

This commit is contained in:
Bruno BELANYI 2022-04-12 17:01:11 +02:00
parent 7010ba25f4
commit 19aabcf6f5
2 changed files with 41 additions and 4 deletions

View file

@ -7,11 +7,26 @@ in
enable = mkDisableOption "direnv configuration";
};
config.programs.direnv = lib.mkIf cfg.enable {
config = lib.mkIf cfg.enable {
programs.direnv = {
enable = true;
nix-direnv = {
# A better `use_nix`
enable = true;
};
};
xdg.configFile =
let
libDir = ./lib;
contents = builtins.readDir libDir;
names = lib.attrNames contents;
files = lib.filter (name: contents.${name} == "regular") names;
linkLibFile = name:
lib.nameValuePair
"direnv/lib/${name}"
{ source = libDir + "/${name}"; };
in
lib.my.genAttrs' files linkLibFile;
};
}

View file

@ -0,0 +1,22 @@
#shellcheck shell=bash
layout_postgres() {
if ! has postgres || ! has initdb; then
# shellcheck disable=2016
log_error 'layout_postgres: `postgres` and `initdb` are not in PATH'
return 1
fi
# shellcheck disable=2155
export PGDATA="$(direnv_layout_dir)/postgres"
export PGHOST="$PGDATA"
if [[ ! -d "$PGDATA" ]]; then
initdb
cat >> "$PGDATA/postgresql.conf" << EOF
listen_addresses = ''
unix_socket_directories = '$PGHOST'
EOF
echo "CREATE DATABASE $USER;" | postgres --single -E postgres
fi
}