Initial commit
This commit is contained in:
91
backend/shell.nix
Normal file
91
backend/shell.nix
Normal file
@@ -0,0 +1,91 @@
|
||||
{ pkgs ? import <nixpkgs> {}}:
|
||||
|
||||
pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
# Python development environment for Chitai
|
||||
python313Full
|
||||
python313Packages.greenlet
|
||||
python313Packages.ruff
|
||||
uv
|
||||
|
||||
# postgres database
|
||||
postgresql
|
||||
|
||||
];
|
||||
|
||||
shellHook = ''
|
||||
# Only cd if we're not already in backend
|
||||
if [[ $(basename $(pwd)) != "backend" ]]; then
|
||||
cd backend
|
||||
fi
|
||||
BACKEND_PATH=$(pwd)
|
||||
|
||||
echo "Initializing Python development environment with uv"
|
||||
|
||||
# Create a virtual environment if it doesn't exist
|
||||
if [ ! -d ".venv" ]; then
|
||||
echo "Creating virtual environment..."
|
||||
uv venv .venv
|
||||
fi
|
||||
|
||||
# Activate the virtual environment
|
||||
source .venv/bin/activate
|
||||
|
||||
echo "Python environment ready!"
|
||||
echo "Python version: $(python --version)"
|
||||
echo "uv version: $(uv --version)"
|
||||
echo "Virtual environment activated at: $VIRTUAL_ENV"
|
||||
|
||||
# Install required packages
|
||||
uv sync
|
||||
echo "Successfully installed packages!"
|
||||
|
||||
echo "Setting up the postgres database"
|
||||
export PGHOST=$BACKEND_PATH/.postgres
|
||||
export PGDATA=$PGHOST/data
|
||||
export PGDATABASE=chitai
|
||||
export PGUSERNAME=chitai_user
|
||||
export PGPASSWORD="chitai_password"
|
||||
export PGLOG=$PGHOST/postgres.log
|
||||
export LD_LIBRARY_PATH="${pkgs.postgresql.lib}/lib:$LD_LIBRARY_PATH"
|
||||
|
||||
mkdir -p $PGHOST
|
||||
|
||||
# Initialize the postgres database if not present
|
||||
if [ ! -d "$PGDATA" ]; then
|
||||
echo "Initializing PostgreSQL..."
|
||||
initdb -D $BACKEND_PATH/.postgres/data \
|
||||
-U $PGUSERNAME \
|
||||
--pwfile=<(echo "$PGPASSWORD") \
|
||||
--auth=md5 \
|
||||
--encoding=UTF-8
|
||||
fi
|
||||
|
||||
if ! pg_ctl status > /dev/null 2>&1
|
||||
then
|
||||
echo "Starting PostgreSQL..."
|
||||
pg_ctl start -l $PGLOG -o "--unix_socket_directories='$PGHOST'"
|
||||
fi
|
||||
|
||||
echo "PostgreSQL is running!"
|
||||
|
||||
if ! psql -h $PGHOST -d postgres -lqt 2>/dev/null | cut -d \| -f 1 | grep -qw chitai; then
|
||||
echo "Creating database chitai..."
|
||||
createdb -U $PGUSERNAME -h $PGHOST chitai
|
||||
fi
|
||||
|
||||
# Run database migrations
|
||||
uv run alchemy --config chitai.database.config.config upgrade --no-prompt
|
||||
|
||||
# Return to root directory
|
||||
cd -
|
||||
'';
|
||||
|
||||
exitHook = ''
|
||||
BACKEND_PATH=$(pwd)/backend
|
||||
cd $BACKEND_PATH
|
||||
echo "Stopping PostgreSQL..."
|
||||
pg_ctl stop
|
||||
cd -
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user