Skip Navigation

Posts
4
Comments
4
Joined
5 yr. ago

  • 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).

  • Okay, that's good to know. I just wanted to make sure that if I had something like MariaDB or Postgres get installed with nix-shell that I wouldn't lose everything thus having to set everything back up next time I start the shell again.

  • Nix / NixOS @programming.dev

    New to NixOS and have a question on Nix Shell

  • On my Laptop, Arch Linux On my desktop, FreeBSD

  • I would imagine it also due to a flaw in how Google works. From my understanding, Google incentivizes adding new features, not supporting things. So, unless you're on a team that is working on a core product, you won't get far just maintaining and fixing bugs in a product that is “feature complete”.

  • FreeBSD @lemmy.ml

    Anyone tried to get plasma-vaults to work on FreeBSD

    FreeBSD @lemmy.ml

    FreeBSD 13.0-BETA shaping up to be a great release

    Unixporn @lemmy.ml

    Herbstluftwm + FreeBSD