{ pkgs, asyncserial, artiq }: let dualPackage = ( { name, version, src, pythonOptions ? {}, condaOptions ? {}}: { "${name}" = pkgs.python3Packages.buildPythonPackage ({ inherit version; name = "${name}-${version}"; inherit src; } // pythonOptions); "conda-${name}" = import ./conda-build.nix { inherit pkgs; } { name = "conda-${name}"; src = import ./conda-fake-source.nix { inherit pkgs; } ({ inherit name version src; } // condaOptions); }; } ); # https://github.com/m-labs/artiq/issues/23 hidapi = pkgs.hidapi.overrideAttrs (oa: { src = pkgs.fetchFromGitHub { owner = "signal11"; repo = "hidapi"; rev = "a6a622ffb680c55da0de787ff93b80280498330f"; sha256 = "17n7c4v3jjrnzqwxpflggxjn6vkzscb32k4kmxqjbfvjqnx7qp7j"; }; }); in (dualPackage { name = "korad_ka3005p"; version = "1.0"; src = pkgs.fetchFromGitHub { owner = "m-labs"; repo = "korad_ka3005p"; rev = "51df56fcb5270b4f41bb37dc5338dd66eef21565"; sha256 = "17dsf1bfaiy26wvn97lpxpypnx3crg45r2n6764mc7234gk2k0j4"; }; pythonOptions = { propagatedBuildInputs = [ asyncserial artiq ]; }; condaOptions = { dependencies = [ "asyncserial" ]; }; }) // (dualPackage { name = "novatech409b"; version = "1.0"; src = pkgs.fetchFromGitHub { owner = "m-labs"; repo = "novatech409b"; rev = "ad1dbfd5287d3910bc61bcd4db4df045c3ca53ab"; sha256 = "16292n8kswk91gdxvf450hkh38lk31v8rgmfrl2mnfdladahg1ax"; }; pythonOptions = { propagatedBuildInputs = [ asyncserial artiq ]; }; condaOptions = { dependencies = [ "asyncserial" ]; }; }) // (dualPackage { name = "lda"; version = "1.0"; src = pkgs.fetchFromGitHub { owner = "m-labs"; repo = "lda"; rev = "c7a011f9b235c86f9c98a8aeb335acb00d525d7d"; sha256 = "1dg37911v3pg97d14yhk648xrz5g0yv176csqbcv0iv3v1nvsyhd"; }; pythonOptions = { propagatedBuildInputs = [ artiq ]; postPatch = '' ls substituteInPlace lda/hidapi.py \ --replace "hidapi_lib_path = None"\ "hidapi_lib_path = '${hidapi}/lib/libhidapi-libusb.so.0'" ''; }; }) // (dualPackage { name = "newfocus8742"; version = "0.1"; src = pkgs.fetchFromGitHub { owner = "quartiq"; repo = "newfocus8742"; rev = "2d97eb741f43bd5cb9eec92635101b70ad9c129c"; sha256 = "0xzx1p6qn24ckbc8pyxzq8wxn64pvrbwm2l94mblij6dblksdgmv"; }; pythonOptions = { propagatedBuildInputs = [ artiq ]; # no unit tests so do a simple smoke test checkPhase = "python -m newfocus8742.aqctl_newfocus8742 --version"; }; })