diff options
Diffstat (limited to 'gnu/packages/networking.scm')
-rw-r--r-- | gnu/packages/networking.scm | 586 |
1 files changed, 422 insertions, 164 deletions
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index cc6f1a1e04..8501545b0f 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -26,7 +26,7 @@ ;;; Copyright © 2018, 2020-2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2018, 2020, 2021, 2022 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> -;;; Copyright © 2019, 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019, 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Vasile Dumitrascu <va511e@yahoo.com> ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si> @@ -61,6 +61,9 @@ ;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream> ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2023 Artyom V. Poptsov <poptsov.artyom@gmail.com> +;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz> +;;; Copyright © 2022 Dominic Martinez <dom@dominicm.dev> +;;; Copyright © 2024 Alexey Abramov <levenson@mmer.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -113,6 +116,7 @@ #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages dejagnu) + #:use-module (gnu packages dns) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) #:use-module (gnu packages flex) @@ -123,7 +127,11 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages gnupg) #:use-module (gnu packages golang) + #:use-module (gnu packages golang-build) + #:use-module (gnu packages golang-check) + #:use-module (gnu packages golang-crypto) #:use-module (gnu packages golang-web) + #:use-module (gnu packages golang-xyz) #:use-module (gnu packages graphviz) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) @@ -164,11 +172,14 @@ #:use-module (gnu packages sqlite) #:use-module (gnu packages ssh) #:use-module (gnu packages tcl) + #:use-module (gnu packages telephony) #:use-module (gnu packages textutils) #:use-module (gnu packages tls) + #:use-module (gnu packages upnp) #:use-module (gnu packages valgrind) #:use-module (gnu packages web) #:use-module (gnu packages wxwidgets) + #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (ice-9 match)) @@ -270,13 +281,12 @@ protocols.") "1m29p4bsafzbchnkidyrnglfdf1c9pnq6akkmivi23qdv9kj51dg")))) (build-system gnu-build-system) (arguments - `(#:parallel-tests? #f - #:make-flags (let ((target ,(%current-target-system))) - (list ,(string-append "CC=" - (cc-for-target)) - (string-append "PREFIX=" - (assoc-ref %outputs "out")))) - #:test-target "test")) + (list + #:parallel-tests? #f + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)) + #:test-target "test")) (home-page "https://librecast.net/lcrq.html") (synopsis "Librecast RaptorQ library") (description @@ -341,13 +351,11 @@ Unix Domain Sockets, SCTP for both IPv4 and IPv6.") (base32 "1rhk80ybd2zranay76z1ysifnnm786lg9kiiijcwv76qy95in9ks")))) (build-system gnu-build-system) (arguments - `(#:parallel-tests? #f - #:configure-flags (list (string-append "--prefix=" - (assoc-ref %outputs "out"))) - #:make-flags (let ((target ,(%current-target-system))) - (list ,(string-append "CC=" - (cc-for-target)))) - #:test-target "test")) + (list + #:parallel-tests? #f + #:configure-flags #~(list (string-append "--prefix=" #$output)) + #:make-flags #~(list (string-append "CC=" #$(cc-for-target))) + #:test-target "test")) (inputs (list lcrq librecast libsodium libbsd)) (home-page "https://librecast.net/lcsync.html") (synopsis "Librecast file and data syncing tool") @@ -521,13 +529,12 @@ GLib-based library, libnice, as well as GStreamer elements to use it.") (base32 "01m0q4n2hy3csbzil8ivjyzb1mh4w9jlh9iiv6z53kasl7aas27i")))) (build-system gnu-build-system) (arguments - `(#:parallel-tests? #f - #:make-flags (let ((target ,(%current-target-system))) - (list ,(string-append "CC=" - (cc-for-target)) - (string-append "PREFIX=" - (assoc-ref %outputs "out")))) - #:test-target "test")) + (list + #:parallel-tests? #f + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)) + #:test-target "test")) (inputs (list libsodium lcrq libbsd)) (synopsis "IPv6 multicast library") (description "Librecast is a C library which supports IPv6 multicast @@ -828,7 +835,7 @@ at the link-layer level.") (substitute* "src/supplemental/websocket/CMakeLists.txt" (("nng_test\\(wssfile_test\\)") ""))))))) (native-inputs (list oksh)) - (inputs (list mbedtls-apache)) + (inputs (list mbedtls-lts)) (synopsis "Lightweight messaging library") (description "NNG project is a rewrite of the scalability protocols library known as libnanomsg, and adds significant new capabilities, while retaining @@ -1414,39 +1421,50 @@ files contain direct mappings of the abstractions provided by the ØMQ C API.") (license license:expat))) (define-public libnatpmp - (package - (name "libnatpmp") - (version "20230423") - (source (origin - (method url-fetch) - (uri (string-append - "http://miniupnp.free.fr/files/" - name "-" version ".tar.gz")) - (sha256 - (base32 - "0w7wvf4yi8qv659dg9d3ndqvh3bqhgm21gd135spwhq6hhnfv106")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (delete 'configure) - (delete 'check)) ; no tests - #:make-flags - (let* ((target ,(%current-target-system)) - (gcc (if target - (string-append target "-gcc") - "gcc"))) - (list - (string-append "CC=" gcc) - (string-append "INSTALLPREFIX=" (assoc-ref %outputs "out")) - (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))))) - (home-page "http://miniupnp.free.fr/libnatpmp.html") - (synopsis "C library implementing NAT-PMP") - (description - "@code{libnatpmp} is a portable and asynchronous implementation of + ;; Install the latest commit as it provides a pkg-config (.pc) file. + (let ((base-version "20230423") + (commit "6a850fd2bd9b08e6edc886382a1dbae2a7df55ec") + (revision "0")) + (package + (name "libnatpmp") + (version (git-version base-version revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/miniupnp/libnatpmp") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "18hf9a3i3mncl3w80nzi1684iac3by86bv0hgmbm1v2w8gbfjyw0")))) + (build-system cmake-build-system) + (arguments + (list + #:tests? #f ;no test suite + #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-build-system + ;; Have CMake install the natpmp_declspec.h missing header file + ;; that is referenced by natpmp.h (see: + ;; https://github.com/miniupnp/libnatpmp/issues/41). + (lambda _ + (substitute* "CMakeLists.txt" + (("install\\(FILES natpmp.h") + "install(FILES natpmp.h natpmp_declspec.h")))) + (add-after 'unpack 'fix-version + (lambda _ + (with-output-to-file "VERSION" + (lambda () + (display #$base-version)))))))) + (native-inputs (list which)) + (home-page "https://miniupnp.tuxfamily.org/libnatpmp.html") + (synopsis "C library implementing NAT-PMP") + (description + "@code{libnatpmp} is a portable and asynchronous implementation of the Network Address Translation - Port Mapping Protocol (NAT-PMP) written in the C programming language.") - (license license:bsd-3))) + (license license:bsd-3)))) (define-public librdkafka (package @@ -1753,23 +1771,23 @@ of the same name.") (define-public wireshark (package (name "wireshark") - (version "4.0.7") + (version "4.2.4") (source (origin (method url-fetch) (uri (string-append "https://www.wireshark.org/download/src/wireshark-" version ".tar.xz")) (sha256 - (base32 "0xw7iagh37y02qgzgmb2xf1qagbphv5lpgra8lq3x0pzrc27p7x7")))) - (build-system cmake-build-system) + (base32 "034cmp6wv6k1gc5zw90z7782cap72j7jvyqn12rl8w9kfi20zga6")))) + (build-system qt-build-system) (arguments (list ;; This causes the plugins to register runpaths for the wireshark ;; libraries, which would otherwise cause the validate-runpath phase to ;; fail. - #:configure-flags #~(list (string-append "-DCMAKE_MODULE_LINKER_FLAGS=" - "-Wl,-rpath=" #$output "/lib") - "-DUSE_qt6=ON") + #:qtbase qtbase + #:configure-flags + #~(list (string-append "-DCMAKE_MODULE_LINKER_FLAGS=-Wl,-rpath=" #$output "/lib")) #:phases #~(modify-phases %standard-phases (replace 'check @@ -1778,11 +1796,7 @@ of the same name.") (invoke "ctest" "-VV" "-j" (if parallel-tests? (number->string (parallel-job-count)) - "1") - ;; Skip the suite_extcaps.case_extcaps.test_sdjournal - ;; test as it requires sdjournal (from systemd) and - ;; fails. - "-E" "suite_extcaps"))))))) + "1")))))))) (inputs (list c-ares glib @@ -1795,7 +1809,7 @@ of the same name.") libssh libxml2 lz4 - lua + lua-5.2 mit-krb5 `(,nghttp2 "lib") minizip @@ -1806,6 +1820,7 @@ of the same name.") qtsvg sbc snappy + speexdsp zlib `(,zstd "lib"))) (native-inputs @@ -1821,7 +1836,7 @@ of the same name.") (description "Wireshark is a network protocol analyzer, or @dfn{packet sniffer}, that lets you capture and interactively browse the contents of network frames.") - (home-page "https://www.wireshark.org/") + (home-page "https://www.wireshark.org") (license license:gpl2+))) (define-public fping @@ -2609,6 +2624,45 @@ library remains flexible, portable, and easily embeddable.") (home-page "http://enet.bespin.org") (license license:expat))) +(define-public enet-moonlight + (let ((commit "4cde9cc3dcc5c30775a80da1de87f39f98672a31") + (revision "1")) + (package + (inherit enet) + (name "enet") + (version (git-version "1.3.17" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cgutman/enet") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "07sr32jy989ja23fwg8bvrq2slgm7bhfw6v3xq7yczbw86c1dndv")))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f ;no test suite + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'build-share-lib + (lambda* _ + ;; -DBUILD_SHARED_LIBS=ON not working + (substitute* "CMakeLists.txt" + (("STATIC") + "SHARED")))) + (replace 'install + (lambda* (#:key outputs source #:allow-other-keys) + (let* ((include (string-append #$output + "/include")) + (lib (string-append #$output "/lib"))) + (mkdir-p include) + (mkdir-p lib) + (copy-recursively (string-append source + "/include") + include) + (install-file "libenet.so" lib))))))) + (native-inputs (list pkg-config))))) + (define-public sslh (package (name "sslh") @@ -3382,14 +3436,14 @@ eight bytes) tools (define-public asio (package (name "asio") - (version "1.22.2") + (version "1.28.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/asio/asio/" version " (Stable)/asio-" version ".tar.bz2")) (sha256 - (base32 "0v5w9j4a02j2rkc7mrdj3ms0kfpqbgq2ipkixlz2l0p8xs0vfsvp")))) + (base32 "0cp2c4v0kz0ln4bays0s3fr1mcxl527ay2lp7s14qbxx38vc5pfh")))) (build-system gnu-build-system) (inputs (list boost openssl)) @@ -3701,61 +3755,103 @@ communication over HTTP.") (license license:agpl3+))) (define-public restinio - ;; Temporarily use an unreleased commit, which includes fixes to be able to - ;; run the test suite in the resolver-less Guix build environment. - (let ((revision "0") - (commit "eda471ec3a2815965ca02ec93a1124a342b7601d")) - (package - (name "restinio") - (version (git-version "0.6.18" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Stiffstream/restinio") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0f4w7714r0ic7csgxydw2vzfh35ssk34pns9jycmc08dzc3r7whb")))) - (build-system cmake-build-system) - (arguments - (list - #:configure-flags #~(list "-DRESTINIO_FIND_DEPS=ON" - "-DRESTINIO_INSTALL=ON" - "-DRESTINIO_TEST=ON" - "-DRESTINIO_USE_EXTERNAL_HTTP_PARSER=ON" - "-DRESTINIO_USE_EXTERNAL_SOBJECTIZER=ON") - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'change-directory - (lambda _ - (chdir "dev")))))) - (native-inputs - (list catch2 - clara - json-dto)) - (inputs - (list openssl - sobjectizer)) - (propagated-inputs - ;; These are all #include'd by restinio's .hpp header files. - (list asio - fmt - http-parser - pcre - pcre2 - zlib)) - (home-page "https://stiffstream.com/en/products/restinio.html") - (synopsis "C++14 library that gives you an embedded HTTP/Websocket server") - (description "RESTinio is a header-only C++14 library that gives you an embedded + (package + (name "restinio") + (version "0.7.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Stiffstream/restinio") + (commit (string-append "v." version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "06p9gcnzgynsgfxxa1lk58pq5755px7sn00x2xh21qjnspwld1sy")))) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags + #~(list "-DRESTINIO_INSTALL=ON" + "-DRESTINIO_TEST=ON" + "-DRESTINIO_DEP_LLHTTP=system" + "-DRESTINIO_DEP_FMT=system" + "-DRESTINIO_DEP_EXPECTED_LITE=system" + "-DRESTINIO_DEP_CATCH2=system" + ;; No support to use a system provided so_5 + ;; (see: + ;; https://github.com/Stiffstream/restinio/issues/207). + "-DRESTINIO_WITH_SOBJECTIZER=OFF") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "dev"))) + (add-after 'change-directory 'use-system-catch2 + ;; It's not currently possible to select a system-provided catch2, + ;; so patch the build system (see: + ;; https://github.com/Stiffstream/restinio/issues/208). + (lambda _ + (substitute* "CMakeLists.txt" + (("add_subdirectory\\(catch2\\)") + "find_package(Catch2 REQUIRED)"))))))) + (native-inputs + (list catch2-3 + expected-lite + json-dto)) + (inputs + (list openssl + sobjectizer)) + (propagated-inputs + ;; These are all #include'd by restinio's .hpp header files. + (list asio + fmt + llhttp + pcre + pcre2 + zlib)) + (home-page "https://stiffstream.com/en/products/restinio.html") + (synopsis "C++14 library that gives you an embedded HTTP/Websocket server") + (description "RESTinio is a header-only C++14 library that gives you an embedded HTTP/Websocket server. It is based on standalone version of ASIO and targeted primarily for asynchronous processing of HTTP-requests.") - (license license:bsd-3)))) + (license license:bsd-3))) + +(define-public restinio-0.6 + (package + (inherit restinio) + (name "restinio") + (version "0.6.19") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Stiffstream/restinio") + (commit (string-append "v." version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1qrb1qr075r5059w984c4slgpsiwv94j6fmi9naa5l48dbi1p7jz")))) + (arguments + (list + #:configure-flags #~(list "-DRESTINIO_FIND_DEPS=ON" + "-DRESTINIO_INSTALL=ON" + "-DRESTINIO_TEST=ON" + "-DRESTINIO_USE_EXTERNAL_HTTP_PARSER=ON" + "-DRESTINIO_USE_EXTERNAL_SOBJECTIZER=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "dev")))))) + (native-inputs (list catch2 clara json-dto)) + ;; These are all #include'd by restinio's .hpp header files. + (propagated-inputs + (modify-inputs (package-propagated-inputs restinio) + (replace "llhttp" http-parser))))) (define-public opendht (package (name "opendht") - (version "2.4.12") + (version "3.1.7") (source (origin (method git-fetch) (uri (git-reference @@ -3764,7 +3860,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.") (file-name (git-file-name name version)) (sha256 (base32 - "0yji5pziqxfvyfizk3fn9j59bqlfdwfa1a0y9jjfknb2mmlwwb9w")))) + "15jx62fm1frbbvpkxysvvwz1a8d605xi53aacf0bvp4mb1dzpddn")))) (outputs '("out" "python" "tools" "debug")) (build-system gnu-build-system) (arguments @@ -3792,6 +3888,14 @@ and targeted primarily for asynchronous processing of HTTP-requests.") (substitute* "tests/Makefile.am" (("\\bdhtrunnertester\\.(h|cpp)\\b") "")))) + (add-after 'unupack 'relax-test-timeouts + (lambda _ + ;; At least the 'test_send_json' has been seen to fail + ;; non-deterministically, but it seems hard to reproducible that + ;; failure. + (substitute* "tests/httptester.cpp" + (("std::chrono::seconds\\(10)") + "std::chrono::seconds(30)")))) (add-after 'unpack 'fix-python-installation-prefix ;; Specify the installation prefix for the compiled Python module ;; that would otherwise attempt to installs itself to Python's own @@ -3835,8 +3939,8 @@ and targeted primarily for asynchronous processing of HTTP-requests.") fmt readline)) (propagated-inputs - (list msgpack ;included in several installed headers - restinio ;included in opendht/http.h + (list msgpack-cxx ;included in several installed headers + restinio-0.6 ;included in opendht/http.h ;; The following are listed in the 'Requires.private' field of ;; opendht.pc: argon2 @@ -3880,6 +3984,61 @@ A very simple IM client working over the DHT. @end table") (license license:gpl3+))) +(define-public dhtnet + ;; There is no tag nor release; use the latest available commit. + (let ((revision "1") + (commit "41848a2c770d7eb0940d731014b81643f85e0d07")) + (package + (name "dhtnet") + ;; The base version is taken from the CMakeLists.txt file. + (version (git-version "0.0.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/savoirfairelinux/dhtnet") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "18v2pjrxfrd26p2z27s90marx7b593nz1xwi47lnp2ja7lm1pj4m")))) + (outputs (list "out" "debug")) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags #~(list "-DBUILD_DEPENDENCIES=OFF" + "-DBUILD_SHARED_LIBS=ON" + "-DBUILD_TESTING=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'delete-problematic-tests + (lambda _ + (substitute* "CMakeLists.txt" + ;; The connectionManager test currently segfaults (see: + ;; https://git.jami.net/savoirfairelinux/dhtnet/-/issues/18). + ((".*tests_connectionManager.*") "") + ;; The fileutils test fail, asserting an unexpected returned + ;; value for the removeAll call when the directory to be + ;; removed is missing (see: + ;; https://git.jami.net/savoirfairelinux/dhtnet/-/issues/17). + ((".*tests_fileutils.*") ""))))))) + (native-inputs (list cppunit pkg-config)) + ;; This library depends on the Jami fork of pjproject that adds ICE + ;; support. + (inputs + (list asio + fmt + msgpack-cxx + opendht + libupnp + pjproject-jami + readline + yaml-cpp)) + (home-page "https://github.com/savoirfairelinux/dhtnet/") + (synopsis "OpenDHT network library for C++") + (description "The @code{dhtnet} is a C++ library providing abstractions +for interacting with an OpenDHT distributed network.") + (license license:gpl3+)))) + (define-public frrouting (package (name "frrouting") @@ -3937,7 +4096,7 @@ powerful route filtering syntax and an easy-to-use configuration interface.") (define-public iwd (package (name "iwd") - (version "2.8") + (version "2.12") (source (origin (method git-fetch) (uri (git-reference @@ -3946,10 +4105,10 @@ powerful route filtering syntax and an easy-to-use configuration interface.") (file-name (git-file-name name version)) (sha256 (base32 - "0bpksqyaqr624bj7zm9hi22rnp6wnjbngx4q08l7lbd0r7r93vcb")))) + "199pcs20054xhp5c0dnxf9ny5cf5cynkqpx68dpn46nq8ly76n2y")))) (build-system gnu-build-system) (inputs - (list dbus ell (package-source ell) readline)) + (list dbus ell (package-source ell) openresolv readline)) (native-inputs (list autoconf automake @@ -3959,38 +4118,45 @@ powerful route filtering syntax and an easy-to-use configuration interface.") python-docutils openssl)) (arguments - `(#:configure-flags - ,#~(list "--disable-systemd-service" - "--enable-external-ell" - "--enable-hwsim" - "--enable-tools" - "--enable-wired" - "--localstatedir=/var" - (string-append "--with-dbus-datadir=" #$output "/share/") - (string-append "--with-dbus-busdir=" - #$output "/share/dbus-1/system-services")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'copy-ell-header-files - ;; Copy into the source tree two of ell's private header files that - ;; it shares with iwd, as is required to build with the - ;; "--enable-external-ell" configure option. - ;; See the definition of "ell_shared" in iwd's Makefile.am. - (lambda* (#:key inputs #:allow-other-keys) - (let ((ell-header-dir (search-input-directory inputs "/ell")) - (target-dir "ell")) - (mkdir target-dir) - (for-each - (lambda (file-name) - (copy-file (string-append ell-header-dir "/" file-name) - (string-append target-dir "/" file-name))) - '("asn1-private.h" "useful.h"))))) - (add-after 'configure 'patch-Makefile - (lambda _ - (substitute* "Makefile" - ;; Don't try to 'mkdir /var'. - (("\\$\\(MKDIR_P\\) -m 700") "true"))))))) - (home-page "https://git.kernel.org/pub/scm/network/wireless/iwd.git/") + (list #:configure-flags + #~(list "--disable-systemd-service" + "--enable-external-ell" + "--enable-hwsim" + "--enable-tools" + "--enable-wired" + "--localstatedir=/var" + (string-append "--with-dbus-datadir=" #$output "/share/") + (string-append "--with-dbus-busdir=" + #$output "/share/dbus-1/system-services")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'copy-ell-header-files + ;; Copy into the source tree two of ell's private header files + ;; that it shares with iwd, as is required to build with the + ;; "--enable-external-ell" configure option. See the + ;; definition of "ell_shared" in iwd's Makefile.am. + (lambda* (#:key inputs #:allow-other-keys) + (let ((ell-header-dir (search-input-directory inputs "/ell")) + (target-dir "ell")) + (mkdir target-dir) + (for-each + (lambda (file-name) + (copy-file (string-append ell-header-dir "/" file-name) + (string-append target-dir "/" file-name))) + '("asn1-private.h" "useful.h"))))) + (add-after 'unpack 'patch-resolvconf-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/resolve.c" + (("getenv\\(\"PATH\"\\)") + (format #f "\"~a\"" + (dirname (search-input-file + inputs "sbin/resolvconf"))))))) + (add-after 'configure 'patch-Makefile + (lambda _ + (substitute* "Makefile" + ;; Don't try to 'mkdir /var'. + (("\\$\\(MKDIR_P\\) -m 700") "true"))))))) + (home-page "https://iwd.wiki.kernel.org/") (synopsis "iNet Wireless Daemon") (description "iwd is a wireless daemon for Linux that aims to replace WPA Supplicant. It optimizes resource utilization by not depending on any external @@ -4385,7 +4551,7 @@ network.") (define-public ngtcp2 (package (name "ngtcp2") - (version "1.0.1") + (version "1.3.0") (source (origin (method url-fetch) @@ -4393,9 +4559,15 @@ network.") "releases/download/v" version "/" "ngtcp2-" version ".tar.xz")) (sha256 - (base32 "0l84hnj9n4bfxjizgmqsqbz71jx7m00a7l1z43fg5ls3apx9ij11")))) + (base32 "16qkik9185ygkr351a7q59l1rv6dzw51j4f7vkzfvzh385kqdqy3")))) (build-system gnu-build-system) - (native-inputs (list cunit)) + (arguments + (list + #:configure-flags + ;; openssl package does not support QUIC interface, so just gnutls + #~(list "--with-gnutls"))) + (native-inputs (list pkg-config)) + (inputs (list gnutls)) (home-page "https://nghttp2.org/ngtcp2/") (synopsis "QUIC protocol implementation") (description @@ -4406,7 +4578,7 @@ QUIC protocol.") (define-public yggdrasil (package (name "yggdrasil") - (version "0.5.2") + (version "0.5.5") (source (origin (method git-fetch) @@ -4417,7 +4589,7 @@ QUIC protocol.") (recursive? #t))) (file-name (git-file-name name version)) (sha256 - (base32 "0ahgb94s30sq1wwyc8h53mjj3j43ifr0aanj8262rsm6rqk04kzq")) + (base32 "0yzgs4b0q945ygrqlc5hnmh78awl5p35azx83fz61bzfg20d52b4")) (patches (search-patches "yggdrasil-extra-config.patch")))) (build-system go-build-system) (arguments @@ -4498,6 +4670,91 @@ IPv6 Internet connectivity - it also works over IPv4.") ;; which apply to the Application, with which you must still comply license:lgpl3))) +(define-public nebula + (package + (name "nebula") + (version "1.8.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/slackhq/nebula") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ly1axgmskrkmxhzymqis6gxf2wd7rvhycm94wfb8k0hirndvg5m")) + ;; Remove windows-related binary blobs and files + (snippet + #~(begin + (use-modules (guix build utils)) + (delete-file-recursively "dist/windows") + (delete-file-recursively "wintun"))))) + (build-system go-build-system) + (arguments + (list + #:go go-1.20 + #:import-path "github.com/slackhq/nebula" + #:install-source? #f + #:phases + #~(modify-phases %standard-phases + (replace 'build + (lambda* (#:key import-path #:allow-other-keys) + ;; Suggested option to provide build time flags is not supported + ;; in Guix for go-build-system. + ;; -ldflags "-X main.Build=SOMEVERSION" + (substitute* (string-append "src/" import-path "/cmd/nebula/main.go") + (("Version: ") + (string-append "Version: " #$version))) + ;; Build nebula and nebula-cert + (let* ((dir "github.com/slackhq/nebula") + (nebula-cmd (string-append dir "/cmd/nebula")) + (cert-cmd (string-append dir "/cmd/nebula-cert"))) + (invoke "go" "build" nebula-cmd) + (invoke "go" "build" cert-cmd)))) + (replace 'install + (lambda _ + (let* ((out #$output) + (bindir (string-append out "/bin"))) + (install-file "nebula" bindir) + (install-file "nebula-cert" bindir))))))) + (inputs + (list go-dario-cat-mergo + go-github-com-anmitsu-go-shlex + go-github-com-armon-go-radix + go-github-com-cespare-xxhash + go-github-com-cyberdelia-go-metrics-graphite + go-github-com-flynn-noise + go-github-com-gogo-protobuf + go-github-com-google-gopacket + go-github-com-miekg-dns + go-github-com-nbrownus-go-metrics-prometheus + go-github-com-prometheus-client-golang + go-github-com-prometheus-client-model + go-github-com-prometheus-procfs + go-github-com-rcrowley-go-metrics + go-github-com-sirupsen-logrus + go-github-com-skip2-go-qrcode + go-github-com-songgao-water + go-github-com-stretchr-testify + go-golang-org-x-crypto + go-golang-org-x-net + go-golang-org-x-sys + go-golang-org-x-term + go-google-golang-org-protobuf + go-gopkg-in-yaml-v2 + go-netlink + go-netns)) + (home-page "https://github.com/slackhq/nebula") + (synopsis "Scalable, peer-to-peer overlay networking tool") + (description + "Nebula is a peer-to-peer networking tool based on the +@url{https://noiseprotocol.org/, Noise Protocol Framework}. It is not a fully +decentralized network, but instead uses central discovery nodes and a +certificate authority to facilitate direct, encrypted peer-to-peer connections +from behind most firewalls and @acronym{NAT, Network Address Translation} +layers.") + (license license:expat))) + (define-public netdiscover (package (name "netdiscover") @@ -4529,7 +4786,7 @@ on hub/switched networks. It is based on @acronym{ARP} packets, it will send (define-public phantomsocks (package (name "phantomsocks") - (version "0.0.0-20231031033204-8b0ac27fc450") + (version "0.0.0-20240125140126-2576269ca69a") (source (origin (method git-fetch) (uri (git-reference @@ -4538,10 +4795,10 @@ on hub/switched networks. It is based on @acronym{ARP} packets, it will send (file-name (git-file-name name version)) (sha256 (base32 - "1q4i8pgj6hzry9wzlczx729dmmgqdqfb26rfaim2ngmp1dyy9drl")))) + "1kbcr6580a9pi0a3wssnfr3mnxqq2k9w1fg4khikn82lqaljab2f")))) (build-system go-build-system) (arguments - (list #:go go-1.20 + (list #:go go-1.21 #:install-source? #f #:import-path "github.com/macronut/phantomsocks" #:build-flags #~'("-tags" #$(if (target-linux?) @@ -4607,6 +4864,7 @@ implementations.") (home-page "https://www.chiark.greenend.org.uk/~sgtatham/putty/") (license license:expat))) + (define-public vnstat (package (name "vnstat") |