Commit c36fb059 authored by Doron Behar's avatar Doron Behar
Browse files

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 ];
```
parent 606ca34e
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -240,6 +240,22 @@

- We now use the upstream wrapper script for Gradle, supporting both the `JAVA_HOME` and `GRADLE_OPTS` environment variables.

- `gnuradio`: Overriding the `.pkgs` package set is now possible with a `packageOverrides` function, like with `python.pkgs` and other language-specific package sets.
Example:

```nix
gnuradioMinimal.override {
  packageOverrides = grSelf: grSuper: {
    osmosdr = grSuper.osmosdr.override {
      airspy = null;
      hackrf = null;
      libbladeRF = null;
      soapysdr-with-plugins = null;
    };
  };
}
```

## Nixpkgs Library {#sec-nixpkgs-release-26.05-lib}

<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
+7 −1
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@
  ],
  # Allow to add whatever you want to the wrapper
  extraMakeWrapperArgs ? [ ],
  packageOverrides ? (self: super: { }),
}:

let
@@ -191,7 +192,12 @@ let
  );

  packages = import ../../../top-level/gnuradio-packages.nix {
    inherit lib stdenv newScope;
    inherit
      lib
      stdenv
      newScope
      packageOverrides
      ;
    gnuradio = unwrapped;
  };
  passthru = unwrapped.passthru // {
+2 −0
Original line number Diff line number Diff line
@@ -2,11 +2,13 @@
  gnuradio,
  volk,
  uhdMinimal,
  packageOverrides ? (self: super: { }),
}:
# A build without gui components and other utilities not needed for end user
# libraries
gnuradio.override {
  doWrap = false;
  inherit packageOverrides;
  unwrapped = gnuradio.unwrapped.override {
    volk = volk.override {
      # So it will not reference python
+12 −11
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
  stdenv,
  newScope,
  gnuradio, # unwrapped gnuradio
  packageOverrides,
}:

lib.makeScope newScope (
@@ -34,13 +35,11 @@ lib.makeScope newScope (
        inherit (gnuradio) uhd;
      }
    );
  in
  {

    # Base package set without overrides
    basePackages = {
      inherit callPackage mkDerivation mkDerivationWith;

    ### Packages

      bladeRF = callPackage ../development/gnuradio-modules/bladeRF/default.nix { };

      lora_sdr = callPackage ../development/gnuradio-modules/lora_sdr/default.nix { };
@@ -50,5 +49,7 @@ lib.makeScope newScope (
      fosphor = callPackage ../development/gnuradio-modules/fosphor/default.nix { };

      gr-difi = callPackage ../development/gnuradio-modules/gr-difi/default.nix { };
  }
    };
  in
  basePackages // (packageOverrides self basePackages)
)