{ stdenv, git, fetchFromGitHub, python3Packages, qt5Full, binutils-or1k, llvm-or1k, llvmlite, python3 }: let levenshtein = python3Packages.buildPythonPackage rec { name = "levenshtein"; src = fetchFromGitHub { owner = "ztane"; repo = "python-Levenshtein"; rev = "854e61a05bb8b750e990add96df412cd5448b75e"; sha256 = "1yf21kg1g2ivm5a4dx1jra9k0c33np54d0hk5ymnfyc4f6pg386q"; }; doCheck = false; }; pythonparser = python3Packages.buildPythonPackage rec { name = "pythonparser"; src = fetchFromGitHub { owner = "m-labs"; repo = "pythonparser"; rev = "5b391fe86f43bb9f4f96c5bc0532e2a112db2936"; sha256 = "1gw1fk4y2l6bwq0fg2a9dfc1rvq8cv492dyil96amjdhsxvnx35b"; }; patches = [ ./python37hack.patch ]; propagatedBuildInputs = with python3Packages; [ regex ]; }; asyncserial = python3Packages.buildPythonPackage rec { name = "asyncserial"; src = fetchFromGitHub { owner = "m-labs"; repo = "asyncserial"; rev = "d95bc1d6c791b0e9785935d2f62f628eb5cdf98d"; sha256 = "0yzkka9jk3612v8gx748x6ziwykq5lr7zmr9wzkcls0v2yilqx9k"; }; propagatedBuildInputs = with python3Packages; [ pyserial ]; doCheck = false; }; quamash = python3Packages.buildPythonPackage rec { name = "quamash"; src = fetchFromGitHub { owner = "harvimt"; repo = "quamash"; rev = "e513b30f137415c5e098602fa383e45debab85e7"; sha256 = "117rp9r4lz0kfz4dmmpa35hp6nhbh6b4xq0jmgvqm68g9hwdxmqa"; }; propagatedBuildInputs = with python3Packages; [ pyqt5 ]; doCheck = false; }; pyqtgraph-qt5 = python3Packages.buildPythonPackage rec { name = "pyqtgraph_qt5-${version}"; version = "0.10.0"; doCheck = false; src = fetchFromGitHub { owner = "pyqtgraph"; repo = "pyqtgraph"; rev = "1426e334e1d20542400d77c72c132b04c6d17ddb"; sha256 = "1079haxyr316jf0wpirxdj0ry6j8mr16cqr0dyyrd5cnxwl7zssh"; }; propagatedBuildInputs = with python3Packages; [ scipy numpy pyqt5 pyopengl ]; }; in python3Packages.buildPythonPackage rec { name = "artiq"; src = builtins.filterSource (path: type: type != "directory" || builtins.baseNameOf path != ".nix") ./../..; buildInputs = [ git ]; propagatedBuildInputs = with python3Packages; [ binutils-or1k llvm-or1k llvmlite levenshtein pyqtgraph-qt5 aiohttp pygit2 pythonparser numpy dateutil quamash scipy prettytable pyserial asyncserial h5py cython regex qt5Full pyqt5 ]; checkPhase = "python -m unittest discover -v artiq.test"; doCheck = false; meta = with stdenv.lib; { description = "A leading-edge control system for quantum information experiments"; homepage = https://m-labs/artiq; license = licenses.lgpl3; #maintainers = [ maintainers.sb0 ]; platforms = [ "x86_64-linux" ]; }; }