biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / radio / gqrx / default.nix
blob14675124b0edda57c15365bba8a15afec5c61454
1 { lib
2 , fetchFromGitHub
3 , cmake
4 , pkg-config
5 , qtbase
6 , qtsvg
7 , qtwayland
8 , gnuradioMinimal
9 , thrift
10 , mpir
11 , fftwFloat
12 , alsa-lib
13 , libjack2
14 , wrapGAppsHook3
15 , wrapQtAppsHook
16 # drivers (optional):
17 , rtl-sdr
18 , hackrf
19 , pulseaudioSupport ? true, libpulseaudio
20 , portaudioSupport ? false, portaudio
23 assert pulseaudioSupport -> libpulseaudio != null;
24 assert portaudioSupport -> portaudio != null;
25 # audio backends are mutually exclusive
26 assert !(pulseaudioSupport && portaudioSupport);
28 gnuradioMinimal.pkgs.mkDerivation rec {
29   pname = "gqrx";
30   version = "2.17.5";
32   src = fetchFromGitHub {
33     owner = "gqrx-sdr";
34     repo = "gqrx";
35     rev = "v${version}";
36     hash = "sha256-9VePsl/vaSTZ1TMyIeaGoZNrZv+O/7BxQ3ubD5S2EjY=";
37   };
39   nativeBuildInputs = [
40     cmake
41     pkg-config
42     wrapQtAppsHook
43     wrapGAppsHook3
44   ];
45   buildInputs = [
46     gnuradioMinimal.unwrapped.logLib
47     mpir
48     fftwFloat
49     alsa-lib
50     libjack2
51     gnuradioMinimal.unwrapped.boost
52     qtbase
53     qtsvg
54     qtwayland
55     gnuradioMinimal.pkgs.osmosdr
56     rtl-sdr
57     hackrf
58   ] ++ lib.optionals (gnuradioMinimal.hasFeature "gr-ctrlport") [
59     thrift
60     gnuradioMinimal.unwrapped.python.pkgs.thrift
61   ] ++ lib.optionals pulseaudioSupport [ libpulseaudio ]
62     ++ lib.optionals portaudioSupport [ portaudio ];
64   cmakeFlags =
65     let
66       audioBackend =
67         if pulseaudioSupport
68         then "Pulseaudio"
69         else if portaudioSupport
70         then "Portaudio"
71         else "Gr-audio";
72     in [
73       "-DLINUX_AUDIO_BACKEND=${audioBackend}"
74     ];
76    # Prevent double-wrapping, inject wrapper args manually instead.
77   dontWrapGApps = true;
78   preFixup = ''
79     qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
80   '';
82   meta = with lib; {
83     description = "Software defined radio (SDR) receiver";
84     mainProgram = "gqrx";
85     longDescription = ''
86       Gqrx is a software defined radio receiver powered by GNU Radio and the Qt
87       GUI toolkit. It can process I/Q data from many types of input devices,
88       including Funcube Dongle Pro/Pro+, rtl-sdr, HackRF, and Universal
89       Software Radio Peripheral (USRP) devices.
90     '';
91     homepage = "https://gqrx.dk/";
92     # Some of the code comes from the Cutesdr project, with a BSD license, but
93     # it's currently unknown which version of the BSD license that is.
94     license = licenses.gpl3Plus;
95     platforms = platforms.linux;  # should work on Darwin / macOS too
96     maintainers = with maintainers; [ bjornfor fpletz ];
97   };