{ stdenv, lib, pythonDeps, fetchgit, git, python3Packages, qt5, libartiq-support, lit, outputcheck, fontconfig, binutils-or1k, binutils-arm, llvm-or1k, llvmlite-artiq, llvm_11, lld_11, llvmlite-llvm11 }: python3Packages.buildPythonPackage rec { pname = "artiq"; version = import ./artiq-version.nix { inherit stdenv fetchgit git; }; src = import ./artiq-src.nix { inherit fetchgit; }; preBuild = "export VERSIONEER_OVERRIDE=${version}"; nativeBuildInputs = [ qt5.wrapQtAppsHook ]; propagatedBuildInputs = [ ] ++ (lib.lists.optionals (!lib.strings.versionAtLeast version "7.0") [ binutils-or1k llvm-or1k llvmlite-artiq ]) ++ (lib.lists.optionals (lib.strings.versionAtLeast version "7.0") [ llvm_11 lld_11 llvmlite-llvm11 ]) ++ (lib.lists.optionals (lib.strings.versionAtLeast version "6.0" && !lib.strings.versionAtLeast version "7.0") [ binutils-arm ]) ++ (with pythonDeps; [ sipyco pythonparser ]) ++ (with python3Packages; [ pygit2 numpy dateutil scipy prettytable pyserial python-Levenshtein h5py pyqt5 pyqtgraph ]) ++ [(if (lib.strings.versionAtLeast version "6.0") then pythonDeps.qasync else python3Packages.quamash)]; dontWrapQtApps = true; postFixup = '' wrapQtApp "$out/bin/artiq_dashboard" wrapQtApp "$out/bin/artiq_browser" wrapQtApp "$out/bin/artiq_session" ''; # Modifies PATH to pass the wrapped python environment (i.e. python3.withPackages(...) to subprocesses. # Allows subprocesses using python to find all packages you have installed makeWrapperArgs = [ ''--run 'if [ ! -z "$NIX_PYTHONPREFIX" ]; then export PATH=$NIX_PYTHONPREFIX/bin:$PATH;fi' '' "--set FONTCONFIG_FILE ${fontconfig.out}/etc/fonts/fonts.conf" ]; checkInputs = [ lit outputcheck ] ++ (if (lib.strings.versionAtLeast version "7.0") then [ lld_11 llvm_11 ] else [ binutils-or1k ]); checkPhase = '' python -m unittest discover -v artiq.test TESTDIR=`mktemp -d` cp --no-preserve=mode,ownership -R $src/artiq/test/lit $TESTDIR LIBARTIQ_SUPPORT=${libartiq-support}/libartiq_support.so lit -v $TESTDIR/lit ''; meta = with lib; { description = "A leading-edge control system for quantum information experiments"; homepage = https://m-labs/artiq; license = licenses.lgpl3; maintainers = [ maintainers.sb0 ]; }; }