gnu: containerd: Update to 1.4.4.
[jackhill/guix/guix.git] / gnu / packages / radio.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2017, 2018, 2019, 2020 Arun Isaac <arunisaac@systemreboot.net>
3 ;;; Copyright © 2019, 2020 Christopher Howard <christopher@librehacker.com>
4 ;;; Copyright © 2019, 2020 Evan Straw <evan.straw99@gmail.com>
5 ;;; Copyright © 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
6 ;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
7 ;;; Copyright © 2020 Charlie Ritter <chewzerita@posteo.net>
8 ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
9 ;;; Copyright © 2021 João Pedro Simas <jpsimas@gmail.com>
10 ;;;
11 ;;; This file is part of GNU Guix.
12 ;;;
13 ;;; GNU Guix is free software; you can redistribute it and/or modify it
14 ;;; under the terms of the GNU General Public License as published by
15 ;;; the Free Software Foundation; either version 3 of the License, or (at
16 ;;; your option) any later version.
17 ;;;
18 ;;; GNU Guix is distributed in the hope that it will be useful, but
19 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ;;; GNU General Public License for more details.
22 ;;;
23 ;;; You should have received a copy of the GNU General Public License
24 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26 (define-module (gnu packages radio)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix packages)
29 #:use-module (guix download)
30 #:use-module (guix git-download)
31 #:use-module (guix utils)
32 #:use-module (gnu packages algebra)
33 #:use-module (gnu packages audio)
34 #:use-module (gnu packages autotools)
35 #:use-module (gnu packages base)
36 #:use-module (gnu packages bash)
37 #:use-module (gnu packages boost)
38 #:use-module (gnu packages check)
39 #:use-module (gnu packages curl)
40 #:use-module (gnu packages databases)
41 #:use-module (gnu packages documentation)
42 #:use-module (gnu packages engineering)
43 #:use-module (gnu packages fltk)
44 #:use-module (gnu packages gcc)
45 #:use-module (gnu packages gd)
46 #:use-module (gnu packages geo)
47 #:use-module (gnu packages gettext)
48 #:use-module (gnu packages ghostscript)
49 #:use-module (gnu packages glib)
50 #:use-module (gnu packages gnome)
51 #:use-module (gnu packages golang)
52 #:use-module (gnu packages gstreamer)
53 #:use-module (gnu packages gtk)
54 #:use-module (gnu packages image)
55 #:use-module (gnu packages javascript)
56 #:use-module (gnu packages libusb)
57 #:use-module (gnu packages linux)
58 #:use-module (gnu packages logging)
59 #:use-module (gnu packages lua)
60 #:use-module (gnu packages maths)
61 #:use-module (gnu packages multiprecision)
62 #:use-module (gnu packages ncurses)
63 #:use-module (gnu packages networking)
64 #:use-module (gnu packages pkg-config)
65 #:use-module (gnu packages pulseaudio)
66 #:use-module (gnu packages python)
67 #:use-module (gnu packages python-science)
68 #:use-module (gnu packages python-xyz)
69 #:use-module (gnu packages qt)
70 #:use-module (gnu packages readline)
71 #:use-module (gnu packages ruby)
72 #:use-module (gnu packages sdl)
73 #:use-module (gnu packages sphinx)
74 #:use-module (gnu packages swig)
75 #:use-module (gnu packages tcl)
76 #:use-module (gnu packages tex)
77 #:use-module (gnu packages texinfo)
78 #:use-module (gnu packages video)
79 #:use-module (gnu packages xiph)
80 #:use-module (gnu packages xml)
81 #:use-module (gnu packages xorg)
82 #:use-module (guix build-system cmake)
83 #:use-module (guix build-system glib-or-gtk)
84 #:use-module (guix build-system gnu)
85 #:use-module (guix build-system go)
86 #:use-module (guix build-system python)
87 #:use-module (guix build-system qt))
88
89 (define-public liquid-dsp
90 (package
91 (name "liquid-dsp")
92 (version "1.3.2")
93 (source
94 (origin (method git-fetch)
95 (uri (git-reference
96 (url "https://github.com/jgaeddert/liquid-dsp")
97 (commit (string-append "v" version))))
98 (file-name (git-file-name name version))
99 (sha256
100 (base32 "1n6dbg13q8ga5qhg1yiszwly4jj0rxqr6f1xwm9waaly5z493xsd"))))
101 (build-system gnu-build-system)
102 (native-inputs
103 `(("autoconf" ,autoconf)))
104 (inputs
105 `(("fftw" ,fftw)
106 ("fftwf" ,fftwf)))
107 (home-page "https://liquidsdr.org")
108 (synopsis "Signal processing library for software-defined radios")
109 (description
110 "Liquid DSP is a @dfn{digital signal processing} (DSP) library designed
111 specifically for software-defined radios on embedded platforms. The aim is to
112 provide a lightweight DSP library that does not rely on a myriad of external
113 dependencies or proprietary and otherwise cumbersome frameworks. All signal
114 processing elements are designed to be flexible, scalable, and dynamic,
115 including filters, filter design, oscillators, modems, synchronizers, complex
116 mathematical operations, and much more.")
117 (license license:expat)))
118
119 (define-public rtl-sdr
120 (package
121 (name "rtl-sdr")
122 (version "0.6.0")
123 (source
124 (origin
125 (method git-fetch)
126 (uri (git-reference
127 (url "https://git.osmocom.org/rtl-sdr/")
128 (commit version)))
129 (file-name (git-file-name name version))
130 (sha256
131 (base32
132 "0lmvsnb4xw4hmz6zs0z5ilsah5hjz29g1s0050n59fllskqr3b8k"))))
133 (build-system cmake-build-system)
134 (inputs
135 `(("libusb" ,libusb)))
136 (native-inputs
137 `(("pkg-config" ,pkg-config)))
138 (arguments
139 `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON"
140 "-DINSTALL_UDEV_RULES=ON")
141 #:tests? #f ; No tests
142 #:phases
143 (modify-phases %standard-phases
144 (add-after 'unpack 'fix-paths
145 (lambda* (#:key outputs #:allow-other-keys)
146 (substitute* "CMakeLists.txt"
147 (("DESTINATION \"/etc/udev/")
148 (string-append "DESTINATION \""
149 (assoc-ref outputs "out")
150 "/lib/udev/")))
151 #t)))))
152 (home-page "https://osmocom.org/projects/sdr/wiki/rtl-sdr")
153 (synopsis "Software defined radio driver for Realtek RTL2832U")
154 (description "DVB-T dongles based on the Realtek RTL2832U can be used as a
155 cheap software defined radio, since the chip allows transferring the raw I/Q
156 samples to the host. @code{rtl-sdr} provides drivers for this purpose.
157
158 The default Linux driver managing DVB-T dongles as TV devices doesn't work for
159 SDR purposes and clashes with this package. Therefore you must prevent the
160 kernel from loading it automatically by adding the following line to your
161 system configuration:
162
163 @lisp
164 (kernel-arguments '(\"modprobe.blacklist=dvb_usb_rtl28xxu\"))
165 @end lisp
166
167 To install the rtl-sdr udev rules, you must extend 'udev-service-type' with
168 this package. E.g.: @code{(udev-rules-service 'rtl-sdr rtl-sdr)}")
169 (license license:gpl2+)))
170
171 (define-public chirp
172 (package
173 (name "chirp")
174 (version "20201121")
175 (source
176 (origin
177 (method url-fetch)
178 (uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-"
179 version "/chirp-daily-" version ".tar.gz"))
180 (sha256
181 (base32 "092jryb1jn9li6zj243awv6piz1lhghqsm4phrz7j0rgqf76dy4n"))))
182 (build-system python-build-system)
183 (inputs
184 `(("python2-libxml2" ,python2-libxml2)
185 ("python2-pygtk" ,python2-pygtk)
186 ("python2-pyserial" ,python2-pyserial)))
187 (arguments
188 `(#:python ,python-2))
189 (home-page "https://chirp.danplanet.com")
190 (synopsis "Cross-radio programming tool")
191 (description "Chirp is a cross-radio programming tool. It supports a
192 growing list of radios across several manufacturers and allows transferring of
193 memory contents between them.")
194 (license (list license:gpl3+
195 license:lgpl3+)))) ; chirp/elib_intl.py
196
197 (define-public aptdec
198 (package
199 (name "aptdec")
200 (version "1.7")
201 (source
202 (origin
203 (method git-fetch)
204 (uri (git-reference
205 (url "https://github.com/Xerbo/aptdec")
206 (commit (string-append "v" version))))
207 (file-name (git-file-name name version))
208 (sha256
209 (base32
210 "1hf0zb51qc6fyhdjxyij1n3vgwnw3cwksc3r11szbhkml14qjnzk"))))
211 (build-system gnu-build-system)
212 (inputs
213 `(("libpng" ,libpng)
214 ("libsndfile" ,libsndfile)))
215 (arguments
216 `(#:make-flags
217 (list
218 (string-append "CC="
219 (if ,(%current-target-system)
220 (string-append (assoc-ref %build-inputs "cross-gcc")
221 "/bin/" ,(%current-target-system) "-gcc")
222 "gcc"))
223 (string-append "PREFIX=" %output)
224 (string-append "RPM_BUILD_ROOT=" %output))
225 #:tests? #f ; no tests
226 #:phases
227 (modify-phases %standard-phases
228 (delete 'configure)
229 (replace 'install
230 (lambda* (#:key outputs #:allow-other-keys)
231 (let ((out (assoc-ref outputs "out")))
232 (install-file "atpdec" (string-append out "/bin")))
233 #t)))))
234 (home-page "https://github.com/Xerbo/aptdec")
235 (synopsis "NOAA Automatic Picture Transmission (APT) decoder")
236 (description "Aptdec decodes Automatic Picture Transmission (APT) images.
237 These are medium resolution images of the Earth transmitted by, among other
238 satellites, the POES NOAA weather satellite series. These transmissions are
239 on a frequency of 137 MHz. They can be received using an inexpensive antenna
240 and a dedicated receiver.")
241 (license license:gpl2+)))
242
243 (define-public redsea
244 (package
245 (name "redsea")
246 (version "0.18")
247 (source (origin
248 (method git-fetch)
249 (uri (git-reference
250 (url "https://github.com/windytan/redsea")
251 (commit (string-append "v" version))))
252 (file-name (git-file-name name version))
253 (sha256
254 (base32
255 "1y96g0ra2krjb2kypm8s5gdfia45yci4f36klsvyzg8d53v5cwhn"))))
256 (build-system gnu-build-system)
257 (arguments
258 `(#:phases
259 (modify-phases %standard-phases
260 ;; The configure.ac file does not explicitly link against libiconv
261 ;; except on Mac OS, causing the build to fail. This phase comments
262 ;; out the original AC_SUBST macro (located inside a conditional) and
263 ;; adds an explicit use of it underneath, so that libiconv is always
264 ;; linked against.
265 (add-after 'unpack 'patch-libiconv
266 (lambda _
267 (substitute* "configure.ac"
268 (("^ +AC_SUBST")
269 "# AC_SUBST")
270 (("esac")
271 "esac\nAC_SUBST([ICONV], [\"-liconv\"])"))
272 #t)))))
273 (inputs
274 `(("libiconv" ,libiconv)
275 ("libsndfile" ,libsndfile)
276 ("liquid-dsp" ,liquid-dsp)))
277 (native-inputs
278 `(("autoconf" ,autoconf)
279 ("automake" ,automake)))
280 (home-page "https://github.com/windytan/redsea")
281 (synopsis "Lightweight RDS to JSON decoder")
282 (description "redsea is a lightweight command-line @dfn{FM Radio Data
283 System} (FM-RDS) decoder. Redsea can be used with any RTL-SDR USB radio stick
284 with the rtl_fm tool, or any other @dfn{software-defined radio} (SDR) via
285 csdr, for example. It can also decode raw ASCII bitstream, the hex format
286 used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
287 (license license:expat)))
288
289 (define-public gnuradio
290 (package
291 (name "gnuradio")
292 (version "3.9.0.0")
293 (source
294 (origin
295 (method url-fetch)
296 (uri (string-append "https://www.gnuradio.org/releases/gnuradio/"
297 "gnuradio-" version ".tar.xz"))
298 (sha256
299 (base32 "1jvm9xd0l2pz1fww4zii6hl7ccnvy256nrf70ljb594n7j9j49ha"))))
300 (build-system cmake-build-system)
301 (native-inputs
302 `(("doxygen" ,doxygen)
303 ("ghostscript" ,ghostscript)
304 ("js-mathjax" ,js-mathjax)
305 ("orc" ,orc)
306 ("pkg-config" ,pkg-config)
307 ("pybind11" ,pybind11)
308 ("python-cheetah" ,python-cheetah)
309 ("python-mako" ,python-mako)
310 ("python-pyzmq" ,python-pyzmq)
311 ("python-scipy" ,python-scipy)
312 ("python-sphinx" ,python-sphinx)
313 ("texlive" ,(texlive-union (list texlive-amsfonts
314 texlive-latex-amsmath
315 ;; TODO: Add newunicodechar.
316 texlive-latex-graphics)))
317 ("xorg-server" ,xorg-server-for-tests)))
318 (inputs
319 `(("alsa-lib" ,alsa-lib)
320 ("boost" ,boost)
321 ("cairo" ,cairo)
322 ("codec2" ,codec2)
323 ("cppzmq" ,cppzmq)
324 ("fftwf" ,fftwf)
325 ("gmp" ,gmp)
326 ("gsl" ,gsl)
327 ("gsm" ,gsm)
328 ("gtk+" ,gtk+)
329 ("jack" ,jack-1)
330 ("libsndfile" ,libsndfile)
331 ("log4cpp" ,log4cpp)
332 ("pango" ,pango)
333 ("portaudio" ,portaudio)
334 ("python" ,python)
335 ("python-click" ,python-click)
336 ("python-click-plugins" ,python-click-plugins)
337 ("python-lxml" ,python-lxml)
338 ("python-numpy" ,python-numpy)
339 ("python-pycairo" ,python-pycairo)
340 ("python-pygobject" ,python-pygobject)
341 ("python-pyqt" ,python-pyqt)
342 ("python-pyyaml" ,python-pyyaml)
343 ("qtbase" ,qtbase)
344 ("qwt" ,qwt)
345 ("sdl" ,sdl)
346 ("volk" ,volk)
347 ("zeromq" ,zeromq)))
348 (arguments
349 `(#:modules ((guix build cmake-build-system)
350 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
351 ((guix build python-build-system) #:prefix python:)
352 (guix build utils)
353 (ice-9 match))
354 #:imported-modules (,@%cmake-build-system-modules
355 (guix build glib-or-gtk-build-system)
356 (guix build python-build-system))
357 #:configure-flags
358 (list (string-append "-DMATHJAX2_ROOT="
359 (assoc-ref %build-inputs "js-mathjax")
360 "/share/javascript/mathjax"))
361 #:phases
362 (modify-phases %standard-phases
363 (add-after 'unpack 'fix-paths
364 (lambda* (#:key inputs #:allow-other-keys)
365 (let ((qwt (assoc-ref inputs "qwt")))
366 (substitute* "cmake/Modules/FindQwt.cmake"
367 (("/usr/include")
368 (string-append qwt "/include"))
369 (("/usr/lib")
370 (string-append qwt "/lib"))
371 (("qwt6-\\$\\{QWT_QT_VERSION\\}")
372 "qwt")))
373 (substitute* "cmake/Modules/GrPython.cmake"
374 (("dist-packages")
375 "site-packages"))
376 (substitute* '("gr-vocoder/include/gnuradio/vocoder/codec2.h"
377 "gr-vocoder/include/gnuradio/vocoder/freedv_api.h")
378 (("<codec2/")
379 "<"))
380 #t))
381 (add-before 'check 'set-test-environment
382 (lambda* (#:key inputs #:allow-other-keys)
383 (setenv "HOME" "/tmp")
384 (system (string-append (assoc-ref inputs "xorg-server")
385 "/bin/Xvfb :1 &"))
386 (setenv "DISPLAY" ":1")
387 #t))
388 (replace 'check
389 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
390 (invoke "ctest" "-j" (if parallel-tests?
391 (number->string (parallel-job-count))
392 "1")
393 "--output-on-failure"
394 ;;disable broken tests
395 "-E" (string-join
396 '(;; https://github.com/gnuradio/gnuradio/issues/3871
397 "qa_header_payload_demux"
398 ;; https://github.com/gnuradio/gnuradio/issues/4348
399 "qa_packet_headerparser_b")
400 "|"))))
401 (add-after 'install 'wrap-python
402 (assoc-ref python:%standard-phases 'wrap))
403 (add-after 'wrap-python 'wrap-glib-or-gtk
404 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
405 (add-after 'wrap-glib-or-gtk 'wrap-with-GI_TYPELIB_PATH
406 (lambda* (#:key inputs outputs #:allow-other-keys)
407 (let ((out (assoc-ref outputs "out"))
408 (paths (map (match-lambda
409 ((output . directory)
410 (let ((girepodir (string-append
411 directory
412 "/lib/girepository-1.0")))
413 (if (file-exists? girepodir)
414 girepodir
415 #f))))
416 inputs)))
417 (wrap-program (string-append out "/bin/gnuradio-companion")
418 `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))
419 #t)))))
420 (native-search-paths
421 ;; Variables required to find third-party plugins at runtime.
422 (list (search-path-specification
423 (variable "GRC_BLOCKS_PATH")
424 (files '("share/gnuradio/grc/blocks")))
425 (search-path-specification
426 (variable "PYTHONPATH")
427 (files (list (string-append "lib/python"
428 (version-major+minor
429 (package-version python))
430 "/site-packages"))))))
431 (synopsis "Toolkit for software-defined radios")
432 (description
433 "GNU Radio is a development toolkit that provides signal processing blocks
434 to implement software radios. It can be used with external RF hardware to
435 create software-defined radios, or without hardware in a simulation-like
436 environment.")
437 (home-page "https://www.gnuradio.org")
438 (license license:gpl3+)))
439
440 (define-public gnuradio-osmosdr
441 ;; No tag for version supporting Gnuradio 3.9; use commit.
442 (let ((commit "a100eb024c0210b95e4738b6efd836d48225bd03")
443 (revision "0"))
444 (package
445 (name "gnuradio-osmosdr")
446 (version (git-version "0.2.3" revision commit))
447 (source
448 (origin
449 (method git-fetch)
450 (uri (git-reference
451 (url "https://git.osmocom.org/gr-osmosdr")
452 (commit commit)))
453 (file-name (git-file-name name version))
454 (sha256
455 (base32 "1pk5gnyznfyy510lbqzg9ijcb1fnhmn547n24aiqyrxd6i6vv1ki"))))
456 (build-system cmake-build-system)
457 (native-inputs
458 `(("doxygen" ,doxygen)
459 ("pkg-config" ,pkg-config)
460 ("pybind11" ,pybind11)
461 ("python" ,python)
462 ("python-mako" ,python-mako)
463 ("python-six" ,python-six)))
464 (inputs
465 `(("boost" ,boost)
466 ("fftwf" ,fftwf)
467 ("gmp" ,gmp)
468 ("gnuradio" ,gnuradio)
469 ("hackrf" ,hackrf)
470 ("libsndfile" ,libsndfile)
471 ("log4cpp" ,log4cpp)
472 ("rtl-sdr" ,rtl-sdr)
473 ("volk" ,volk)))
474 (synopsis "GNU Radio block for interfacing with various radio hardware")
475 (description "This is a block for GNU Radio allowing to use a common API
476 to access different radio hardware.")
477 (home-page "https://osmocom.org/projects/gr-osmosdr/wiki/GrOsmoSDR")
478 (license license:gpl3+))))
479
480 (define-public libosmo-dsp
481 (package
482 (name "libosmo-dsp")
483 (version "0.4.0")
484 (source
485 (origin
486 (method git-fetch)
487 (uri (git-reference
488 (url "https://git.osmocom.org/libosmo-dsp")
489 (commit version)))
490 (file-name (git-file-name name version))
491 (sha256
492 (base32 "00plihnpym1gkfpflah8il9463qxzm9kx2f07jyvbkszpj8viq5g"))))
493 (build-system gnu-build-system)
494 (native-inputs
495 `(("autoconf" ,autoconf)
496 ("automake" ,automake)
497 ("bash-minimal" ,bash-minimal)
498 ("doxygen" ,doxygen)
499 ("libtool" ,libtool)
500 ("pkg-config" ,pkg-config)
501 ("texlive" ,(texlive-union (list texlive-amsfonts
502 texlive-latex-amsmath
503 ;; TODO: Add newunicodechar.
504 texlive-latex-graphics)))))
505 (inputs
506 `(("fftwf" ,fftwf)))
507 (arguments
508 `(#:phases
509 (modify-phases %standard-phases
510 (add-after 'unpack 'fix-paths
511 (lambda* (#:key inputs #:allow-other-keys)
512 (substitute* "git-version-gen"
513 (("/bin/sh")
514 (string-append (assoc-ref inputs "bash")
515 "/bin/bash")))
516 #t)))))
517 (synopsis "DSP primitives for SDR")
518 (description
519 "This a C-language library for common DSP (Digital Signal Processing)
520 primitives for SDR (Software Defined Radio).")
521 (home-page "https://osmocom.org/projects/libosmo-dsp")
522 (license license:gpl2+)))
523
524 (define-public gnuradio-iqbalance
525 ;; No tag for version supporting Gnuradio 3.9; use commit.
526 (let ((commit "fbee239a6fb36dd2fb564f6e6a0d393c4bc844db")
527 (revision "0"))
528 (package
529 (name "gnuradio-iqbalance")
530 (version (git-version "0.38.2" revision commit))
531 (source
532 (origin
533 (method git-fetch)
534 (uri (git-reference
535 (url "https://git.osmocom.org/gr-iqbal")
536 (commit commit)))
537 (file-name (git-file-name name version))
538 (sha256
539 (base32 "12p193ngcs65nd3lynry119nhv40mikamqkw37wdln7lawx3nw7p"))))
540 (build-system cmake-build-system)
541 (native-inputs
542 `(("doxygen" ,doxygen)
543 ("pkg-config" ,pkg-config)
544 ("pybind11" ,pybind11)
545 ("python" ,python)
546 ("python-numpy" ,python-numpy)
547 ("python-six" ,python-six)))
548 (inputs
549 `(("boost" ,boost)
550 ("fftwf" ,fftwf)
551 ("gmp" ,gmp)
552 ("gnuradio" ,gnuradio)
553 ("libosmo-dsp" ,libosmo-dsp)
554 ("log4cpp" ,log4cpp)
555 ("volk" ,volk)))
556 (synopsis "GNU Radio block to correct IQ imbalance")
557 (description
558 "This is a GNU Radio block to correct IQ imbalance in quadrature
559 receivers. It's composed of two main block:
560 @itemize
561 @item Fix: Given a phase and amplitude error, it will correct a complex signal.
562 @item Optimize: Attempts to auto-detect the phase and amplitude error to feed
563 to the fix block above.
564 @end itemize")
565 (home-page "https://git.osmocom.org/gr-iqbal/")
566 (license license:gpl3+))))
567
568 (define-public gqrx
569 (package
570 (name "gqrx")
571 (version "2.14.4")
572 (source
573 (origin
574 (method git-fetch)
575 (uri (git-reference
576 (url "https://github.com/csete/gqrx")
577 (commit (string-append "v" version))))
578 (file-name (git-file-name name version))
579 (sha256
580 (base32 "0m4ncydihz4n4i80c252vk3c5v672yab1jv85n6ndn7a92xv3ilq"))))
581 (build-system qt-build-system)
582 (native-inputs
583 `(("pkg-config" ,pkg-config)))
584 (inputs
585 `(("alsa-lib" ,alsa-lib)
586 ("boost" ,boost)
587 ("fftwf" ,fftwf)
588 ("gmp" ,gmp)
589 ("gnuradio" ,gnuradio)
590 ("gnuradio-iqbalance" ,gnuradio-iqbalance)
591 ("gnuradio-osmosdr" ,gnuradio-osmosdr)
592 ("jack" ,jack-1)
593 ("libsndfile" ,libsndfile)
594 ("log4cpp" ,log4cpp)
595 ("portaudio" ,portaudio)
596 ("pulseaudio" ,pulseaudio)
597 ("qtbase" ,qtbase)
598 ("qtsvg" ,qtsvg)
599 ("volk" ,volk)))
600 (arguments
601 `(#:tests? #f)) ; no tests
602 (synopsis "Software defined radio receiver")
603 (description "Gqrx is a software defined radio (SDR) receiver implemented
604 using GNU Radio and the Qt GUI toolkit.")
605 (home-page "https://gqrx.dk/")
606 (license license:gpl3+)))
607
608 (define-public fldigi
609 (package
610 (name "fldigi")
611 (version "4.1.18")
612 (source
613 (origin
614 (method git-fetch)
615 (uri (git-reference
616 (url "https://git.code.sf.net/p/fldigi/fldigi")
617 (commit (string-append "v" version))))
618 (file-name (git-file-name name version))
619 (sha256
620 (base32 "177qnl1bxy46rqwdxizfy2i3mxk5bzz733cp445rfzl7b6yf6zrn"))))
621 (build-system gnu-build-system)
622 (native-inputs
623 `(("autoconf" ,autoconf)
624 ("automake" ,automake)
625 ("gettext" ,gettext-minimal)
626 ("pkg-config" ,pkg-config)))
627 (inputs
628 `(("alsa-lib" ,alsa-lib)
629 ("fltk" ,fltk)
630 ("hamlib" ,hamlib)
631 ("libpng" ,libpng)
632 ("libsamplerate" ,libsamplerate)
633 ("libusb" ,libusb)
634 ("libx11" ,libx11)
635 ("libxext" ,libxext)
636 ("libxfixes" ,libxfixes)
637 ("libxft" ,libxft)
638 ("portaudio" ,portaudio)
639 ("pulseaudio" ,pulseaudio)))
640 (synopsis "Software modem for amateur radio use")
641 (description
642 "Fldigi is a software modem for amateur radio use. It is a sound card
643 based program that is used for both transmitting and receiving data by
644 connecting the microphone and headphone connections of a computer to some radio
645 hardware.")
646 (home-page "http://www.w1hkj.com/")
647 (license license:gpl3+)))
648
649 (define-public flrig
650 (package
651 (name "flrig")
652 (version "1.3.52")
653 (source
654 (origin
655 (method git-fetch)
656 (uri (git-reference
657 (url "https://git.code.sf.net/p/fldigi/flrig")
658 (commit (string-append "v" version))))
659 (file-name (git-file-name name version))
660 (sha256
661 (base32 "0vxn1wy5b2zfq20k93rfgq34m1nd3mxd74h8l98f90d85fhcqggy"))))
662 (build-system gnu-build-system)
663 (native-inputs
664 `(("autoconf" ,autoconf)
665 ("automake" ,automake)
666 ("pkg-config" ,pkg-config)))
667 (inputs
668 `(("fltk" ,fltk)
669 ("libx11" ,libx11)
670 ("libxext" ,libxext)
671 ("libxfixes" ,libxfixes)
672 ("libxft" ,libxft)))
673 (synopsis "Radio transceiver control program")
674 (description
675 "Flrig is a transceiver control program for amateur radio use.
676 It provides computer aided control of various radios using a serial
677 or USB connection.")
678 (home-page "http://www.w1hkj.com/")
679 (license license:gpl3+)))
680
681 (define-public flamp
682 (package
683 (name "flamp")
684 (version "2.2.05")
685 (source
686 (origin
687 (method git-fetch)
688 (uri (git-reference
689 (url "https://git.code.sf.net/p/fldigi/flamp")
690 (commit (string-append "v" version))))
691 (file-name (git-file-name name version))
692 (sha256
693 (base32 "0ll2wbhyh1sb4iqsypwrd118mrgw3vbsdbz442qhk4r6l8kjzblq"))))
694 (build-system gnu-build-system)
695 (native-inputs
696 `(("autoconf" ,autoconf)
697 ("automake" ,automake)
698 ("pkg-config" ,pkg-config)))
699 (inputs
700 `(("fltk" ,fltk)
701 ("libx11" ,libx11)
702 ("libxext" ,libxext)
703 ("libxfixes" ,libxfixes)
704 ("libxft" ,libxft)))
705 (synopsis "Tool for AMP file transfer")
706 (description
707 "FLAMP is a program for transferring files by radio waves using AMP
708 (Amateur Multicast Protocol).")
709 (home-page "http://www.w1hkj.com/")
710 (license license:gpl3+)))
711
712 (define-public flwrap
713 (package
714 (name "flwrap")
715 (version "1.3.5")
716 (source
717 (origin
718 (method git-fetch)
719 (uri (git-reference
720 (url "https://git.code.sf.net/p/fldigi/flwrap")
721 (commit (string-append "v" version))))
722 (file-name (git-file-name name version))
723 (sha256
724 (base32 "0xkhr82smfr7wpb9xl05wf7bz3vi2mr4xkcr2s8v6mblhgsdhqwg"))))
725 (build-system gnu-build-system)
726 (native-inputs
727 `(("autoconf" ,autoconf)
728 ("automake" ,automake)
729 ("pkg-config" ,pkg-config)))
730 (inputs
731 `(("fltk" ,fltk)
732 ("libx11" ,libx11)
733 ("libxext" ,libxext)
734 ("libxfixes" ,libxfixes)
735 ("libxft" ,libxft)))
736 (synopsis "File encapsulation program")
737 (description
738 "Flwrap is a software utility for amateur radio use. Its purpose is to
739 encapsulate both text and binary files in a way that allows them to be
740 transmitted over any of several digital modes and verified at the receipt end
741 for correctness.")
742 (home-page "http://www.w1hkj.com/")
743 (license license:gpl3+)))
744
745 (define-public hackrf
746 ;; Using a git commit because there have been many many commits
747 ;; since the relase two years ago, but no sign of a promised
748 ;; release for many months now.
749 (let ((commit "43e6f99fe8543094d18ff3a6550ed2066c398862")
750 (revision "0"))
751 (package
752 (name "hackrf")
753 (version (git-version "2018.01.1" revision commit))
754 (source
755 (origin
756 (method git-fetch)
757 (uri (git-reference
758 (url "https://github.com/mossmann/hackrf")
759 (commit commit)))
760 (file-name (git-file-name name version))
761 (sha256
762 (base32 "0avnv693xi0zsnrvkbfn0ln1r3s1iyj0bz7sc3gxay909av0pvbc"))))
763 (build-system cmake-build-system)
764 (arguments
765 '(#:configure-flags
766 (list "-DUDEV_RULES_GROUP=dialout"
767 (string-append "-DUDEV_RULES_PATH="
768 (assoc-ref %outputs "out")
769 "/lib/udev/rules.d"))
770 #:phases
771 (modify-phases %standard-phases
772 (add-before 'configure 'enter-source-directory
773 (lambda _
774 (chdir "host")
775 #t))
776 (add-after 'install 'delete-static-library
777 (lambda* (#:key outputs #:allow-other-keys)
778 (delete-file (string-append (assoc-ref outputs "out")
779 "/lib/libhackrf.a"))
780 #t))
781 (add-before 'install-license-files 'leave-source-directory
782 (lambda _
783 (chdir "..")
784 #t)))
785 #:tests? #f)) ; no test suite
786 (native-inputs
787 `(("pkg-config" ,pkg-config)))
788 (inputs
789 `(("fftw" ,fftw)
790 ("fftwf" ,fftwf)
791 ("libusb" ,libusb)))
792 (home-page "https://greatscottgadgets.com/hackrf/")
793 (synopsis "User-space library and utilities for HackRF SDR")
794 (description
795 "Command line utilities and a C library for controlling the HackRF
796 Software Defined Radio (SDR) over USB. Installing this package installs the
797 userspace hackrf utilities and C library. To install the hackrf udev rules,
798 you must extend 'udev-service-type' with this package. E.g.:
799 @code{(udev-rules-service 'hackrf hackrf #:groups '(\"dialout\"))}.")
800 (license license:gpl2))))
801
802 (define-public hamlib
803 (package
804 (name "hamlib")
805 (version "4.1")
806 (source
807 (origin
808 (method url-fetch)
809 (uri (string-append
810 "https://github.com/Hamlib/Hamlib/releases/download/"
811 version "/hamlib-" version ".tar.gz"))
812 (sha256
813 (base32 "0hi3nc1k55mxff05amdv5iwryaz6r3205l24q0bg7l84f53bkm5l"))))
814 (build-system gnu-build-system)
815 (native-inputs
816 `(("doxygen" ,doxygen)
817 ("lua" ,lua)
818 ("pkg-config" ,pkg-config)
819 ("python-wrapper" ,python-wrapper)
820 ("swig" ,swig)
821 ("tcl" ,tcl)))
822 (inputs
823 `(("gd" ,gd)
824 ("libusb" ,libusb)
825 ("libxml2" ,libxml2)
826 ("readline" ,readline)))
827 (arguments
828 `(#:configure-flags '("--disable-static"
829 "--with-lua-binding"
830 "--with-python-binding"
831 "--with-tcl-binding"
832 "--with-xml-support")))
833 (synopsis "Tools and API to control radios")
834 (description
835 "The Ham Radio Control Library (Hamlib) is a project to provide programs
836 with a consistent Application Programming Interface (API) for controlling the
837 myriad of radios and rotators available to amateur radio and communications
838 users.")
839 (home-page "https://hamlib.github.io/")
840 (license (list license:gpl2+ license:lgpl2.1+))))
841
842 (define wsjtx-hamlib
843 ;; Fork of hamlib with custom patches used by wsjtx.
844 (package
845 (inherit hamlib)
846 (name "wsjtx-hamlib")
847 (version "2.3.1")
848 (source
849 (origin
850 (method git-fetch)
851 (uri (git-reference
852 (url "https://git.code.sf.net/u/bsomervi/hamlib.git")
853 (commit (string-append "wsjtx-" version))))
854 (file-name (git-file-name name version))
855 (sha256
856 (base32 "0m4yzjcqs7a1w4lghyyckpkiy96jxdjijddxarqr3a37cl2rz23j"))))
857 (native-inputs
858 `(("autoconf" ,autoconf)
859 ("automake" ,automake)
860 ("libtool" ,libtool)
861 ("texinfo" ,texinfo)
862 ,@(package-native-inputs hamlib)))
863 (arguments
864 `(#:configure-flags '("--disable-static"
865 "--with-lua-binding"
866 "--with-python-binding"
867 "--with-tcl-binding"
868 "--with-xml-support")))))
869
870 (define-public wsjtx
871 (package
872 (name "wsjtx")
873 (version "2.3.1")
874 (source
875 (origin
876 (method git-fetch)
877 (uri (git-reference
878 (url "https://git.code.sf.net/p/wsjt/wsjtx.git")
879 (commit (string-append "wsjtx-" version))))
880 (file-name (git-file-name name version))
881 (sha256
882 (base32 "0mdr4l7zii08615yn7z91spnvnqm5i9390bra9lz3aqyxrsiim91"))))
883 (build-system qt-build-system)
884 (native-inputs
885 `(("asciidoc" ,asciidoc)
886 ("gfortran" ,gfortran)
887 ("pkg-config" ,pkg-config)
888 ("qttools" ,qttools)
889 ("ruby-asciidoctor" ,ruby-asciidoctor)))
890 (inputs
891 `(("boost" ,boost)
892 ("fftw" ,fftw)
893 ("fftwf" ,fftwf)
894 ("hamlib" ,wsjtx-hamlib)
895 ("libusb" ,libusb)
896 ("qtbase" ,qtbase)
897 ("qtmultimedia" ,qtmultimedia)
898 ("qtserialport" ,qtserialport)))
899 (arguments
900 `(#:tests? #f ; No test suite
901 #:phases
902 (modify-phases %standard-phases
903 (add-after 'unpack 'work-around-runtime-bug
904 (lambda _
905 ;; Some of the programs in this package fail to find symbols
906 ;; in libm at runtime. Adding libm manually at the end of the
907 ;; library lists when linking the programs seems to help.
908 ;; TODO: find exactly what is wrong in the way the programs
909 ;; are built.
910 (substitute* "CMakeLists.txt"
911 (("target_link_libraries \\((.*)\\)" all libs)
912 (string-append "target_link_libraries (" libs " m)")))
913 #t)))))
914 (synopsis "Weak-signal ham radio communication program")
915 (description
916 "WSJT-X implements communication protocols or modes called FT4, FT8,
917 JT4, JT9, JT65, QRA64, ISCAT, MSK144, and WSPR, as well as one called Echo for
918 detecting and measuring your own radio signals reflected from the Moon. These
919 modes were all designed for making reliable, confirmed QSOs under extreme
920 weak-signal conditions.")
921 (home-page "https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html")
922 (license license:gpl3)))
923
924 (define-public js8call
925 (package
926 (inherit wsjtx)
927 (name "js8call")
928 (version "2.2.0")
929 (source
930 (origin
931 (method url-fetch)
932 (uri (string-append "http://files.js8call.com/" version
933 "/js8call-" version ".tgz"))
934 (sha256
935 (base32 "149sjwc4zg6ckgq26af93p4fxappa4k9dh7rdy67g8ajfjad4cd8"))
936 (modules '((guix build utils)))
937 (snippet
938 '(begin
939 ;; Delete bundled boost to use the shared one.
940 (delete-file-recursively "boost")
941 #t))))
942 (build-system qt-build-system)
943 (native-inputs
944 `(("asciidoc" ,asciidoc)
945 ("gfortran" ,gfortran)
946 ("pkg-config" ,pkg-config)
947 ("qttools" ,qttools)
948 ("ruby-asciidoctor" ,ruby-asciidoctor)))
949 (inputs
950 `(("boost" ,boost)
951 ("fftw" ,fftw)
952 ("fftwf" ,fftwf)
953 ("hamlib" ,wsjtx-hamlib)
954 ("libusb" ,libusb)
955 ("qtbase" ,qtbase)
956 ("qtmultimedia" ,qtmultimedia)
957 ("qtserialport" ,qtserialport)))
958 (arguments
959 `(#:tests? #f ; No test suite
960 #:phases
961 (modify-phases %standard-phases
962 (add-after 'unpack 'fix-paths
963 (lambda* (#:key outputs #:allow-other-keys)
964 (substitute* "CMakeLists.txt"
965 (("DESTINATION /usr/share")
966 (string-append "DESTINATION "
967 (assoc-ref outputs "out")
968 "/share")))
969 #t))
970 (add-after 'fix-paths 'work-around-runtime-bug
971 (lambda _
972 ;; Some of the programs in this package fail to find symbols
973 ;; in libm at runtime. Adding libm manually at the end of the
974 ;; library lists when linking the programs seems to help.
975 ;; TODO: find exactly what is wrong in the way the programs
976 ;; are built.
977 (substitute* "CMakeLists.txt"
978 (("target_link_libraries \\((.*)\\)" all libs)
979 (string-append "target_link_libraries (" libs " m)")))
980 #t))
981 (add-after 'unpack 'fix-hamlib
982 (lambda _
983 (substitute* "CMake/Modules/Findhamlib.cmake"
984 (("set \\(ENV\\{PKG_CONFIG_PATH\\}.*\\)")
985 "set (__pc_path $ENV{PKG_CONFIG_PATH})
986 list (APPEND __pc_path \"${__hamlib_pc_path}\")
987 set (ENV{PKG_CONFIG_PATH} \"${__pc_path}\")"))
988 (substitute* "HamlibTransceiver.hpp"
989 (("#ifdef JS8_USE_LEGACY_HAMLIB")
990 "#if 1"))
991 #t)))))
992 (synopsis "Weak-signal ham radio communication program")
993 (description
994 "JS8Call is a software using the JS8 digital mode (a derivative of the FT8
995 mode) providing weak signal keyboard to keyboard messaging to amateur radio
996 operators.")
997 (home-page "http://js8call.com/")
998 (license license:gpl3)))
999
1000 (define-public xnec2c
1001 (package
1002 (name "xnec2c")
1003 (version "4.1.1")
1004 (source
1005 (origin
1006 (method url-fetch)
1007 (uri (string-append "http://www.5b4az.org/pkg/nec2/xnec2c/xnec2c-"
1008 version ".tar.bz2"))
1009 (sha256
1010 (base32 "1myvlkfybb2ha8l0h96ca3iz206zzy9z5iizm0sbab2zzp78n1r9"))))
1011 (build-system gnu-build-system)
1012 (native-inputs
1013 `(("pkg-config" ,pkg-config)))
1014 (inputs
1015 `(("gtk+" ,gtk+)))
1016 (arguments
1017 `(#:phases
1018 (modify-phases %standard-phases
1019 (add-after 'unpack 'fix-makefile
1020 (lambda* (#:key outputs #:allow-other-keys)
1021 (substitute* '("Makefile.am" "Makefile.in")
1022 ;; The DESTDIR variable does not get replaced the prefix
1023 ;; in the final Makefile, so let's do here.
1024 (("\\$\\(DESTDIR\\)/usr")
1025 (assoc-ref outputs "out")))
1026 #t))
1027 (add-after 'fix-makefile 'fix-paths
1028 (lambda* (#:key outputs #:allow-other-keys)
1029 ;; Increase the max length of the path to the glade file,
1030 ;; so that the '/gnu/store/...' path can fit in.
1031 (substitute* '("src/shared.c" "src/shared.h")
1032 (("char xnec2c_glade\\[64\\];")
1033 "char xnec2c_glade[256];"))
1034 ;; Fix hard coded references to '/usr/...'.
1035 (substitute* '("src/geom_edit.c" "src/main.c")
1036 (("\"/usr")
1037 (string-append "\"" (assoc-ref outputs "out"))))
1038 #t)))))
1039 (synopsis "Antenna modeling software")
1040 (description
1041 "Xnec2c is a GTK3-based graphical version of nec2c, a translation to the
1042 C language of NEC2, the FORTRAN Numerical Electromagnetics Code commonly used
1043 for antenna simulation and analysis. It can be used to define the geometry of
1044 an antenna, and then plot the radiation pattern or frequency-related data like
1045 gain and standing wave ratio.")
1046 (home-page "http://www.5b4az.org/")
1047 (license license:gpl3+)))
1048
1049 (define-public dump1090
1050 (package
1051 (name "dump1090")
1052 (version "4.0")
1053 (source
1054 (origin
1055 (method git-fetch)
1056 (uri (git-reference
1057 (url "https://github.com/flightaware/dump1090")
1058 (commit (string-append "v" version))))
1059 (file-name (git-file-name name version))
1060 (sha256
1061 (base32 "1zacsqaqsiapljhzw31dwc4nld2rp98jm3ivkyznrhzk9n156p42"))))
1062 (build-system gnu-build-system)
1063 (native-inputs
1064 `(("pkg-config" ,pkg-config)))
1065 (inputs
1066 `(("libusb" ,libusb)
1067 ("ncurses" ,ncurses)
1068 ("rtl-sdr" ,rtl-sdr)))
1069 (arguments
1070 `(#:test-target "test"
1071 #:make-flags
1072 (list (string-append "CC=" ,(cc-for-target))
1073 "BLADERF=no")
1074 #:phases
1075 (modify-phases %standard-phases
1076 (delete 'configure)
1077 (replace 'install
1078 (lambda* (#:key outputs #:allow-other-keys)
1079 (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
1080 (install-file "dump1090" bin)
1081 (install-file "view1090" bin)
1082 #t))))))
1083 (synopsis "Mode S decoder for rtl-sdr devices")
1084 (description
1085 "Dump1090 is a Mode S decoder specifically designed for rtl-sdr devices.
1086 It can be used to decode the ADS-B signals that planes emit to indicate
1087 their position, altitude, speed, etc.")
1088 (home-page "https://github.com/flightaware/dump1090")
1089 (license license:gpl2+)))
1090
1091 (define-public rtl-433
1092 (package
1093 (name "rtl-433")
1094 (version "20.11")
1095 (source
1096 (origin
1097 (method git-fetch)
1098 (uri (git-reference
1099 (url "https://github.com/merbanan/rtl_433")
1100 (commit version)))
1101 (file-name (git-file-name name version))
1102 (sha256
1103 (base32 "093bxjxkg7yf78wqj5gpijbfa2p05ny09qqsj84kzi1svnzsa369"))))
1104 (build-system cmake-build-system)
1105 (native-inputs
1106 `(("pkg-config" ,pkg-config)))
1107 (inputs
1108 `(("libusb" ,libusb)
1109 ("rtl-sdr" ,rtl-sdr)))
1110 (synopsis "Decoder for radio transmissions in ISM bands")
1111 (description
1112 "This is a generic data receiver, mainly for decoding radio transmissions
1113 from devices on the 433 MHz, 868 MHz, 315 MHz, 345 MHz and 915 MHz ISM bands.")
1114 (home-page "https://github.com/merbanan/rtl_433")
1115 (license license:gpl2+)))
1116
1117 (define-public multimon-ng
1118 (package
1119 (name "multimon-ng")
1120 (version "1.1.9")
1121 (source
1122 (origin
1123 (method git-fetch)
1124 (uri (git-reference
1125 (url "https://github.com/EliasOenal/multimon-ng")
1126 (commit version)))
1127 (file-name (git-file-name name version))
1128 (sha256
1129 (base32 "01716cfhxfzsab9zjply9giaa4nn4b7rm3p3vizrwi7n253yiwm2"))))
1130 (build-system cmake-build-system)
1131 (inputs
1132 `(("libx11" ,libx11)
1133 ("pulseaudio" ,pulseaudio)))
1134 (arguments
1135 '(#:tests? #f)) ; no test suite
1136 (home-page "https://github.com/EliasOenal/multimon-ng")
1137 (synopsis "Decoder for digital radio transmission modes")
1138 (description "Multimon-ng can decode several digital radio transmission
1139 modes:
1140 @itemize
1141 @item POCSAG512, POCSAG1200, POCSAG2400
1142 @item FLEX
1143 @item EAS
1144 @item UFSK1200, CLIPFSK, AFSK1200, AFSK2400, AFSK2400_2, AFSK2400_3
1145 @item HAPN4800
1146 @item FSK9600
1147 @item DTMF
1148 @item ZVEI1, ZVEI2, ZVEI3, DZVEI, PZVEI
1149 @item EEA, EIA, CCIR
1150 @item MORSE CW
1151 @item X10
1152 @end itemize")
1153 (license license:gpl2+)))
1154
1155 (define-public nanovna-saver
1156 (package
1157 (name "nanovna-saver")
1158 (version "0.3.8")
1159 (source
1160 (origin
1161 (method git-fetch)
1162 (uri (git-reference
1163 (url "https://github.com/NanoVNA-Saver/nanovna-saver")
1164 (commit (string-append "v" version))))
1165 (file-name (git-file-name name version))
1166 (sha256
1167 (base32 "0z83rwpnbbs1n74mx8dgh1d1crp90mannj9vfy161dmy4wzc5kpv"))))
1168 (build-system python-build-system)
1169 (native-inputs
1170 `(("python-cython" ,python-cython)))
1171 (inputs
1172 `(("python-numpy" ,python-numpy)
1173 ("python-pyqt" ,python-pyqt)
1174 ("python-pyserial" ,python-pyserial)
1175 ("python-scipy" ,python-scipy)))
1176 (arguments
1177 '(#:tests? #f))
1178 (home-page "https://github.com/NanoVNA-Saver/nanovna-saver")
1179 (synopsis "GUI for NanoVNA devices")
1180 (description
1181 "NanoVNA-Saver is a tool for reading, displaying and saving data from the
1182 NanoVNA vector network analyzers.")
1183 (license license:gpl3+)))
1184
1185 (define-public qsstv
1186 (package
1187 (name "qsstv")
1188 (version "9.4.4")
1189 (source
1190 (origin
1191 (method url-fetch)
1192 (uri (string-append "http://users.telenet.be/on4qz/qsstv/downloads/"
1193 "qsstv_" version ".tar.gz"))
1194 (sha256
1195 (base32 "0f9hx6sy418cb23fadll298pqbc5l2lxsdivi4vgqbkvx7sw58zi"))))
1196 (build-system qt-build-system)
1197 (native-inputs
1198 `(("pkg-config" ,pkg-config)))
1199 (inputs
1200 `(("alsa-lib" ,alsa-lib)
1201 ("fftw" ,fftw)
1202 ("fftwf" ,fftwf)
1203 ("hamlib" ,hamlib)
1204 ("openjpeg" ,openjpeg)
1205 ("pulseaudio" ,pulseaudio)
1206 ("qtbase" ,qtbase)
1207 ("v4l-utils" ,v4l-utils)))
1208 (arguments
1209 `(#:tests? #f ; No test suite.
1210 #:phases
1211 (modify-phases %standard-phases
1212 (replace 'configure
1213 (lambda* (#:key outputs #:allow-other-keys)
1214 (invoke "qmake"
1215 (string-append "PREFIX=" (assoc-ref outputs "out")))
1216 #t)))))
1217 (home-page "http://users.telenet.be/on4qz/qsstv/")
1218 (synopsis "Program for receiving and transmitting SSTV and HAMDRM")
1219 (description
1220 "QSSTV is a program for receiving and transmitting SSTV and HAMDRM
1221 (sometimes called DSSTV). It is compatible with most of MMSSTV and EasyPal.")
1222 (license (list license:gpl2+
1223 license:qwt1.0))))
1224
1225 (define-public direwolf
1226 (package
1227 (name "direwolf")
1228 (version "1.6")
1229 (source
1230 (origin
1231 (method git-fetch)
1232 (uri (git-reference
1233 (url "https://github.com/wb2osz/direwolf")
1234 (commit version)))
1235 (file-name (git-file-name name version))
1236 (sha256
1237 (base32 "0xmz64m02knbrpasfij4rrq53ksxna5idxwgabcw4n2b1ig7pyx5"))))
1238 (build-system cmake-build-system)
1239 (inputs
1240 `(("alsa-lib" ,alsa-lib)
1241 ("hamlib" ,hamlib)))
1242 (arguments
1243 `(#:phases
1244 (modify-phases %standard-phases
1245 (add-after 'unpack 'fix-paths
1246 (lambda* (#:key outputs #:allow-other-keys)
1247 (substitute* "conf/CMakeLists.txt"
1248 (("DESTINATION /etc")
1249 (string-append "DESTINATION "
1250 (assoc-ref outputs "out")
1251 "/etc"))))))))
1252 (home-page "https://github.com/wb2osz/direwolf")
1253 (synopsis "TNC for Amateur Packet Radio")
1254 (description
1255 "Dire Wolf is a Terminal Node Controller (TNC) for Amateur Packet Radio.
1256 It can perform as:
1257 @itemize
1258 @item APRS GPS tracker,
1259 @item Digipeater,
1260 @item Internet gateway (IGate)
1261 @item APRStt gateway
1262 @end itemize\n")
1263 (license license:gpl2+)))
1264
1265 (define-public aldo
1266 (package
1267 (name "aldo")
1268 (version "0.7.7")
1269 (source
1270 (origin
1271 (method url-fetch)
1272 (uri (string-append "mirror://savannah/aldo/aldo-" version ".tar.bz2"))
1273 (sha256
1274 (base32 "14lzgldqzbbzydsy1cai3wln3hpyj1yhj8ji3wygyzr616fq9f7i"))))
1275 (build-system gnu-build-system)
1276 (inputs
1277 `(("ao" ,ao)))
1278 (home-page "https://www.nongnu.org/aldo/")
1279 (synopsis "Morse code tutor")
1280 (description
1281 "Aldo is a morse code learning tool providing four type of training
1282 methods:
1283
1284 @itemize
1285 @item Classic exercice,
1286 @item Koch method,
1287 @item Read from file,
1288 @item Callsign exercice.
1289 @end itemize\n")
1290 (license license:gpl3+)))
1291
1292 (define-public unixcw
1293 (package
1294 (name "unixcw")
1295 (version "3.6.0")
1296 (source
1297 (origin
1298 (method url-fetch)
1299 (uri (string-append "mirror://sourceforge/unixcw/unixcw-"
1300 version ".tar.gz"))
1301 (sha256
1302 (base32 "15wriwv91583kmmyijbzam3dpclzmg4qjyfzjv5f75x9b0gqabxm"))))
1303 (build-system gnu-build-system)
1304 (native-inputs
1305 `(("pkg-config" ,pkg-config)))
1306 (inputs
1307 `(("alsa-lib" ,alsa-lib)
1308 ("ncurses" ,ncurses)
1309 ("pulseaudio" ,pulseaudio)
1310 ("qtbase" ,qtbase)))
1311 (arguments
1312 `(#:configure-flags '("--disable-static")
1313 #:phases
1314 (modify-phases %standard-phases
1315 (add-after 'unpack 'fix-paths
1316 (lambda* (#:key inputs #:allow-other-keys)
1317 (substitute* '("configure"
1318 "src/config.h.in"
1319 "src/cwcp/Makefile.am"
1320 "src/cwcp/Makefile.in")
1321 (("-lcurses")
1322 "-lncurses"))
1323 (substitute* "src/libcw/libcw_pa.c"
1324 (("libpulse-simple.so" all)
1325 (string-append (assoc-ref inputs "pulseaudio")
1326 "/lib/" all))))))))
1327 (home-page "http://unixcw.sourceforge.net/")
1328 (synopsis "Morse code library and programs")
1329 (description
1330 "@code{unixcw} is a project providing the libcw library and a set of
1331 programs using the library: cw, cwgen, cwcp and xcwcp. The programs are
1332 intended for people who want to learn receiving and sending morse code.")
1333 (license license:gpl2+)))
1334
1335 (define-public gnuais
1336 (package
1337 (name "gnuais")
1338 (version "0.3.3")
1339 (source
1340 (origin
1341 (method git-fetch)
1342 (uri (git-reference
1343 (url "https://github.com/rubund/gnuais")
1344 (commit version)))
1345 (file-name (git-file-name name version))
1346 (sha256
1347 (base32 "1rik5fdfslszdn3yvj769jzmnv9pirzf76ki33bjjzk7nkabbnlm"))))
1348 (build-system cmake-build-system)
1349 (native-inputs
1350 `(("mariadb-dev" ,mariadb "dev")
1351 ("pkg-config" ,pkg-config)))
1352 (inputs
1353 `(("alsa-lib" ,alsa-lib)
1354 ("curl" ,curl)
1355 ("gtk+" ,gtk+)
1356 ("libsoup" ,libsoup-minimal)
1357 ("mariadb-lib" ,mariadb "lib")
1358 ("osm-gps-map" ,osm-gps-map)
1359 ("pulseaudio" ,pulseaudio)))
1360 (arguments
1361 `(#:tests? #f ; No test suite
1362 #:phases
1363 (modify-phases %standard-phases
1364 (add-after 'unpack 'fix-paths
1365 (lambda* (#:key outputs #:allow-other-keys)
1366 (substitute* "src/cfgfile.c"
1367 (("/usr/share/")
1368 (string-append (assoc-ref outputs "out") "/share/"))))))))
1369 (home-page "http://gnuais.sourceforge.net/")
1370 (synopsis "AIS message demodulator and decoder")
1371 (description
1372 "This program contains algorithms to demodulate and decode AIS (Automatic
1373 Identification System) messages sent by ships and coast stations.")
1374 (license license:gpl2+)))
1375
1376 (define-public kappanhang
1377 (package
1378 (name "kappanhang")
1379 (version "1.3")
1380 (source
1381 (origin
1382 (method git-fetch)
1383 (uri (git-reference
1384 (url "https://github.com/nonoo/kappanhang")
1385 (commit (string-append "v" version))))
1386 (file-name (git-file-name name version))
1387 (sha256
1388 (base32 "1ycy8avq5s7zspfi0d9klqcwwkpmcaz742cigd7pmcnbbhspcicp"))))
1389 (build-system go-build-system)
1390 (arguments
1391 '(#:import-path "github.com/nonoo/kappanhang"
1392 #:install-source? #f))
1393 (inputs
1394 `(("go-github-com-akosmarton-papipes",go-github-com-akosmarton-papipes)
1395 ("go-github-com-fatih-color" ,go-github-com-fatih-color)
1396 ("go-github-com-google-goterm" ,go-github-com-google-goterm)
1397 ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
1398 ("go-github-com-mesilliac-pulse-simple"
1399 ,go-github-com-mesilliac-pulse-simple)
1400 ("go-github-com-pborman-getopt" ,go-github-com-pborman-getopt)
1401 ("go-go-uber-org-multierr" ,go-go-uber-org-multierr)
1402 ("go-go-uber-org-zap" ,go-go-uber-org-zap)))
1403 (home-page "https://github.com/nonoo/kappanhang")
1404 (synopsis "Client for Icom RS-BA1 server")
1405 (description
1406 "Kappanhang remotely opens audio channels and a serial port to an Icom
1407 RS-BA1 server. The application is mainly developed for connecting to the Icom
1408 IC-705 transceiver, which has built-in WiFi and RS-BA1 server.
1409
1410 Compatible hardware/software:
1411 @itemize
1412 @item Icom RS-BA1 server software,
1413 @item Icom IC-705
1414 @item Icom IC-9700
1415 @end itemize\n")
1416 (license license:expat)))