Okay, hopefully someone here can point out where I am going wrong with setting up my dev shell the way I want. I am currently using direnv and nix-direnv to manage the dev shell, and I found this blog post which shows a way to start and stop MySQL/Mariadb but I am having some weird issues with it.
Currently my flake looks like this:
{
description = "A basic flake with a shell";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { nixpkgs, flake-utils, ... }@inputs:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
packages = with pkgs; [
bashInteractive
php
];
buildInputs = [ pkgs.mariadb ];
shellHook = ''
export MYSQL_BASEDIR=${pkgs.mariadb}
export MYSQL_HOME=$PWD/.direnv/mysql
export MYSQL_DATADIR=$MYSQL_HOME/data
export MYSQL_UNIX_PORT=$MYSQL_HOME/mysql.sock
export MYSQL_PID_FILE=$MYSQL_HOME/mysql.pid
alias mysql='mysql -u root'
if [[ ! -d $MYSQL_HOME ]]; then
mariadb-install-db --auth-root-authentication-method=normal \
--datadir="$MYSQL_DATADIR" --basedir="$MYSQL_BASEDIR" \
--pid-file="$MYSQL_PID_FILE"
fi
mariadbd --datadir=$MYSQL_DATADIR --pid-file=$MYSQL_PID_FILE \
--socket=$MYSQL_UNIX_PORT --tmpdir='/tmp' 2>/dev/null &
MYSQL_PID=$!
'';
};
});
}
When I run it like this mariadbd starts just fine, but doesn't get backgrounded dispite the & making that shell session useless which is not what I want as I have to spawn a second shell just to do anything.
Even weirder is when I add the finish() function and the call to trap like in the blog post then mariadbd doesn't start (or starts and immedently gets killed).