summaryrefslogtreecommitdiff
path: root/nix/nix-shell-with-php-composer-nodejs-npm-mysql.nix
blob: 27249eb6dccf2fe3b38107d651d5141fe7cc9853 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
with (import <nixpkgs> {});
mkShell {
  buildInputs = [
    php
    phpPackages.composer
    nodejs
    mysql80
  ];

  shellHook = ''
    MYSQL_DIR=$(pwd)/.nix/mysql
    MYSQL_SOCKET=$(pwd)/.nix/mysql/mysql.sock
    MYSQL_ROOT_PASSWORD=123456

    export MYSQL_UNIX_PORT=$MYSQL_SOCKET

    if [ ! -d $MYSQL_DIR ]; then
      mysqld --initialize-insecure --datadir=$MYSQL_DIR
    fi

    if ! mysqladmin status --user=root -p$MYSQL_ROOT_PASSWORD; then
      mysqld --datadir=$MYSQL_DIR --skip-networking &

      sleep 3
      if ! mysql --user=root -p$MYSQL_ROOT_PASSWORD >> "SELECT 1"; then
        mysql --user=root <<< "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';"
      fi
    fi
  '';
}