nixpkgs/pkgs/top-level/gnuradio-packages.nix
Doron Behar c36fb059a6 gnuradio: Allow overriding .pkgs with packageOverrides
Tested with the following diff:

```diff
diff --git i/pkgs/by-name/gq/gqrx/package.nix w/pkgs/by-name/gq/gqrx/package.nix
index 1d91b52ce7a8..111eb293ac9b 100644
--- i/pkgs/by-name/gq/gqrx/package.nix
+++ w/pkgs/by-name/gq/gqrx/package.nix
@@ -27,7 +27,19 @@ assert portaudioSupport -> portaudio != null;
 # audio backends are mutually exclusive
 assert !(pulseaudioSupport && portaudioSupport);

-gnuradioMinimal.pkgs.mkDerivation rec {
+let
+  gnuradioMinimal' = gnuradioMinimal.override {
+    packageOverrides = grSelf: grSuper: {
+      osmosdr = grSuper.osmosdr.override {
+        airspy = null;
+        hackrf = null;
+        libbladeRF = null;
+        soapysdr-with-plugins = null;
+      };
+    };
+  };
+in
+gnuradioMinimal'.pkgs.mkDerivation rec {
   pname = "gqrx";
   version = "2.17.7";

@@ -47,14 +59,14 @@ gnuradioMinimal.pkgs.mkDerivation rec {
   ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;

   buildInputs = [
-    gnuradioMinimal.unwrapped.logLib
+    gnuradioMinimal'.unwrapped.logLib
     mpir
     fftwFloat
     libjack2
-    gnuradioMinimal.unwrapped.boost
+    gnuradioMinimal'.unwrapped.boost
     qt6Packages.qtbase
     qt6Packages.qtsvg
-    gnuradioMinimal.pkgs.osmosdr
+    gnuradioMinimal'.pkgs.osmosdr
     rtl-sdr
     hackrf
   ]
@@ -62,9 +74,9 @@ gnuradioMinimal.pkgs.mkDerivation rec {
     alsa-lib
     qt6Packages.qtwayland
   ]
-  ++ lib.optionals (gnuradioMinimal.hasFeature "gr-ctrlport") [
+  ++ lib.optionals (gnuradioMinimal'.hasFeature "gr-ctrlport") [
     thrift
-    gnuradioMinimal.unwrapped.python.pkgs.thrift
+    gnuradioMinimal'.unwrapped.python.pkgs.thrift
   ]
   ++ lib.optionals pulseaudioSupport [ libpulseaudio ]
   ++ lib.optionals portaudioSupport [ portaudio ];
```
2026-03-04 14:56:34 +02:00

55 lines
1.4 KiB
Nix

{
lib,
stdenv,
newScope,
gnuradio, # unwrapped gnuradio
packageOverrides,
}:
lib.makeScope newScope (
self:
let
# Modeled after qt's
mkDerivationWith = import ../development/gnuradio-modules/mkDerivation.nix {
inherit lib;
unwrapped = gnuradio;
};
mkDerivation = mkDerivationWith stdenv.mkDerivation;
callPackage = self.newScope (
{
inherit (gnuradio)
# Packages that are potentially overridden and used as deps here.
boost
volk
logLib
python
qwt
;
inherit mkDerivationWith mkDerivation;
inherit gnuradio;
inherit (gnuradio) gnuradioOlder gnuradioAtLeast;
}
// lib.optionalAttrs (gnuradio.hasFeature "gr-uhd") {
inherit (gnuradio) uhd;
}
);
# Base package set without overrides
basePackages = {
inherit callPackage mkDerivation mkDerivationWith;
bladeRF = callPackage ../development/gnuradio-modules/bladeRF/default.nix { };
lora_sdr = callPackage ../development/gnuradio-modules/lora_sdr/default.nix { };
osmosdr = callPackage ../development/gnuradio-modules/osmosdr/default.nix { };
fosphor = callPackage ../development/gnuradio-modules/fosphor/default.nix { };
gr-difi = callPackage ../development/gnuradio-modules/gr-difi/default.nix { };
};
in
basePackages // (packageOverrides self basePackages)
)