home: direnv: add 'postgres' library file
This commit is contained in:
parent
7010ba25f4
commit
19aabcf6f5
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
22
home/direnv/lib/postgres.sh
Normal file
22
home/direnv/lib/postgres.sh
Normal 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
|
||||
}
|
Loading…
Reference in a new issue