{ pkgs ? import <nixpkgs> {} }:

let
  pythonWithPkgs = pkgs.python3.withPackages (ps: with ps; [
    ps.pyqt5
    ps.pyqtwebengine
    ps.pyusb
    ps.crcmod
    ps.pyserial
  ]);
in

pkgs.mkShell {
  name = "ddt4all-env";

  buildInputs = [
    pythonWithPkgs
    pkgs.qt5.qtbase
    pkgs.qt5.qttools
    pkgs.git
    pkgs.freetype
    pkgs.libGL
    pkgs.dbus
    pkgs.xorg.libX11
    pkgs.xorg.libXcomposite
    pkgs.xorg.libXdamage
    pkgs.xorg.libXfixes
    pkgs.xorg.libXrender
    pkgs.xorg.libXrandr
    pkgs.xorg.libXtst
    pkgs.glib
    pkgs.expat
    pkgs.fontconfig
  ];

  nativeBuildInputs = [ pkgs.libsForQt5.qt5.wrapQtAppsHook ];
  shellHook = ''wrapQtAppsHook'';

  runScript = ''
	cd $HOME/DDT4ALL

    if [ ! -d ".venv" ]; then
      python3 -m venv .venv
      source .venv/bin/activate
      pip install --upgrade pip
      pip install -r requirements.txt
    else
      source .venv/bin/activate
    fi

    python3 main.py
  '';
}