dotfiles

My PC Dotfiles & Website

shells/sql.nix (956B)


 1pkgs: let
 2  pkg = pkgs.mariadb;
 3in {
 4  name = "SQL";
 5  packages = [pkg];
 6  shellHook = ''
 7    alias mysql='mysql -u root'
 8    MYSQL_HOME=$HOME/.mysql
 9    MYSQL_DATADIR=$MYSQL_HOME/data
10    export MYSQL_UNIX_PORT=$MYSQL_HOME/mysql.sock
11    MYSQL_PID_FILE=$MYSQL_HOME/mysql.pid
12
13    if [ ! -d "$MYSQL_HOME" ]
14    then
15      # Make sure to use normal authentication method
16      # otherwise we can only connect with unix account
17      # but users do not actually exist in NixOS
18      mysql_install_db --auth-root-authentication-method=normal \
19        --datadir=$MYSQL_DATADIR --basedir=${pkg} \
20        --pid-file=$MYSQL_PID_FILE
21    fi
22
23    # Starts the daemon
24    mysqld --datadir=$MYSQL_DATADIR --pid-file=$MYSQL_PID_FILE \
25      --socket=$MYSQL_UNIX_PORT 2> $MYSQL_HOME/mysql.log &
26    MYSQL_PID=$!
27
28    finish() {
29      mysqladmin -u root --socket=$MYSQL_UNIX_PORT shutdown
30      kill $MYSQL_PID
31      wait $MYSQL_PID
32    }
33    trap finish EXIT
34  '';
35}