gnuradio.pkgs: init

- Write a `mkDerivation` and `mkDerivationWith` function for gnuradio,
like qt5.
- qradiolink, gqrx: Use gnuradio's callPackage and mkDerivation.
- Use gnuradio.callPackage to define all gnuradio.pkgs.
- Move all gnuradio packages expressions to pkgs/development/gnuradio-modules/ -
modeled after Python's.
- Add more paths to gnuradio's wrapper - add the extra packages as
python modules, and add their executables with proper env vars
wrapping.

Co-authored-by: Frederik Rietdijk <fridh@fridh.nl>

+598 -384
+11 -1
nixos/doc/manual/release-notes/rl-2105.xml
··· 36 now point to an externally wrapped by default derivations, that allow you to 37 also add `extraPythonPackages` to the Python interpreter used by GNURadio. 38 Missing environmental variables needed for operational GUI were also added 39 - (<link xlink:href="https://github.com/NixOS/nixpkgs/issues/75478">#7547</link>). 40 </para> 41 </listitem> 42 <listitem>
··· 36 now point to an externally wrapped by default derivations, that allow you to 37 also add `extraPythonPackages` to the Python interpreter used by GNURadio. 38 Missing environmental variables needed for operational GUI were also added 39 + (<link xlink:href="https://github.com/NixOS/nixpkgs/issues/75478">#75478</link>). 40 + </para> 41 + </listitem> 42 + <listitem> 43 + <para> 44 + <link xlink:href="https://www.gnuradio.org/">GNURadio</link> has a 45 + <code>pkgs</code> attribute set, and there's a <code>gnuradio.callPackage</code> 46 + function that extends <code>pkgs</code> with a <code>mkDerivation</code>, and a 47 + <code>mkDerivationWith</code>, like Qt5. Now all <code>gnuradio.pkgs</code> are 48 + defined with <code>gnuradio.callPackage</code> and some packages that depend 49 + on gnuradio are defined with this as well. 50 </para> 51 </listitem> 52 <listitem>
+7 -1
pkgs/applications/radio/gnuradio/3.7.nix
··· 221 buildInputs 222 disallowedReferences 223 postInstall 224 - passthru 225 doCheck 226 dontWrapPythonPrograms 227 meta 228 ; 229 cmakeFlags = shared.cmakeFlags 230 # From some reason, if these are not set, libcodec2 and gsm are 231 # not detected properly (slightly different then what's in
··· 221 buildInputs 222 disallowedReferences 223 postInstall 224 doCheck 225 dontWrapPythonPrograms 226 meta 227 ; 228 + 229 + passthru = shared.passthru // { 230 + # Deps that are potentially overriden and are used inside GR plugins - the same version must 231 + inherit boost; 232 + } // lib.optionalAttrs (hasFeature "gr-uhd" features) { 233 + inherit uhd; 234 + }; 235 cmakeFlags = shared.cmakeFlags 236 # From some reason, if these are not set, libcodec2 and gsm are 237 # not detected properly (slightly different then what's in
-53
pkgs/applications/radio/gnuradio/ais.nix
··· 1 - { lib 2 - , stdenv 3 - , fetchFromGitHub 4 - , cmake 5 - , pkg-config 6 - , boost 7 - , gnuradio 8 - , makeWrapper 9 - , cppunit 10 - , gr-osmosdr 11 - , log4cpp 12 - , pythonSupport ? true 13 - , python 14 - , swig 15 - , fetchpatch 16 - }: 17 - 18 - stdenv.mkDerivation { 19 - pname = "gr-ais"; 20 - version = "2015-12-20"; 21 - 22 - src = fetchFromGitHub { 23 - owner = "bistromath"; 24 - repo = "gr-ais"; 25 - rev = "cdc1f52745853f9c739c718251830eb69704b26e"; 26 - sha256 = "1vl3kk8xr2mh5lf31zdld7yzmwywqffffah8iblxdzblgsdwxfl6"; 27 - }; 28 - 29 - patches = [ 30 - (fetchpatch { 31 - url = "https://github.com/bistromath/gr-ais/commit/8502d0252a2a1a9b8d1a71795eaeb5d820684054.patch"; 32 - sha256 = "1cwalphldvf6dbhzwz1gi53z0cb4921qsvlz4138q7m6dxccvssg"; 33 - }) 34 - ]; 35 - 36 - nativeBuildInputs = [ cmake makeWrapper pkg-config ]; 37 - buildInputs = [ boost gnuradio cppunit gr-osmosdr log4cpp ] 38 - ++ lib.optionals pythonSupport [ python swig ]; 39 - 40 - postInstall = '' 41 - for prog in "$out"/bin/*; do 42 - wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out") 43 - done 44 - ''; 45 - 46 - meta = with lib; { 47 - description = "Gnuradio block for ais"; 48 - homepage = "https://github.com/bistromath/gr-ais"; 49 - license = licenses.gpl3Plus; 50 - platforms = platforms.linux ++ platforms.darwin; 51 - maintainers = with maintainers; [ mog ]; 52 - }; 53 - }
···
+8
pkgs/applications/radio/gnuradio/default.nix
··· 228 dontWrapQtApps 229 meta 230 ; 231 cmakeFlags = shared.cmakeFlags 232 # From some reason, if these are not set, libcodec2 and gsm are not 233 # detected properly. NOTE: qradiolink needs libcodec2 to be detected in
··· 228 dontWrapQtApps 229 meta 230 ; 231 + passthru = shared.passthru // { 232 + # Deps that are potentially overriden and are used inside GR plugins - the same version must 233 + inherit boost; 234 + } // lib.optionalAttrs (hasFeature "gr-uhd" features) { 235 + inherit uhd; 236 + } // lib.optionalAttrs (hasFeature "gr-qtgui" features) { 237 + inherit (libsForQt5) qwt; 238 + }; 239 cmakeFlags = shared.cmakeFlags 240 # From some reason, if these are not set, libcodec2 and gsm are not 241 # detected properly. NOTE: qradiolink needs libcodec2 to be detected in
-37
pkgs/applications/radio/gnuradio/gsm.nix
··· 1 - { lib, stdenv, fetchFromGitHub, cmake, pkg-config, boost, gnuradio, log4cpp 2 - , makeWrapper, cppunit, libosmocore, gr-osmosdr 3 - , pythonSupport ? true, python, swig 4 - }: 5 - 6 - assert pythonSupport -> python != null && swig != null; 7 - 8 - stdenv.mkDerivation { 9 - pname = "gr-gsm"; 10 - version = "2016-08-25"; 11 - 12 - src = fetchFromGitHub { 13 - owner = "ptrkrysik"; 14 - repo = "gr-gsm"; 15 - rev = "3ca05e6914ef29eb536da5dbec323701fbc2050d"; 16 - sha256 = "13nnq927kpf91iqccr8db9ripy5czjl5jiyivizn6bia0bam2pvx"; 17 - }; 18 - 19 - nativeBuildInputs = [ cmake pkg-config ]; 20 - buildInputs = [ 21 - boost gnuradio makeWrapper cppunit libosmocore gr-osmosdr log4cpp 22 - ] ++ lib.optionals pythonSupport [ python swig ]; 23 - 24 - postInstall = '' 25 - for prog in "$out"/bin/*; do 26 - wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:${gr-osmosdr}/lib/${python.libPrefix}/site-packages:$(toPythonPath "$out") 27 - done 28 - ''; 29 - 30 - meta = with lib; { 31 - description = "Gnuradio block for gsm"; 32 - homepage = "https://github.com/ptrkrysik/gr-gsm"; 33 - license = licenses.gpl3Plus; 34 - platforms = platforms.linux; 35 - maintainers = with maintainers; [ mog ]; 36 - }; 37 - }
···
-38
pkgs/applications/radio/gnuradio/limesdr.nix
··· 1 - { lib, stdenv, fetchFromGitHub, cmake, pkg-config, boost, gnuradio 2 - , pythonSupport ? true, python, swig, limesuite, log4cpp 3 - } : 4 - 5 - assert pythonSupport -> python != null && swig != null; 6 - 7 - let 8 - version = "2.0.0"; 9 - 10 - in stdenv.mkDerivation { 11 - pname = "gr-limesdr"; 12 - inherit version; 13 - 14 - src = fetchFromGitHub { 15 - owner = "myriadrf"; 16 - repo = "gr-limesdr"; 17 - rev = "v${version}"; 18 - sha256 = "0ldqvfwl0gil89l9s31fjf9d7ki0dk572i8vna336igfaz348ypq"; 19 - }; 20 - 21 - nativeBuildInputs = [ 22 - cmake 23 - pkg-config 24 - ] ++ lib.optionals pythonSupport [ swig ]; 25 - 26 - buildInputs = [ 27 - boost gnuradio limesuite log4cpp 28 - ] ++ lib.optionals pythonSupport [ python ]; 29 - 30 - 31 - meta = with lib; { 32 - description = "Gnuradio source and sink blocks for LimeSDR"; 33 - homepage = "https://wiki.myriadrf.org/Gr-limesdr_Plugin_for_GNURadio"; 34 - license = licenses.mit; 35 - platforms = platforms.linux; 36 - maintainers = [ maintainers.markuskowa ]; 37 - }; 38 - }
···
-37
pkgs/applications/radio/gnuradio/nacl.nix
··· 1 - { lib, stdenv, fetchFromGitHub, cmake, pkg-config, boost, gnuradio, uhd 2 - , makeWrapper, libsodium, cppunit, log4cpp 3 - , pythonSupport ? true, python, swig 4 - }: 5 - 6 - assert pythonSupport -> python != null && swig != null; 7 - 8 - stdenv.mkDerivation { 9 - pname = "gr-nacl"; 10 - version = "2017-04-10"; 11 - 12 - src = fetchFromGitHub { 13 - owner = "stwunsch"; 14 - repo = "gr-nacl"; 15 - rev = "15276bb0fcabf5fe4de4e58df3d579b5be0e9765"; 16 - sha256 = "018np0qlk61l7mlv3xxx5cj1rax8f1vqrsrch3higsl25yydbv7v"; 17 - }; 18 - 19 - nativeBuildInputs = [ cmake pkg-config ]; 20 - buildInputs = [ 21 - boost gnuradio uhd makeWrapper libsodium cppunit log4cpp 22 - ] ++ lib.optionals pythonSupport [ python swig ]; 23 - 24 - postInstall = '' 25 - for prog in "$out"/bin/*; do 26 - wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out") 27 - done 28 - ''; 29 - 30 - meta = with lib; { 31 - description = "Gnuradio block for encryption"; 32 - homepage = "https://github.com/stwunsch/gr-nacl"; 33 - license = licenses.gpl3Plus; 34 - platforms = platforms.linux ++ platforms.darwin; 35 - maintainers = with maintainers; [ mog ]; 36 - }; 37 - }
···
-45
pkgs/applications/radio/gnuradio/osmosdr.nix
··· 1 - { lib, stdenv, fetchgit, cmake, pkg-config, makeWrapper 2 - , boost 3 - , pythonSupport ? true, python, swig 4 - , airspy 5 - , gnuradio 6 - , hackrf 7 - , libbladeRF 8 - , rtl-sdr 9 - , soapysdr-with-plugins 10 - , uhd 11 - , log4cpp 12 - }: 13 - 14 - assert pythonSupport -> python != null && swig != null; 15 - 16 - stdenv.mkDerivation rec { 17 - pname = "gr-osmosdr"; 18 - version = "0.1.5"; 19 - 20 - src = fetchgit { 21 - url = "git://git.osmocom.org/gr-osmosdr"; 22 - rev = "v${version}"; 23 - sha256 = "0bf9bnc1c3c4yqqqgmg3nhygj6rcfmyk6pybi27f7461d2cw1drv"; 24 - }; 25 - 26 - nativeBuildInputs = [ cmake makeWrapper pkg-config ]; 27 - buildInputs = [ 28 - boost log4cpp airspy gnuradio hackrf libbladeRF rtl-sdr uhd 29 - ] ++ lib.optionals stdenv.isLinux [ soapysdr-with-plugins ] 30 - ++ lib.optionals pythonSupport [ python swig python.pkgs.cheetah ]; 31 - 32 - postInstall = '' 33 - for prog in "$out"/bin/*; do 34 - wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out") 35 - done 36 - ''; 37 - 38 - meta = with lib; { 39 - description = "Gnuradio block for OsmoSDR and rtl-sdr"; 40 - homepage = "https://sdr.osmocom.org/trac/wiki/GrOsmoSDR"; 41 - license = licenses.gpl3Plus; 42 - platforms = platforms.linux ++ platforms.darwin; 43 - maintainers = with maintainers; [ bjornfor ]; 44 - }; 45 - }
···
-36
pkgs/applications/radio/gnuradio/rds.nix
··· 1 - { lib, stdenv, fetchFromGitHub, cmake, pkg-config, boost, gnuradio, log4cpp 2 - , makeWrapper, pythonSupport ? true, python, swig 3 - }: 4 - 5 - assert pythonSupport -> python != null && swig != null; 6 - 7 - stdenv.mkDerivation rec { 8 - pname = "gr-rds"; 9 - version = "1.1.0"; 10 - 11 - src = fetchFromGitHub { 12 - owner = "bastibl"; 13 - repo = "gr-rds"; 14 - rev = "v${version}"; 15 - sha256 = "0jkzchvw0ivcxsjhi1h0mf7k13araxf5m4wi5v9xdgqxvipjzqfy"; 16 - }; 17 - 18 - nativeBuildInputs = [ cmake pkg-config ]; 19 - buildInputs = [ 20 - boost gnuradio makeWrapper log4cpp 21 - ] ++ lib.optionals pythonSupport [ python swig ]; 22 - 23 - postInstall = '' 24 - for prog in "$out"/bin/*; do 25 - wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out") 26 - done 27 - ''; 28 - 29 - meta = with lib; { 30 - description = "Gnuradio block for radio data system"; 31 - homepage = "https://github.com/bastibl/gr-rds"; 32 - license = licenses.gpl2Plus; 33 - platforms = platforms.linux ++ platforms.darwin; 34 - maintainers = with maintainers; [ mog ]; 35 - }; 36 - }
···
+86 -39
pkgs/applications/radio/gnuradio/wrapper.nix
··· 1 { lib 2 , stdenv 3 , unwrapped 4 , makeWrapper 5 # For lndir 6 , xorg 7 # For Emulating wrapGAppsHook 8 , gsettings-desktop-schemas 9 , glib ··· 37 [] 38 ) 39 ) unwrapped.featuresInfo) 40 - ++ lib.optionals (unwrapped.hasFeature "python-support" unwrapped.features) [ 41 - # Add unwrapped itself as a python module 42 - (unwrapped.python.pkgs.toPythonModule unwrapped) 43 - ] 44 ; 45 - python3Env = unwrapped.python.withPackages(ps: pythonPkgs); 46 47 name = (lib.appendToName "wrapped" unwrapped).name; 48 makeWrapperArgs = builtins.concatStringsSep " " ([ ··· 88 (if unwrapped.versionAttr.major == "3.8" then 89 [ 90 "--prefix" "QT_PLUGIN_PATH" ":" 91 - "${lib.getBin unwrapped.qt.qtbase}/${unwrapped.qt.qtbase.qtPluginPrefix}" 92 "--prefix" "QML2_IMPORT_PATH" ":" 93 - "${lib.getBin unwrapped.qt.qtbase}/${unwrapped.qt.qtbase.qtQmlPrefix}" 94 ] 95 else 96 - # TODO: Add here qt4 related environment for 3.7? 97 [ 98 99 ] 100 ) 101 ++ extraMakeWrapperArgs 102 ); 103 - in 104 - stdenv.mkDerivation { 105 - inherit name; 106 107 - buildInputs = [ 108 - makeWrapper 109 - xorg.lndir 110 - ]; 111 - 112 - passthru = { 113 - inherit python3Env pythonPkgs unwrapped; 114 }; 115 - 116 - buildCommand = '' 117 - mkdir $out 118 - cd $out 119 - lndir -silent ${unwrapped} 120 - for i in $out/bin/*; do 121 - if [[ ! -x "$i" ]]; then 122 - continue 123 - fi 124 - cp -L "$i" "$i".tmp 125 - mv -f "$i".tmp "$i" 126 - if head -1 "$i" | grep -q ${unwrapped.python}; then 127 - substituteInPlace "$i" \ 128 - --replace ${unwrapped.python} ${python3Env} 129 - fi 130 - wrapProgram "$i" ${makeWrapperArgs} 131 - done 132 - ''; 133 - 134 - inherit (unwrapped) meta; 135 - }
··· 1 { lib 2 , stdenv 3 + # The unwrapped gnuradio derivation 4 , unwrapped 5 + # If it's a minimal build, we don't want to wrap it with lndir and 6 + # wrapProgram.. 7 + , wrap ? true 8 + # For the wrapper 9 , makeWrapper 10 # For lndir 11 , xorg 12 + # To define a the gnuradio.pkgs scope 13 + , newScope 14 # For Emulating wrapGAppsHook 15 , gsettings-desktop-schemas 16 , glib ··· 44 [] 45 ) 46 ) unwrapped.featuresInfo) 47 + ++ lib.optionals 48 + (unwrapped.hasFeature "python-support" unwrapped.features) 49 + ( 50 + # Add unwrapped itself as a python module 51 + [ (unwrapped.python.pkgs.toPythonModule unwrapped) ] 52 + # Add all extraPackages as python modules 53 + ++ (builtins.map unwrapped.python.pkgs.toPythonModule extraPackages) 54 + ) 55 ; 56 + pythonEnv = unwrapped.python.withPackages(ps: pythonPkgs); 57 58 name = (lib.appendToName "wrapped" unwrapped).name; 59 makeWrapperArgs = builtins.concatStringsSep " " ([ ··· 99 (if unwrapped.versionAttr.major == "3.8" then 100 [ 101 "--prefix" "QT_PLUGIN_PATH" ":" 102 + "${ 103 + lib.makeSearchPath 104 + unwrapped.qt.qtbase.qtPluginPrefix 105 + (builtins.map lib.getBin [ 106 + unwrapped.qt.qtbase 107 + unwrapped.qt.qtwayland 108 + ]) 109 + }" 110 "--prefix" "QML2_IMPORT_PATH" ":" 111 + "${ 112 + lib.makeSearchPath 113 + unwrapped.qt.qtbase.qtQmlPrefix 114 + (builtins.map lib.getBin [ 115 + unwrapped.qt.qtbase 116 + unwrapped.qt.qtwayland 117 + ]) 118 + }" 119 ] 120 else 121 + # Add here qt4 related environment for 3.7? 122 [ 123 124 ] 125 ) 126 ++ extraMakeWrapperArgs 127 ); 128 129 + packages = import ../../../top-level/gnuradio-packages.nix { 130 + inherit lib stdenv newScope; 131 + gnuradio = unwrapped; 132 + }; 133 + passthru = unwrapped.passthru // { 134 + inherit 135 + pythonEnv 136 + pythonPkgs 137 + unwrapped 138 + ; 139 + pkgs = packages; 140 }; 141 + self = if wrap then 142 + stdenv.mkDerivation { 143 + inherit name passthru; 144 + buildInputs = [ 145 + makeWrapper 146 + xorg.lndir 147 + ]; 148 + buildCommand = '' 149 + mkdir $out 150 + cd $out 151 + lndir -silent ${unwrapped} 152 + ${lib.optionalString 153 + (extraPackages != []) 154 + (builtins.concatStringsSep "\n" 155 + (builtins.map (pkg: '' 156 + if [[ -d ${lib.getBin pkg}/bin/ ]]; then 157 + lndir -silent ${pkg}/bin ./bin 158 + fi 159 + '') extraPackages) 160 + ) 161 + } 162 + for i in $out/bin/*; do 163 + if [[ ! -x "$i" ]]; then 164 + continue 165 + fi 166 + cp -L "$i" "$i".tmp 167 + mv -f "$i".tmp "$i" 168 + if head -1 "$i" | grep -q ${unwrapped.python}; then 169 + substituteInPlace "$i" \ 170 + --replace ${unwrapped.python} ${pythonEnv} 171 + fi 172 + wrapProgram "$i" ${makeWrapperArgs} 173 + done 174 + ''; 175 + inherit (unwrapped) meta; 176 + } 177 + else 178 + unwrapped.overrideAttrs(_: { 179 + inherit passthru; 180 + }) 181 + ; 182 + in self
+19 -13
pkgs/applications/radio/qradiolink/default.nix
··· 1 - { lib, stdenv, fetchFromGitHub, alsaLib, boost 2 - , qt4, libpulseaudio, codec2, libconfig 3 - , gnuradio, gr-osmosdr, gsm 4 - , libopus, libjpeg, protobuf, qwt, speex 5 } : 6 7 let 8 version = "0.5.0"; 9 10 - in stdenv.mkDerivation { 11 pname = "qradiolink"; 12 inherit version; 13 ··· 32 ''; 33 34 buildInputs = [ 35 - qt4 36 - alsaLib 37 - boost 38 libpulseaudio 39 - codec2 40 libconfig 41 gsm 42 - gnuradio 43 - gr-osmosdr 44 libopus 45 libjpeg 46 - protobuf 47 speex 48 - qwt 49 ]; 50 51 enableParallelBuilding = true;
··· 1 + { lib 2 + , mkDerivation 3 + , fetchFromGitHub 4 + , libpulseaudio 5 + , libconfig 6 + , gnuradio 7 + , gnuradioPackages 8 + , gsm 9 + , libopus 10 + , libjpeg 11 + , protobuf 12 + , speex 13 + , qmake4Hook 14 } : 15 16 let 17 version = "0.5.0"; 18 19 + in mkDerivation { 20 pname = "qradiolink"; 21 inherit version; 22 ··· 41 ''; 42 43 buildInputs = [ 44 libpulseaudio 45 libconfig 46 gsm 47 + gnuradioPackages.osmosdr 48 libopus 49 libjpeg 50 speex 51 + ]; 52 + nativeBuildInputs = [ 53 + protobuf 54 + qmake4Hook 55 ]; 56 57 enableParallelBuilding = true;
+45
pkgs/development/gnuradio-modules/ais/default.nix
···
··· 1 + { lib 2 + , stdenv 3 + , mkDerivation 4 + , fetchFromGitHub 5 + , cmake 6 + , pkg-config 7 + , python 8 + , boost 9 + , cppunit 10 + , log4cpp 11 + , osmosdr 12 + }: 13 + 14 + mkDerivation rec { 15 + pname = "gr-ais"; 16 + version = "2015-12-20"; 17 + src = fetchFromGitHub { 18 + owner = "bistromath"; 19 + repo = "gr-ais"; 20 + rev = "cdc1f52745853f9c739c718251830eb69704b26e"; 21 + sha256 = "1vl3kk8xr2mh5lf31zdld7yzmwywqffffah8iblxdzblgsdwxfl6"; 22 + }; 23 + disabledForGRafter = "3.8"; 24 + 25 + nativeBuildInputs = [ 26 + cmake 27 + pkg-config 28 + python 29 + ]; 30 + 31 + buildInputs = [ 32 + cppunit 33 + osmosdr 34 + boost 35 + log4cpp 36 + ]; 37 + 38 + meta = with lib; { 39 + description = "Gnuradio block for ais"; 40 + homepage = "https://github.com/bistromath/gr-ais"; 41 + license = licenses.gpl3Plus; 42 + platforms = platforms.unix; 43 + maintainers = with maintainers; [ mog ]; 44 + }; 45 + }
+48
pkgs/development/gnuradio-modules/gsm/default.nix
···
··· 1 + { lib 2 + , mkDerivation 3 + , fetchFromGitHub 4 + , cmake 5 + , pkg-config 6 + , cppunit 7 + , swig 8 + , boost 9 + , log4cpp 10 + , python 11 + , libosmocore 12 + , osmosdr 13 + }: 14 + 15 + mkDerivation { 16 + pname = "gr-gsm"; 17 + version = "2016-08-25"; 18 + src = fetchFromGitHub { 19 + owner = "ptrkrysik"; 20 + repo = "gr-gsm"; 21 + rev = "3ca05e6914ef29eb536da5dbec323701fbc2050d"; 22 + sha256 = "13nnq927kpf91iqccr8db9ripy5czjl5jiyivizn6bia0bam2pvx"; 23 + }; 24 + disabledForGRafter = "3.8"; 25 + 26 + nativeBuildInputs = [ 27 + cmake 28 + pkg-config 29 + swig 30 + python 31 + ]; 32 + 33 + buildInputs = [ 34 + cppunit 35 + log4cpp 36 + boost 37 + libosmocore 38 + osmosdr 39 + ]; 40 + 41 + meta = with lib; { 42 + description = "Gnuradio block for gsm"; 43 + homepage = "https://github.com/ptrkrysik/gr-gsm"; 44 + license = licenses.gpl3Plus; 45 + platforms = platforms.linux; 46 + maintainers = with maintainers; [ mog ]; 47 + }; 48 + }
+59
pkgs/development/gnuradio-modules/limesdr/default.nix
···
··· 1 + { lib 2 + , mkDerivation 3 + , fetchFromGitHub 4 + , gnuradio 5 + , cmake 6 + , pkg-config 7 + , doxygen 8 + , swig 9 + , python 10 + , log4cpp 11 + , mpir 12 + , boost 13 + , gmp 14 + , icu 15 + , limesuite 16 + }: 17 + 18 + let 19 + version = { 20 + "3.7" = "2.0.0"; 21 + "3.8" = "3.0.1"; 22 + }.${gnuradio.versionAttr.major}; 23 + src = fetchFromGitHub { 24 + owner = "myriadrf"; 25 + repo = "gr-limesdr"; 26 + rev = "v${version}"; 27 + sha256 = { 28 + "3.7" = "0ldqvfwl0gil89l9s31fjf9d7ki0dk572i8vna336igfaz348ypq"; 29 + "3.8" = "ffs+8TU0yr6IW1xZJ/abQ1CQWGZM+zYqPRJxy3ZvM9U="; 30 + }.${gnuradio.versionAttr.major}; 31 + }; 32 + in mkDerivation { 33 + pname = "gr-limesdr"; 34 + inherit version src; 35 + disabledForGRafter = "3.9"; 36 + 37 + nativeBuildInputs = [ 38 + cmake 39 + pkg-config 40 + swig 41 + python 42 + ]; 43 + buildInputs = [ 44 + log4cpp 45 + mpir 46 + boost 47 + gmp 48 + icu 49 + limesuite 50 + ]; 51 + 52 + meta = with lib; { 53 + description = "Gnuradio source and sink blocks for LimeSDR"; 54 + homepage = "https://wiki.myriadrf.org/Gr-limesdr_Plugin_for_GNURadio"; 55 + license = licenses.mit; 56 + platforms = platforms.linux; 57 + maintainers = [ maintainers.markuskowa ]; 58 + }; 59 + }
+23
pkgs/development/gnuradio-modules/mkDerivation.nix
···
··· 1 + { lib 2 + , unwrapped 3 + }: 4 + 5 + mkDerivation: 6 + 7 + args: 8 + 9 + # Check if it's supposed to not get built for the current gnuradio version 10 + if (builtins.hasAttr "disabledForGRafter" args) && 11 + (lib.versionAtLeast unwrapped.versionAttr.major args.disabledForGRafter) then 12 + let name = args.name or "${args.pname}"; in 13 + throw "Package ${name} is incompatible with GNURadio ${unwrapped.versionAttr.major}" 14 + else 15 + 16 + let 17 + args_ = { 18 + enableParallelBuilding = args.enableParallelBuilding or true; 19 + nativeBuildInputs = (args.nativeBuildInputs or []); 20 + # We add gnuradio itself by default 21 + buildInputs = (args.buildInputs or []) ++ [ unwrapped ]; 22 + }; 23 + in mkDerivation (args // args_)
+46
pkgs/development/gnuradio-modules/nacl/default.nix
···
··· 1 + { lib 2 + , mkDerivation 3 + , fetchFromGitHub 4 + , cmake 5 + , pkg-config 6 + , cppunit 7 + , swig 8 + , boost 9 + , log4cpp 10 + , python 11 + , libsodium 12 + }: 13 + 14 + mkDerivation { 15 + pname = "gr-nacl"; 16 + version = "2017-04-10"; 17 + src = fetchFromGitHub { 18 + owner = "stwunsch"; 19 + repo = "gr-nacl"; 20 + rev = "15276bb0fcabf5fe4de4e58df3d579b5be0e9765"; 21 + sha256 = "018np0qlk61l7mlv3xxx5cj1rax8f1vqrsrch3higsl25yydbv7v"; 22 + }; 23 + disabledForGRafter = "3.8"; 24 + 25 + nativeBuildInputs = [ 26 + cmake 27 + pkg-config 28 + swig 29 + python 30 + ]; 31 + 32 + buildInputs = [ 33 + cppunit 34 + log4cpp 35 + boost 36 + libsodium 37 + ]; 38 + 39 + meta = with lib; { 40 + description = "Gnuradio block for encryption"; 41 + homepage = "https://github.com/stwunsch/gr-nacl"; 42 + license = licenses.gpl3Plus; 43 + platforms = platforms.linux ++ platforms.darwin; 44 + maintainers = with maintainers; [ mog ]; 45 + }; 46 + }
+84
pkgs/development/gnuradio-modules/osmosdr/default.nix
···
··· 1 + { lib 2 + , mkDerivation 3 + , fetchgit 4 + , gnuradio 5 + , cmake 6 + , pkg-config 7 + , log4cpp 8 + , mpir 9 + , boost 10 + , gmp 11 + , fftwFloat 12 + , python 13 + , swig 14 + , uhd 15 + , icu 16 + , airspy 17 + , hackrf 18 + , libbladeRF 19 + , rtl-sdr 20 + , soapysdr-with-plugins 21 + }: 22 + 23 + let 24 + version = { 25 + "3.7" = "0.1.5"; 26 + "3.8" = "0.2.2"; 27 + }.${gnuradio.versionAttr.major}; 28 + src = fetchgit { 29 + url = "git://git.osmocom.org/gr-osmosdr"; 30 + rev = "v${version}"; 31 + sha256 = { 32 + "3.7" = "0bf9bnc1c3c4yqqqgmg3nhygj6rcfmyk6pybi27f7461d2cw1drv"; 33 + "3.8" = "HT6xlN6cJAnvF+s1g2I1uENhBJJizdADlLXeSD0rEqs="; 34 + }.${gnuradio.versionAttr.major}; 35 + }; 36 + in mkDerivation { 37 + pname = "gr-osmosdr"; 38 + inherit version src; 39 + disabledForGRafter = "3.9"; 40 + 41 + buildInputs = [ 42 + log4cpp 43 + mpir 44 + boost 45 + fftwFloat 46 + gmp 47 + icu 48 + airspy 49 + hackrf 50 + libbladeRF 51 + rtl-sdr 52 + soapysdr-with-plugins 53 + ] ++ lib.optional (gnuradio.hasFeature "gr-uhd" gnuradio.features) [ 54 + uhd 55 + ]; 56 + cmakeFlags = [ 57 + (if (gnuradio.hasFeature "python-support" gnuradio.features) then 58 + "-DENABLE_PYTHON=ON" 59 + else 60 + "-DENABLE_PYTHON=OFF" 61 + ) 62 + ]; 63 + nativeBuildInputs = [ 64 + cmake 65 + pkg-config 66 + swig 67 + ] ++ lib.optionals (gnuradio.hasFeature "python-support" gnuradio.features) [ 68 + (if (gnuradio.versionAttr.major == "3.7") then 69 + python.pkgs.cheetah 70 + else 71 + python.pkgs.Mako 72 + ) 73 + python 74 + ] 75 + ; 76 + 77 + meta = with lib; { 78 + description = "Gnuradio block for OsmoSDR and rtl-sdr"; 79 + homepage = "https://sdr.osmocom.org/trac/wiki/GrOsmoSDR"; 80 + license = licenses.gpl3Plus; 81 + maintainers = with maintainers; [ bjornfor ]; 82 + platforms = platforms.unix; 83 + }; 84 + }
+57
pkgs/development/gnuradio-modules/rds/default.nix
···
··· 1 + { lib 2 + , mkDerivation 3 + , fetchFromGitHub 4 + , gnuradio 5 + , cmake 6 + , pkg-config 7 + , swig 8 + , python 9 + , log4cpp 10 + , mpir 11 + , boost 12 + , gmp 13 + , icu 14 + }: 15 + 16 + let 17 + version = { 18 + "3.7" = "1.1.0"; 19 + "3.8" = "3.8.0"; 20 + }.${gnuradio.versionAttr.major}; 21 + src = fetchFromGitHub { 22 + owner = "bastibl"; 23 + repo = "gr-rds"; 24 + rev = "v${version}"; 25 + sha256 = { 26 + "3.7" = "0jkzchvw0ivcxsjhi1h0mf7k13araxf5m4wi5v9xdgqxvipjzqfy"; 27 + "3.8" = "+yKLJu2bo7I2jkAiOdjvdhZwxFz9NFgTmzcLthH9Y5o="; 28 + }.${gnuradio.versionAttr.major}; 29 + }; 30 + in mkDerivation { 31 + pname = "gr-rds"; 32 + inherit version src; 33 + disabledForGRafter = "3.9"; 34 + 35 + buildInputs = [ 36 + log4cpp 37 + mpir 38 + boost 39 + gmp 40 + icu 41 + ]; 42 + 43 + nativeBuildInputs = [ 44 + cmake 45 + pkg-config 46 + swig 47 + python 48 + ]; 49 + 50 + meta = with lib; { 51 + description = "Gnuradio block for radio data system"; 52 + homepage = "https://github.com/bastibl/gr-rds"; 53 + license = licenses.gpl2Plus; 54 + platforms = platforms.unix; 55 + maintainers = with maintainers; [ mog ]; 56 + }; 57 + }
+16 -8
pkgs/top-level/aliases.nix
··· 240 gnome_doc_utils = gnome-doc-utils; # added 2018-02-25 241 gnome_themes_standard = gnome-themes-standard; # added 2018-02-25 242 gnunet_git = throw "gnunet_git was removed due to gnunet becoming stable"; # added 2019-05-27 243 - gnuradio-nacl = gr-nacl; # added 2019-05-27 244 - gnuradio-gsm = gr-gsm; # added 2019-05-27 245 - gnuradio-ais = gr-ais; # added 2019-05-27 246 - gnuradio-limesdr = gr-limesdr; # added 2019-05-27 247 - gnuradio-rds = gr-rds; # added 2019-05-27 248 - gnuradio-osmosdr = gr-osmosdr; # added 2019-05-27 249 - # added 20-10-2020 250 gnuradio-with-packages = gnuradio3_7.override { 251 - extraPackages = [ gr-nacl gr-gsm gr-ais gr-limesdr gr-rds gr-osmosdr ]; 252 }; 253 gnustep-make = gnustep.make; # added 2016-7-6 254 gnupg20 = throw "gnupg20 has been removed from nixpkgs as upstream dropped support on 2017-12-31";# added 2020-07-12 255 gnuvd = throw "gnuvd was removed because the backend service is missing"; # added 2020-01-14
··· 240 gnome_doc_utils = gnome-doc-utils; # added 2018-02-25 241 gnome_themes_standard = gnome-themes-standard; # added 2018-02-25 242 gnunet_git = throw "gnunet_git was removed due to gnunet becoming stable"; # added 2019-05-27 243 + # Added 2020-10-16 244 gnuradio-with-packages = gnuradio3_7.override { 245 + extraPackages = lib.attrVals [ 246 + "osmosdr" "ais" "gsm" "nacl" "rds" "limesdr" 247 + ] gnuradio3_7Packages; 248 }; 249 + gnuradio-nacl = gnuradio3_7.pkgs.nacl; # added 2019-05-27, changed 2020-10-16 250 + gnuradio-gsm = gnuradio3_7.pkgs.gsm; # added 2019-05-27, changed 2020-10-16 251 + gnuradio-ais = gnuradio3_7.pkgs.ais; # added 2019-05-27, changed 2020-10-16 252 + gnuradio-limesdr = gnuradio3_7.pkgs.limesdr; # added 2019-05-27, changed 2020-10-16 253 + gnuradio-rds = gnuradio3_7.pkgs.rds; # added 2019-05-27, changed 2020-10-16 254 + gnuradio-osmosdr = gnuradio3_7.pkgs.osmosdr; # added 2019-05-27, changed 2020-10-16 255 + gr-nacl = gnuradio3_7.pkgs.nacl; # added 2019-05-27, changed 2020-10-16 256 + gr-gsm = gnuradio3_7.pkgs.gsm; # added 2019-05-27, changed 2020-10-16 257 + gr-ais = gnuradio3_7.pkgs.ais; # added 2019-05-27, changed 2020-10-16 258 + gr-limesdr = gnuradio3_7.pkgs.limesdr; # added 2019-05-27, changed 2020-10-16 259 + gr-rds = gnuradio3_7.pkgs.rds; # added 2019-05-27, changed 2020-10-16 260 + gr-osmosdr = gnuradio3_7.pkgs.osmosdr; # added 2019-05-27, changed 2020-10-16 261 gnustep-make = gnustep.make; # added 2016-7-6 262 gnupg20 = throw "gnupg20 has been removed from nixpkgs as upstream dropped support on 2017-12-31";# added 2020-07-12 263 gnuvd = throw "gnuvd was removed because the backend service is missing"; # added 2020-01-14
+43 -76
pkgs/top-level/all-packages.nix
··· 16776 16777 qm-dsp = callPackage ../development/libraries/audio/qm-dsp { }; 16778 16779 - qradiolink = callPackage ../applications/radio/qradiolink { 16780 - # 3.8 support is not ready yet: 16781 - # https://github.com/qradiolink/qradiolink/issues/67#issuecomment-703222573 16782 - # The non minimal build is used because the 'qtgui' component is needed. 16783 - # gr-osmosdr is using the same gnuradio as of now. 16784 - gnuradio = gnuradio3_7-unwrapped; 16785 - }; 16786 16787 qrupdate = callPackage ../development/libraries/qrupdate { }; 16788 ··· 22333 22334 gnss-sdr = callPackage ../applications/radio/gnss-sdr { 22335 boost = boost166; 22336 - gnuradio = gnuradio3_7-unwrapped; 22337 }; 22338 22339 - gnuradio-unwrapped = callPackage ../applications/radio/gnuradio { 22340 - inherit (darwin.apple_sdk.frameworks) CoreAudio; 22341 - python = python3; 22342 - boost = boost17x; 22343 }; 22344 # A build without gui components and other utilites not needed for end user 22345 # libraries 22346 - gnuradioMinimal = gnuradio-unwrapped.override { 22347 - features = { 22348 - gnuradio-companion = false; 22349 - python-support = false; 22350 - gr-ctrlport = false; 22351 - examples = false; 22352 - gr-qtgui = false; 22353 - gr-utils = false; 22354 - gr-modtool = false; 22355 - sphinx = false; 22356 - doxygen = false; 22357 }; 22358 }; 22359 - gnuradio = callPackage ../applications/radio/gnuradio/wrapper.nix { 22360 - unwrapped = gnuradio-unwrapped; 22361 - }; 22362 - gnuradio3_7-unwrapped = callPackage ../applications/radio/gnuradio/3.7.nix { 22363 - inherit (darwin.apple_sdk.frameworks) CoreAudio; 22364 - python = python2; 22365 - # Incompatible with uhd4+ 22366 - uhd = uhd3_5; 22367 }; 22368 # A build without gui components and other utilites not needed if gnuradio is 22369 # used as a c++ library. 22370 - gnuradio3_7Minimal = gnuradio3_7-unwrapped.override { 22371 - features = { 22372 - gnuradio-companion = false; 22373 - python-support = false; 22374 - gr-ctrlport = false; 22375 - gr-qtgui = false; 22376 - gr-utils = false; 22377 - sphinx = false; 22378 - doxygen = false; 22379 - gr-wxgui = false; 22380 }; 22381 }; 22382 - gnuradio3_7 = callPackage ../applications/radio/gnuradio/wrapper.nix { 22383 - unwrapped = gnuradio3_7-unwrapped; 22384 - }; 22385 22386 grandorgue = callPackage ../applications/audio/grandorgue { }; 22387 22388 - gr-nacl = callPackage ../applications/radio/gnuradio/nacl.nix { 22389 - gnuradio = gnuradio3_7-unwrapped; 22390 - }; 22391 - 22392 - gr-gsm = callPackage ../applications/radio/gnuradio/gsm.nix { 22393 - gnuradio = gnuradio3_7-unwrapped; 22394 - }; 22395 - 22396 - gr-ais = callPackage ../applications/radio/gnuradio/ais.nix { 22397 - gnuradio = gnuradio3_7-unwrapped; 22398 - }; 22399 - 22400 - gr-limesdr = callPackage ../applications/radio/gnuradio/limesdr.nix { 22401 - gnuradio = gnuradio3_7-unwrapped; 22402 - }; 22403 - 22404 - gr-rds = callPackage ../applications/radio/gnuradio/rds.nix { 22405 - gnuradio = gnuradio3_7-unwrapped; 22406 - }; 22407 - 22408 - gr-osmosdr = callPackage ../applications/radio/gnuradio/osmosdr.nix { 22409 - gnuradio = gnuradio3_7-unwrapped; 22410 - }; 22411 - 22412 goldendict = libsForQt5.callPackage ../applications/misc/goldendict { 22413 inherit (darwin) libiconv; 22414 }; ··· 22435 22436 gpx = callPackage ../applications/misc/gpx { }; 22437 22438 - gqrx = libsForQt514.callPackage ../applications/radio/gqrx { 22439 - gnuradio = gnuradio3_7Minimal; 22440 - # Use the same gnuradio for gr-osmosdr as well 22441 - gr-osmosdr = gr-osmosdr.override { 22442 - gnuradio = gnuradio3_7Minimal; 22443 - pythonSupport = false; 22444 - }; 22445 - }; 22446 22447 gpx-viewer = callPackage ../applications/misc/gpx-viewer { }; 22448
··· 16776 16777 qm-dsp = callPackage ../development/libraries/audio/qm-dsp { }; 16778 16779 + qradiolink = callPackage ../applications/radio/qradiolink { }; 16780 16781 qrupdate = callPackage ../development/libraries/qrupdate { }; 16782 ··· 22327 22328 gnss-sdr = callPackage ../applications/radio/gnss-sdr { 22329 boost = boost166; 22330 + gnuradio = gnuradio3_7.unwrapped; 22331 }; 22332 22333 + gnuradio = callPackage ../applications/radio/gnuradio/wrapper.nix { 22334 + unwrapped = callPackage ../applications/radio/gnuradio { 22335 + inherit (darwin.apple_sdk.frameworks) CoreAudio; 22336 + python = python3; 22337 + boost = boost17x; 22338 + }; 22339 }; 22340 + gnuradioPackages = lib.recurseIntoAttrs gnuradio.pkgs; 22341 # A build without gui components and other utilites not needed for end user 22342 # libraries 22343 + gnuradioMinimal = gnuradio.override { 22344 + wrap = false; 22345 + unwrapped = gnuradio.unwrapped.override { 22346 + features = { 22347 + gnuradio-companion = false; 22348 + python-support = false; 22349 + examples = false; 22350 + gr-qtgui = false; 22351 + gr-utils = false; 22352 + gr-modtool = false; 22353 + sphinx = false; 22354 + doxygen = false; 22355 + }; 22356 }; 22357 }; 22358 + gnuradio3_7 = callPackage ../applications/radio/gnuradio/wrapper.nix { 22359 + unwrapped = callPackage ../applications/radio/gnuradio/3.7.nix { 22360 + inherit (darwin.apple_sdk.frameworks) CoreAudio; 22361 + python = python2; 22362 + # Incompatible with uhd4+ 22363 + uhd = uhd3_5; 22364 + }; 22365 }; 22366 + gnuradio3_7Packages = lib.recurseIntoAttrs gnuradio3_7.pkgs; 22367 # A build without gui components and other utilites not needed if gnuradio is 22368 # used as a c++ library. 22369 + gnuradio3_7Minimal = gnuradio3_7.override { 22370 + wrap = false; 22371 + unwrapped = gnuradio3_7.unwrapped.override { 22372 + features = { 22373 + gnuradio-companion = false; 22374 + python-support = false; 22375 + gr-qtgui = false; 22376 + gr-utils = false; 22377 + sphinx = false; 22378 + doxygen = false; 22379 + gr-wxgui = false; 22380 + }; 22381 }; 22382 }; 22383 22384 grandorgue = callPackage ../applications/audio/grandorgue { }; 22385 22386 goldendict = libsForQt5.callPackage ../applications/misc/goldendict { 22387 inherit (darwin) libiconv; 22388 }; ··· 22409 22410 gpx = callPackage ../applications/misc/gpx { }; 22411 22412 + gqrx = callPackage ../applications/radio/gqrx { }; 22413 22414 gpx-viewer = callPackage ../applications/misc/gpx-viewer { }; 22415
+46
pkgs/top-level/gnuradio-packages.nix
···
··· 1 + { lib 2 + , stdenv 3 + , newScope 4 + , gnuradio # unwrapped gnuradio 5 + }: 6 + 7 + lib.makeScope newScope ( self: 8 + 9 + let 10 + # Modeled after qt's 11 + mkDerivationWith = import ../development/gnuradio-modules/mkDerivation.nix { 12 + inherit lib; 13 + unwrapped = gnuradio; 14 + }; 15 + mkDerivation = mkDerivationWith stdenv.mkDerivation; 16 + 17 + callPackage = self.newScope { 18 + inherit (gnuradio) 19 + # Packages that are potentially overriden and commonly 20 + boost 21 + uhd 22 + ; 23 + inherit mkDerivationWith mkDerivation; 24 + }; 25 + 26 + in { 27 + 28 + inherit callPackage mkDerivation mkDerivationWith; 29 + 30 + ### Packages 31 + 32 + inherit gnuradio; 33 + 34 + osmosdr = callPackage ../development/gnuradio-modules/osmosdr/default.nix { }; 35 + 36 + ais = callPackage ../development/gnuradio-modules/ais/default.nix { }; 37 + 38 + gsm = callPackage ../development/gnuradio-modules/gsm/default.nix { }; 39 + 40 + nacl = callPackage ../development/gnuradio-modules/nacl/default.nix { }; 41 + 42 + rds = callPackage ../development/gnuradio-modules/rds/default.nix { }; 43 + 44 + limesdr = callPackage ../development/gnuradio-modules/limesdr/default.nix { }; 45 + 46 + })