anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / radio / soapysdr / default.nix
blob68d30ab73cfb3393f5d459a6073066b72cd48158
2   stdenv,
3   lib,
4   fetchFromGitHub,
5   fetchpatch,
6   cmake,
7   pkg-config,
8   makeWrapper,
9   libusb-compat-0_1,
10   ncurses,
11   usePython ? false,
12   python ? null,
13   swig,
14   extraPackages ? [ ],
15   buildPackages,
16   testers,
19 stdenv.mkDerivation (finalAttrs: {
20   pname = "soapysdr";
21   version = "0.8.1";
23   src = fetchFromGitHub {
24     owner = "pothosware";
25     repo = "SoapySDR";
26     rev = "soapy-sdr-${finalAttrs.version}";
27     sha256 = "19f2x0pkxvf9figa0pl6xqlcz8fblvqb19mcnj632p0l8vk6qdv2";
28   };
30   patches = [
31     # Fix for https://github.com/pothosware/SoapySDR/issues/352
32     (fetchpatch {
33       url = "https://github.com/pothosware/SoapySDR/commit/10c05b3e52caaa421147d6b4623eccd3fc3be3f4.patch";
34       hash = "sha256-D7so6NSZiU6SXbzns04Q4RjSZW0FJ+MYobvvVpVMjws=";
35     })
36   ];
38   nativeBuildInputs = [
39     cmake
40     pkg-config
41     makeWrapper
42   ];
43   buildInputs =
44     [
45       libusb-compat-0_1
46       ncurses
47     ]
48     ++ lib.optionals usePython [
49       python
50       swig
51     ];
53   propagatedBuildInputs = lib.optionals usePython [ python.pkgs.numpy ];
55   cmakeFlags = lib.optionals usePython [ "-DUSE_PYTHON_CONFIG=ON" ];
57   postFixup = lib.optionalString (extraPackages != [ ]) (
58     # Join all plugins via symlinking
59     lib.pipe extraPackages [
60       (map (pkg: ''
61         ${buildPackages.xorg.lndir}/bin/lndir -silent ${pkg} $out
62       ''))
63       lib.concatStrings
64     ]
65     + ''
66       # Needed for at least the remote plugin server
67       for file in $out/bin/*; do
68           wrapProgram "$file" --prefix SOAPY_SDR_PLUGIN_PATH : ${lib.escapeShellArg (lib.makeSearchPath finalAttrs.passthru.searchPath extraPackages)}
69       done
70     ''
71   );
73   passthru = {
74     tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
75     searchPath = "lib/SoapySDR/modules${lib.versions.majorMinor finalAttrs.version}";
76   };
78   meta = with lib; {
79     homepage = "https://github.com/pothosware/SoapySDR";
80     description = "Vendor and platform neutral SDR support library";
81     license = licenses.boost;
82     maintainers = with maintainers; [ markuskowa ];
83     mainProgram = "SoapySDRUtil";
84     pkgConfigModules = [ "SoapySDR" ];
85     platforms = platforms.unix;
86   };