summary refs log tree commit diff
diff options
context:
space:
mode:
authorDoron Behar <doron.behar@gmail.com>2021-02-15 22:14:54 +0200
committerDoron Behar <doron.behar@gmail.com>2021-03-13 19:07:34 +0200
commitfb024f50e5557e42b4bb8249d0298c244ff8082d (patch)
tree43d578222bcde71efe60e5f9c708153ad76d5767
parent650ee258fde069a1ac3544cdce89029e9f91d5c5 (diff)
downloadnixpkgs-fb024f50e5557e42b4bb8249d0298c244ff8082d.tar
nixpkgs-fb024f50e5557e42b4bb8249d0298c244ff8082d.tar.gz
nixpkgs-fb024f50e5557e42b4bb8249d0298c244ff8082d.tar.bz2
nixpkgs-fb024f50e5557e42b4bb8249d0298c244ff8082d.tar.lz
nixpkgs-fb024f50e5557e42b4bb8249d0298c244ff8082d.tar.xz
nixpkgs-fb024f50e5557e42b4bb8249d0298c244ff8082d.tar.zst
nixpkgs-fb024f50e5557e42b4bb8249d0298c244ff8082d.zip
gnuradio: 3.8 -> 3.9
Add some "3.9" attributes to srcs in gnuradio packages And update
packages using GR3.8 and that are incompatible yet with GR3.9 to use
GR3.8 explicitly.
-rw-r--r--pkgs/applications/radio/gnss-sdr/default.nix16
-rw-r--r--pkgs/applications/radio/gnuradio/3.8.nix284
-rw-r--r--pkgs/applications/radio/gnuradio/default.nix104
-rw-r--r--pkgs/applications/radio/gqrx/default.nix8
-rw-r--r--pkgs/applications/radio/inspectrum/default.nix4
-rw-r--r--pkgs/applications/radio/qradiolink/default.nix18
-rw-r--r--pkgs/development/gnuradio-modules/limesdr/default.nix2
-rw-r--r--pkgs/development/gnuradio-modules/osmosdr/default.nix2
-rw-r--r--pkgs/development/gnuradio-modules/rds/default.nix2
-rw-r--r--pkgs/top-level/all-packages.nix29
10 files changed, 384 insertions, 85 deletions
diff --git a/pkgs/applications/radio/gnss-sdr/default.nix b/pkgs/applications/radio/gnss-sdr/default.nix
index 13636cf4415..46757601867 100644
--- a/pkgs/applications/radio/gnss-sdr/default.nix
+++ b/pkgs/applications/radio/gnss-sdr/default.nix
@@ -7,7 +7,7 @@
 , gmock
 , openssl
 , gflags
-, gnuradio
+, gnuradio3_8
 , libpcap
 , orc
 , pkg-config
@@ -19,7 +19,7 @@
 , protobuf
 }:
 
-gnuradio.pkgs.mkDerivation rec {
+gnuradio3_8.pkgs.mkDerivation rec {
   pname = "gnss-sdr";
   version = "0.0.13";
 
@@ -32,15 +32,15 @@ gnuradio.pkgs.mkDerivation rec {
 
   nativeBuildInputs = [
     cmake
-    gnuradio.unwrapped.python
-    gnuradio.unwrapped.python.pkgs.Mako
-    gnuradio.unwrapped.python.pkgs.six
+    gnuradio3_8.unwrapped.python
+    gnuradio3_8.unwrapped.python.pkgs.Mako
+    gnuradio3_8.unwrapped.python.pkgs.six
   ];
 
   buildInputs = [
     gmp
     armadillo
-    gnuradio.unwrapped.boost
+    gnuradio3_8.unwrapped.boost
     glog
     gmock
     openssl
@@ -48,13 +48,13 @@ gnuradio.pkgs.mkDerivation rec {
     orc
     # UHD support is optional, but gnuradio is built with it, so there's
     # nothing to be gained by leaving it out.
-    gnuradio.unwrapped.uhd
+    gnuradio3_8.unwrapped.uhd
     log4cpp
     blas lapack
     matio
     pugixml
     protobuf
-    gnuradio.pkgs.osmosdr
+    gnuradio3_8.pkgs.osmosdr
     libpcap
   ];
 
diff --git a/pkgs/applications/radio/gnuradio/3.8.nix b/pkgs/applications/radio/gnuradio/3.8.nix
new file mode 100644
index 00000000000..799b429800d
--- /dev/null
+++ b/pkgs/applications/radio/gnuradio/3.8.nix
@@ -0,0 +1,284 @@
+{ lib, stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+# Remove gcc and python references
+, removeReferencesTo
+, pkg-config
+, volk
+, cppunit
+, swig
+, orc
+, boost
+, log4cpp
+, mpir
+, doxygen
+, python
+, codec2
+, gsm
+, fftwFloat
+, alsaLib
+, libjack2
+, CoreAudio
+, uhd
+, SDL
+, gsl
+, cppzmq
+, zeromq
+# Needed only if qt-gui is disabled, from some reason
+, icu
+# GUI related
+, gtk3
+, pango
+, gobject-introspection
+, cairo
+, qt5
+, libsForQt5
+# Features available to override, the list of them is in featuresInfo. They
+# are all turned on by default.
+, features ? {}
+# If one wishes to use a different src or name for a very custom build
+, overrideSrc ? {}
+, pname ? "gnuradio"
+, versionAttr ? {
+  major = "3.8";
+  minor = "2";
+  patch = "0";
+}
+# We use our build of volk and not the one bundled with the release
+, fetchSubmodules ? false
+}:
+
+let
+  sourceSha256 =  "SFDjtyQRp0fXijZukpLYtISpx8imxedlYN9mRibv1eA=";
+  featuresInfo = {
+    # Needed always
+    basic = {
+      native = [
+        cmake
+        pkg-config
+        orc
+      ];
+      runtime = [
+        boost
+        log4cpp
+        mpir
+      ]
+        # when gr-qtgui is disabled, icu needs to be included, otherwise
+        # building with boost 1.7x fails
+        ++ lib.optionals (!(hasFeature "gr-qtgui" features)) [ icu ];
+      pythonNative = with python.pkgs; [
+        Mako
+        six
+      ];
+    };
+    volk = {
+      cmakeEnableFlag = "VOLK";
+      runtime = [
+        volk
+      ];
+    };
+    doxygen = {
+      native = [ doxygen ];
+      cmakeEnableFlag = "DOXYGEN";
+    };
+    sphinx = {
+      pythonNative = with python.pkgs; [ sphinx ];
+      cmakeEnableFlag = "SPHINX";
+    };
+    python-support = {
+      pythonRuntime = [ python.pkgs.six ];
+      native = [
+        swig
+        python
+      ];
+      cmakeEnableFlag = "PYTHON";
+    };
+    testing-support = {
+      native = [ cppunit ];
+      cmakeEnableFlag = "TESTING";
+    };
+    gnuradio-runtime = {
+      cmakeEnableFlag = "GNURADIO_RUNTIME";
+    };
+    gr-ctrlport = {
+      # Thrift support is not really working well, and even the patch they
+      # recommend applying on 0.9.2 won't apply. See:
+      # https://github.com/gnuradio/gnuradio/blob/v3.8.2.0/gnuradio-runtime/lib/controlport/thrift/README
+      cmakeEnableFlag = "GR_CTRLPORT";
+      native = [
+        swig
+      ];
+    };
+    gnuradio-companion = {
+      pythonRuntime = with python.pkgs; [
+        pyyaml
+        Mako
+        numpy
+        pygobject3
+      ];
+      runtime = [
+        gtk3
+        pango
+        gobject-introspection
+        cairo
+      ];
+      cmakeEnableFlag = "GRC";
+    };
+    gr-blocks = {
+      cmakeEnableFlag = "GR_BLOCKS";
+    };
+    gr-fec = {
+      cmakeEnableFlag = "GR_FEC";
+    };
+    gr-fft = {
+      runtime = [ fftwFloat ];
+      cmakeEnableFlag = "GR_FFT";
+    };
+    gr-filter = {
+      runtime = [ fftwFloat ];
+      cmakeEnableFlag = "GR_FILTER";
+    };
+    gr-analog = {
+      cmakeEnableFlag = "GR_ANALOG";
+    };
+    gr-digital = {
+      cmakeEnableFlag = "GR_DIGITAL";
+    };
+    gr-dtv = {
+      cmakeEnableFlag = "GR_DTV";
+    };
+    gr-audio = {
+      runtime = []
+        ++ lib.optionals stdenv.isLinux [ alsaLib libjack2 ]
+        ++ lib.optionals stdenv.isDarwin [ CoreAudio ]
+      ;
+      cmakeEnableFlag = "GR_AUDIO";
+    };
+    gr-channels = {
+      cmakeEnableFlag = "GR_CHANNELS";
+    };
+    gr-qtgui = {
+      runtime = [ qt5.qtbase libsForQt5.qwt ];
+      pythonRuntime = [ python.pkgs.pyqt5 ];
+      cmakeEnableFlag = "GR_QTGUI";
+    };
+    gr-trellis = {
+      cmakeEnableFlag = "GR_TRELLIS";
+    };
+    gr-uhd = {
+      runtime = [ uhd ];
+      cmakeEnableFlag = "GR_UHD";
+    };
+    gr-utils = {
+      cmakeEnableFlag = "GR_UTILS";
+    };
+    gr-modtool = {
+      pythonRuntime = with python.pkgs; [
+        click
+        click-plugins
+      ];
+      cmakeEnableFlag = "GR_MODTOOL";
+    };
+    gr-video-sdl = {
+      runtime = [ SDL ];
+      cmakeEnableFlag = "GR_VIDEO_SDL";
+    };
+    gr-vocoder = {
+      runtime = [ codec2 gsm ];
+      cmakeEnableFlag = "GR_VOCODER";
+    };
+    gr-wavelet = {
+      cmakeEnableFlag = "GR_WAVELET";
+      runtime = [ gsl ];
+    };
+    gr-zeromq = {
+      runtime = [ cppzmq zeromq ];
+      cmakeEnableFlag = "GR_ZEROMQ";
+    };
+  };
+  shared = (import ./shared.nix {
+    inherit
+      stdenv
+      lib
+      python
+      removeReferencesTo
+      featuresInfo
+      features
+      versionAttr
+      sourceSha256
+      overrideSrc
+      fetchFromGitHub
+      fetchSubmodules
+    ;
+    qt = qt5;
+    gtk = gtk3;
+  });
+  inherit (shared) hasFeature; # function
+in
+
+stdenv.mkDerivation rec {
+  inherit pname;
+  inherit (shared)
+    version
+    src
+    nativeBuildInputs
+    buildInputs
+    disallowedReferences
+    stripDebugList
+    doCheck
+    dontWrapPythonPrograms
+    dontWrapQtApps
+    meta
+  ;
+  passthru = shared.passthru // {
+    # Deps that are potentially overriden and are used inside GR plugins - the same version must
+    inherit boost volk;
+  } // lib.optionalAttrs (hasFeature "gr-uhd" features) {
+    inherit uhd;
+  } // lib.optionalAttrs (hasFeature "gr-qtgui" features) {
+    inherit (libsForQt5) qwt;
+  };
+  cmakeFlags = shared.cmakeFlags
+    # From some reason, if these are not set, libcodec2 and gsm are not
+    # detected properly. NOTE: qradiolink needs libcodec2 to be detected in
+    # order to build, see https://github.com/qradiolink/qradiolink/issues/67
+    ++ lib.optionals (hasFeature "gr-vocoder" features) [
+      "-DLIBCODEC2_LIBRARIES=${codec2}/lib/libcodec2.so"
+      "-DLIBCODEC2_INCLUDE_DIRS=${codec2}/include"
+      "-DLIBCODEC2_HAS_FREEDV_API=ON"
+      "-DLIBGSM_LIBRARIES=${gsm}/lib/libgsm.so"
+      "-DLIBGSM_INCLUDE_DIRS=${gsm}/include/gsm"
+    ]
+    ++ lib.optionals (hasFeature "volk" features && volk != null) [
+      "-DENABLE_INTERNAL_VOLK=OFF"
+    ]
+  ;
+
+  postInstall = shared.postInstall
+    # This is the only python reference worth removing, if needed (3.7 doesn't
+    # set that reference).
+    + lib.optionalString (!hasFeature "python-support" features) ''
+      ${removeReferencesTo}/bin/remove-references-to -t ${python} $out/lib/cmake/gnuradio/GnuradioConfig.cmake
+    ''
+  ;
+  patches = [
+    # Don't install python referencing files if python support is disabled.
+    # See: https://github.com/gnuradio/gnuradio/pull/3839
+    (fetchpatch {
+      url = "https://github.com/gnuradio/gnuradio/commit/4a4fd570b398b0b50fe875fcf0eb9c9db2ea5c6e.diff";
+      sha256 = "xz2E0ji6zfdOAhjfPecAcaVOIls1XP8JngLkBbBBW5Q=";
+    })
+    (fetchpatch {
+      url = "https://github.com/gnuradio/gnuradio/commit/dbc8ad7e7361fddc7b1dbc267c07a776a3f9664b.diff";
+      sha256 = "tQcCpcUbJv3yqAX8rSHN/pAuBq4ueEvoVo7sNzZGvf4=";
+    })
+    # Needed to use boost 1.7x, see:
+    # https://github.com/gnuradio/gnuradio/issues/3720
+    # https://github.com/gnuradio/gnuradio/pull/3967
+    (fetchpatch {
+      url = "https://github.com/gnuradio/gnuradio/commit/cbcb968358fad56f3646619b258f18b0e6693a07.diff";
+      sha256 = "1ajf4797f869lqv436xw61s29qdbn7f01i0970kfxv3yahd34p9v";
+    })
+  ];
+}
diff --git a/pkgs/applications/radio/gnuradio/default.nix b/pkgs/applications/radio/gnuradio/default.nix
index 304fccf91d0..bcb2560144a 100644
--- a/pkgs/applications/radio/gnuradio/default.nix
+++ b/pkgs/applications/radio/gnuradio/default.nix
@@ -5,8 +5,8 @@
 # Remove gcc and python references
 , removeReferencesTo
 , pkg-config
+, volk
 , cppunit
-, swig
 , orc
 , boost
 , log4cpp
@@ -22,6 +22,9 @@
 , uhd
 , SDL
 , gsl
+, libsodium
+, libsndfile
+, libunwind
 , cppzmq
 , zeromq
 # Needed only if qt-gui is disabled, from some reason
@@ -40,16 +43,15 @@
 , overrideSrc ? {}
 , pname ? "gnuradio"
 , versionAttr ? {
-  major = "3.8";
-  minor = "2";
+  major = "3.9";
+  minor = "0";
   patch = "0";
 }
-# Should be false on the release after 3.8.2.0
-, fetchSubmodules ? true
+, fetchSubmodules ? false
 }:
 
 let
-  sourceSha256 =  "1mnfwdy7w3160vi6110x2qkyq8l78qi8771zwak9n72bl7lhhpnf";
+  sourceSha256 =  "ZjQzioAuWrd8jsYOnLNH1mK4n9EbrjgvPX3mTzVFdLk=";
   featuresInfo = {
     # Needed always
     basic = {
@@ -59,6 +61,7 @@ let
         orc
       ];
       runtime = [
+        volk
         boost
         log4cpp
         mpir
@@ -71,23 +74,13 @@ let
         six
       ];
     };
-    # NOTE: Should be removed on the release after 3.8.2.0, see:
-    # https://github.com/gnuradio/gnuradio/commit/80c04479d
-    volk = {
-      cmakeEnableFlag = "VOLK";
-    };
     doxygen = {
       native = [ doxygen ];
       cmakeEnableFlag = "DOXYGEN";
     };
-    sphinx = {
-      pythonNative = with python.pkgs; [ sphinx ];
-      cmakeEnableFlag = "SPHINX";
-    };
     python-support = {
       pythonRuntime = [ python.pkgs.six ];
       native = [
-        swig
         python
       ];
       cmakeEnableFlag = "PYTHON";
@@ -96,17 +89,23 @@ let
       native = [ cppunit ];
       cmakeEnableFlag = "TESTING";
     };
+    post-install = {
+      cmakeEnableFlag = "POSTINSTALL";
+    };
     gnuradio-runtime = {
       cmakeEnableFlag = "GNURADIO_RUNTIME";
+      pythonRuntime = [
+        python.pkgs.pybind11
+      ];
     };
     gr-ctrlport = {
       # Thrift support is not really working well, and even the patch they
       # recommend applying on 0.9.2 won't apply. See:
-      # https://github.com/gnuradio/gnuradio/blob/v3.8.2.0/gnuradio-runtime/lib/controlport/thrift/README
-      cmakeEnableFlag = "GR_CTRLPORT";
-      native = [
-        swig
+      # https://github.com/gnuradio/gnuradio/blob/v3.9.0.0/gnuradio-runtime/lib/controlport/thrift/README
+      runtime = [
+        libunwind
       ];
+      cmakeEnableFlag = "GR_CTRLPORT";
     };
     gnuradio-companion = {
       pythonRuntime = with python.pkgs; [
@@ -115,11 +114,15 @@ let
         numpy
         pygobject3
       ];
+      native = [
+        python.pkgs.pytest
+      ];
       runtime = [
         gtk3
         pango
         gobject-introspection
         cairo
+        libsndfile
       ];
       cmakeEnableFlag = "GRC";
     };
@@ -180,22 +183,29 @@ let
       ];
       cmakeEnableFlag = "GR_MODTOOL";
     };
+    gr-blocktool = {
+      cmakeEnableFlag = "GR_BLOCKTOOL";
+    };
     gr-video-sdl = {
       runtime = [ SDL ];
       cmakeEnableFlag = "GR_VIDEO_SDL";
     };
-    gr-vocoder = {
-      runtime = [ codec2 gsm ];
-      cmakeEnableFlag = "GR_VOCODER";
-    };
+    # codec2 and gsm support is broken with gr3.9: https://github.com/gnuradio/gnuradio/issues/4278
+    # gr-vocoder = {
+      # runtime = [ codec2 gsm ];
+      # cmakeEnableFlag = "GR_VOCODER";
+    # };
     gr-wavelet = {
       cmakeEnableFlag = "GR_WAVELET";
-      runtime = [ gsl ];
+      runtime = [ gsl libsodium ];
     };
     gr-zeromq = {
       runtime = [ cppzmq zeromq ];
       cmakeEnableFlag = "GR_ZEROMQ";
     };
+    gr-network = {
+      cmakeEnableFlag = "GR_NETWORK";
+    };
   };
   shared = (import ./shared.nix {
     inherit
@@ -222,9 +232,9 @@ stdenv.mkDerivation rec {
   inherit (shared)
     version
     src
-    hasFeature # function
     nativeBuildInputs
     buildInputs
+    cmakeFlags
     disallowedReferences
     stripDebugList
     doCheck
@@ -240,46 +250,16 @@ stdenv.mkDerivation rec {
   } // lib.optionalAttrs (hasFeature "gr-qtgui" features) {
     inherit (libsForQt5) qwt;
   };
-  cmakeFlags = shared.cmakeFlags
-    # From some reason, if these are not set, libcodec2 and gsm are not
-    # detected properly. NOTE: qradiolink needs libcodec2 to be detected in
-    # order to build, see https://github.com/qradiolink/qradiolink/issues/67
-    ++ lib.optionals (hasFeature "gr-vocoder" features) [
-      "-DLIBCODEC2_LIBRARIES=${codec2}/lib/libcodec2.so"
-      "-DLIBCODEC2_INCLUDE_DIRS=${codec2}/include"
-      "-DLIBCODEC2_HAS_FREEDV_API=ON"
-      "-DLIBGSM_LIBRARIES=${gsm}/lib/libgsm.so"
-      "-DLIBGSM_INCLUDE_DIRS=${gsm}/include/gsm"
-    ]
-    ++ lib.optionals (hasFeature "volk" features && volk != null) [
-      "-DENABLE_INTERNAL_VOLK=OFF"
-    ]
-  ;
 
   postInstall = shared.postInstall
-    # This is the only python reference worth removing, if needed (3.7 doesn't
-    # set that reference).
+    # This is the only python reference worth removing, if needed.
+    # Even if python support is enabled, and we don't care about this
+    # reference, pybind's path is not properly set. See:
+    # https://github.com/gnuradio/gnuradio/issues/4380
     + lib.optionalString (!hasFeature "python-support" features) ''
       ${removeReferencesTo}/bin/remove-references-to -t ${python} $out/lib/cmake/gnuradio/GnuradioConfig.cmake
+      ${removeReferencesTo}/bin/remove-references-to -t ${python} $(readlink -f $out/lib/libgnuradio-runtime.so)
+      ${removeReferencesTo}/bin/remove-references-to -t ${python.pkgs.pybind11} $out/lib/cmake/gnuradio/gnuradio-runtimeTargets.cmake
     ''
   ;
-  patches = [
-    # Don't install python referencing files if python support is disabled.
-    # See: https://github.com/gnuradio/gnuradio/pull/3839
-    (fetchpatch {
-      url = "https://github.com/gnuradio/gnuradio/commit/4a4fd570b398b0b50fe875fcf0eb9c9db2ea5c6e.diff";
-      sha256 = "xz2E0ji6zfdOAhjfPecAcaVOIls1XP8JngLkBbBBW5Q=";
-    })
-    (fetchpatch {
-      url = "https://github.com/gnuradio/gnuradio/commit/dbc8ad7e7361fddc7b1dbc267c07a776a3f9664b.diff";
-      sha256 = "tQcCpcUbJv3yqAX8rSHN/pAuBq4ueEvoVo7sNzZGvf4=";
-    })
-    # Needed to use boost 1.7x, see:
-    # https://github.com/gnuradio/gnuradio/issues/3720
-    # https://github.com/gnuradio/gnuradio/pull/3967
-    (fetchpatch {
-      url = "https://github.com/gnuradio/gnuradio/commit/cbcb968358fad56f3646619b258f18b0e6693a07.diff";
-      sha256 = "1ajf4797f869lqv436xw61s29qdbn7f01i0970kfxv3yahd34p9v";
-    })
-  ];
 }
diff --git a/pkgs/applications/radio/gqrx/default.nix b/pkgs/applications/radio/gqrx/default.nix
index 9514ce2e936..cccdff1f3cc 100644
--- a/pkgs/applications/radio/gqrx/default.nix
+++ b/pkgs/applications/radio/gqrx/default.nix
@@ -3,7 +3,7 @@
 , cmake
 , pkg-config
 , qt5
-, gnuradioMinimal
+, gnuradio3_8Minimal
 , log4cpp
 , mpir
 , fftwFloat
@@ -17,7 +17,7 @@
 
 assert pulseaudioSupport -> libpulseaudio != null;
 
-gnuradioMinimal.pkgs.mkDerivation rec {
+gnuradio3_8Minimal.pkgs.mkDerivation rec {
   pname = "gqrx";
   version = "2.14.4";
 
@@ -39,10 +39,10 @@ gnuradioMinimal.pkgs.mkDerivation rec {
     fftwFloat
     alsaLib
     libjack2
-    gnuradioMinimal.unwrapped.boost
+    gnuradio3_8Minimal.unwrapped.boost
     qt5.qtbase
     qt5.qtsvg
-    gnuradioMinimal.pkgs.osmosdr
+    gnuradio3_8Minimal.pkgs.osmosdr
     rtl-sdr
     hackrf
   ] ++ lib.optionals pulseaudioSupport [ libpulseaudio ];
diff --git a/pkgs/applications/radio/inspectrum/default.nix b/pkgs/applications/radio/inspectrum/default.nix
index 3cc8c59cc02..9d61ab4b601 100644
--- a/pkgs/applications/radio/inspectrum/default.nix
+++ b/pkgs/applications/radio/inspectrum/default.nix
@@ -1,5 +1,5 @@
 { lib
-, gnuradioMinimal
+, gnuradio3_8Minimal
 , fetchFromGitHub
 , pkg-config
 , cmake
@@ -8,7 +8,7 @@
 , liquid-dsp
 }:
 
-gnuradioMinimal.pkgs.mkDerivation rec {
+gnuradio3_8Minimal.pkgs.mkDerivation rec {
   pname = "inspectrum";
   version = "0.2.3";
 
diff --git a/pkgs/applications/radio/qradiolink/default.nix b/pkgs/applications/radio/qradiolink/default.nix
index db459eb3bb3..2dbd9f1aba9 100644
--- a/pkgs/applications/radio/qradiolink/default.nix
+++ b/pkgs/applications/radio/qradiolink/default.nix
@@ -3,7 +3,7 @@
 , libpulseaudio
 , libconfig
 # Needs a gnuradio built with qt gui support
-, gnuradio
+, gnuradio3_8
 # Not gnuradioPackages'
 , codec2
 , log4cpp
@@ -18,7 +18,7 @@
 , speexdsp
 }:
 
-gnuradio.pkgs.mkDerivation rec {
+gnuradio3_8.pkgs.mkDerivation rec {
   pname = "qradiolink";
   version = "0.8.5-2";
 
@@ -44,28 +44,28 @@ gnuradio.pkgs.mkDerivation rec {
   '';
 
   buildInputs = [
-    gnuradio.unwrapped.boost
+    gnuradio3_8.unwrapped.boost
     codec2
     log4cpp
     gmp
     libpulseaudio
     libconfig
     gsm
-    gnuradio.pkgs.osmosdr
+    gnuradio3_8.pkgs.osmosdr
     libopus
     libjpeg
     speex
     speexdsp
-    gnuradio.qt.qtbase
-    gnuradio.qt.qtmultimedia
+    gnuradio3_8.qt.qtbase
+    gnuradio3_8.qt.qtmultimedia
     libftdi
     libsndfile
-    gnuradio.qwt
+    gnuradio3_8.qwt
   ];
   nativeBuildInputs = [
     protobuf
-    gnuradio.qt.qmake
-    gnuradio.qt.wrapQtAppsHook
+    gnuradio3_8.qt.qmake
+    gnuradio3_8.qt.wrapQtAppsHook
   ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/gnuradio-modules/limesdr/default.nix b/pkgs/development/gnuradio-modules/limesdr/default.nix
index 63136b33d65..c10ab9df391 100644
--- a/pkgs/development/gnuradio-modules/limesdr/default.nix
+++ b/pkgs/development/gnuradio-modules/limesdr/default.nix
@@ -19,6 +19,7 @@ let
   version = {
     "3.7" = "2.0.0";
     "3.8" = "3.0.1";
+    "3.9" = null;
   }.${gnuradio.versionAttr.major};
   src = fetchFromGitHub {
     owner = "myriadrf";
@@ -27,6 +28,7 @@ let
     sha256 = {
       "3.7" = "0ldqvfwl0gil89l9s31fjf9d7ki0dk572i8vna336igfaz348ypq";
       "3.8" = "ffs+8TU0yr6IW1xZJ/abQ1CQWGZM+zYqPRJxy3ZvM9U=";
+      "3.9" = null;
     }.${gnuradio.versionAttr.major};
   };
 in mkDerivation {
diff --git a/pkgs/development/gnuradio-modules/osmosdr/default.nix b/pkgs/development/gnuradio-modules/osmosdr/default.nix
index 4159862bbed..0e1cf244c8f 100644
--- a/pkgs/development/gnuradio-modules/osmosdr/default.nix
+++ b/pkgs/development/gnuradio-modules/osmosdr/default.nix
@@ -24,6 +24,7 @@ let
   version = {
     "3.7" = "0.1.5";
     "3.8" = "0.2.2";
+    "3.9" = null;
   }.${gnuradio.versionAttr.major};
   src = fetchgit {
     url = "git://git.osmocom.org/gr-osmosdr";
@@ -31,6 +32,7 @@ let
     sha256 = {
       "3.7" = "0bf9bnc1c3c4yqqqgmg3nhygj6rcfmyk6pybi27f7461d2cw1drv";
       "3.8" = "HT6xlN6cJAnvF+s1g2I1uENhBJJizdADlLXeSD0rEqs=";
+      "3.9" = null;
     }.${gnuradio.versionAttr.major};
   };
 in mkDerivation {
diff --git a/pkgs/development/gnuradio-modules/rds/default.nix b/pkgs/development/gnuradio-modules/rds/default.nix
index a2062783bd7..c068d6af810 100644
--- a/pkgs/development/gnuradio-modules/rds/default.nix
+++ b/pkgs/development/gnuradio-modules/rds/default.nix
@@ -17,6 +17,7 @@ let
   version = {
     "3.7" = "1.1.0";
     "3.8" = "3.8.0";
+    "3.9" = null;
   }.${gnuradio.versionAttr.major};
   src = fetchFromGitHub {
     owner = "bastibl";
@@ -25,6 +26,7 @@ let
     sha256 = {
       "3.7" = "0jkzchvw0ivcxsjhi1h0mf7k13araxf5m4wi5v9xdgqxvipjzqfy";
       "3.8" = "+yKLJu2bo7I2jkAiOdjvdhZwxFz9NFgTmzcLthH9Y5o=";
+      "3.9" = null;
     }.${gnuradio.versionAttr.major};
   };
 in mkDerivation {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index fd680c47af1..d9cdd3b0a59 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -22353,6 +22353,35 @@ in
         gr-qtgui = false;
         gr-utils = false;
         gr-modtool = false;
+        gr-blocktool = false;
+        sphinx = false;
+        doxygen = false;
+      };
+    };
+  };
+  gnuradio3_8 = callPackage ../applications/radio/gnuradio/wrapper.nix {
+    unwrapped = callPackage ../applications/radio/gnuradio/3.8.nix {
+      inherit (darwin.apple_sdk.frameworks) CoreAudio;
+      python = python3;
+      boost = boost17x;
+    };
+  };
+  gnuradio3_8Packages = lib.recurseIntoAttrs gnuradio3_8.pkgs;
+  # A build without gui components and other utilites not needed if gnuradio is
+  # used as a c++ library.
+  gnuradio3_8Minimal = gnuradio3_8.override {
+    wrap = false;
+    unwrapped = gnuradio3_8.unwrapped.override {
+      volk = volk.override {
+        enableModTool = false;
+      };
+      features = {
+        gnuradio-companion = false;
+        python-support = false;
+        examples = false;
+        gr-qtgui = false;
+        gr-utils = false;
+        gr-modtool = false;
         sphinx = false;
         doxygen = false;
       };