aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Taiju HIGASHI <higashi@taiju.info>
;;; Copyright © 2024 Sergio Durigan Junior <sergiodj@sergiodj.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages fediverse)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix gexp)
  #:use-module (guix git-download)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system meson)
  #:use-module (guix build-system pyproject)
  #:use-module (guix build-system python)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix utils)
  #:use-module (gnu packages)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages check)
  #:use-module (gnu packages curl)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages freedesktop)
  #:use-module (gnu packages gettext)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages gnome)
  #:use-module (gnu packages gstreamer)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages image)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python-build)
  #:use-module (gnu packages python-check)
  #:use-module (gnu packages python-crypto)
  #:use-module (gnu packages python-web)
  #:use-module (gnu packages python-xyz)
  #:use-module (gnu packages time)
  #:use-module (gnu packages tls)
  #:use-module (gnu packages xml))

(define-public toot
  (package
    (name "toot")
    (version "0.42.0")
    (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "toot" version))
        (sha256
         (base32 "1vw3j504dxmq22s40kysps3d09hl7l48cwznwrfr9zqif67i4v3g"))))
    (build-system pyproject-build-system)
    (arguments
     '(#:phases
       (modify-phases %standard-phases
         (replace 'check
           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
             (when tests?
               (add-installed-pythonpath inputs outputs)
               (invoke "py.test")))))))
    (native-inputs
     (list python-psycopg2-binary
           python-pytest
           python-pyyaml
           python-setuptools
           python-typing-extensions
           python-wheel))
    (inputs
     (list python-beautifulsoup4
           python-click
           python-requests
           python-tomlkit
           python-urwid
           python-urwidgets
           python-wcwidth))
    (home-page "https://github.com/ihabunek/toot/")
    (synopsis "Mastodon CLI client")
    (description "Interact with Mastodon social network from the command line.
Features include:
@itemize
@item Posting, replying, deleting statuses
@item Support for media uploads, spoiler text, sensitive content
@item Search by account or hash tag
@item Following, muting and blocking accounts
@item Simple switching between authenticated in Mastodon accounts
@end itemize")
    (license license:gpl3)))

(define-public tuba
  (package
    (name "tuba")
    (version "0.8.4")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/GeopJr/Tuba")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1s36z85s14fp9gicvifvwm2wg13rpb02aqsaz25rx3wg4m0bs83f"))))
    (build-system meson-build-system)
    (arguments
      (list
        #:glib-or-gtk? #t
        #:configure-flags #~(list "-Ddistro=true")
        #:phases
        #~(modify-phases %standard-phases
            (add-after 'glib-or-gtk-wrap 'lib-vars-wrap
              (lambda _
                (let ((gstvar "GST_PLUGIN_SYSTEM_PATH")
                      (pixvar "GDK_PIXBUF_MODULE_FILE"))
                  (wrap-program (string-append #$output "/bin/dev.geopjr.Tuba")
                    `(,gstvar ":" suffix (,(getenv gstvar)))
                    `(,pixvar ":" = (,(getenv pixvar)))))))
            (add-after 'lib-vars-wrap 'symlink-package
              (lambda _
                (with-directory-excursion (string-append #$output "/bin")
                  (symlink "dev.geopjr.Tuba" "tuba")))))))
    (native-inputs
     (list gdk-pixbuf ; so pixbuf loader cache (for webp) is generated
           gettext-minimal
           `(,glib "bin") ; for glib-compile-resources
           gsettings-desktop-schemas    ; for the org.gnome.system.proxy schema
           pkg-config))
    (inputs
     (list bash-minimal     ; for wrap-program
           gst-plugins-bad
           gst-plugins-base
           gst-plugins-good
           gstreamer
           gtk
           gtksourceview
           json-glib
           libadwaita
           libgee
           libsoup-minimal
           libsecret
           libwebp
           libxml2
           vala
           webp-pixbuf-loader))
    (home-page "https://tuba.geopjr.dev/")
    (synopsis "GTK client for Mastodon")
    (description "Tuba is a GTK client for Mastodon.  It provides a clean,
native interface that allows you to integrate Mastodon's social experience
seamlessly with your desktop environment.")
    (license license:gpl3)))

(define-public tootle
  (deprecated-package "tootle" tuba))

(define-public python-mastodon-py
  (package
    (name "python-mastodon-py")
    (version "1.5.1")
    (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Mastodon.py" version))
        (sha256
         (base32
          "1vikvkzcij2gd730cssigxi38vlmzqmwdy58r3y2cwsxifnxpz9a"))))
    (build-system python-build-system)
    (propagated-inputs
     (list python-blurhash
           python-dateutil
           python-decorator
           python-magic
           python-pytz
           python-requests
           python-six))
    (native-inputs
     (list python-blurhash
           python-cryptography
           python-http-ece
           python-pytest
           python-pytest-cov
           python-pytest-mock
           python-pytest-runner
           python-pytest-vcr
           python-requests-mock
           python-vcrpy))
    (home-page "https://github.com/halcy/Mastodon.py")
    (synopsis "Python wrapper for the Mastodon API")
    (description
     "This package provides a python wrapper for the Mastodon API.")
    (license license:expat)))

(define-public snac2
  (package
    (name "snac")
    (version "2.65")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://codeberg.org/grunfink/snac2")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
        (base32 "06npcsf8jkcygsh586wnsq6cr1cn46n3s8zx3inbjgh99sc24fcg"))))
    (build-system gnu-build-system)
    (inputs (list curl openssl))
    (arguments
     (list
       #:phases #~(modify-phases %standard-phases
                    (delete 'configure)
                    (add-after 'unpack 'remove-usr-local
                      (lambda _
                        (substitute* "Makefile"
                          (("-I/usr/local/include")
                           "")
                          (("-L/usr/local/lib")
                           "")))))
       #:tests? #f ; no test target
       #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
                            (string-append "CFLAGS=-O2 -g -Wall -Wextra")
                            (string-append "PREFIX=" #$output)
                            (string-append "PREFIX_MAN=" #$output "/share/man"))))
    (home-page "https://codeberg.org/grunfink/snac2")
    (synopsis
     "Simple, minimalistic ActivityPub instance written in portable C")
    (description
     "Snac is a simple, minimalistic ActivityPub instance written in
portable C.

It features:

@itemize
@item Lightweight, minimal dependencies
@item Extensive support of ActivityPub operations, e.g. write public notes,
follow users, be followed, reply to the notes of others, admire wonderful
content (like or boost), write private messages, etc.
@item Multiuser support
@item Mastodon API support, so Mastodon-compatible apps can be used
@item Simple but effective web interface
@item Easily-accessed MUTE button to silence users
@item Tested interoperability with related software
@item No database needed
@item Totally JavaScript-free; no cookies either
@end itemize")
    (license license:expat)))
ed video decoding on supported hardware. - Neuters the GenAI chat feature, which direcly integrates with non-free services, by excluding it from the build and locking the preferences which would enable it. Fixes: CVE-2024-8385: WASM type confusion involving ArrayTypes CVE-2024-8381: Type confusion when looking up a property name in a "with" block CVE-2024-8388: Fullscreen notice on Android could be hidden under various panels and OS prompts CVE-2024-8382: Internal event interfaces were exposed to web content when browser EventHandler listener callbacks ran CVE-2024-8383: Firefox did not ask before openings news: links in an external application CVE-2024-8384: Garbage collection could mis-color cross-compartment objects in OOM conditions CVE-2024-8386: SelectElements could be shown over another site if popups are allowed CVE-2024-8387: Memory safety bugs fixed in Firefox 130, Firefox ESR 128.2, and Thunderbird 128.2 CVE-2024-8389: Memory safety bugs fixed in Firefox 130 * gnu/packages/librewolf.scm (librewolf): Update to 130.0.1-1. Change-Id: I764e6e66c5bfdc14a87b7ea59c29780a1f16769a Signed-off-by: Andrew Tropin <andrew@trop.in> Ian Eure 2024-08-31build-systems: gnu: Export %default-gnu-imported-modules and %default-gnu-mod......Until now users would have to cargo cult or inspect the private %default-modules variable of (guix build-systems gnu) to discover which modules to include when extending the used modules via the #:modules argument. The renaming was automated via the command: $ git grep -l %gnu-build-system-modules | xargs sed 's/%gnu-build-system-modules/%default-gnu-imported-modules/' -i * guix/build-system/gnu.scm (%gnu-build-system-modules): Rename to... (%default-gnu-imported-modules): ... this. (%default-modules): Rename to... (%default-gnu-modules): ... this. Export. (dist-package, gnu-build, gnu-cross-build): Adjust accordingly. Change-Id: Idef307fff13cb76f3182d782b26e1cd3a5c757ee Maxim Cournoyer 2024-08-19gnu: librewolf: Update to 129.0.1-1....* gnu/packages/librewolf.scm (librewolf): Update to 129.0.1-1. Change-Id: Iefeff2ea7016e8d55313b55dd97179f80bcead1b Signed-off-by: Vagrant Cascadian <vagrant@debian.org> Ian Eure 2024-08-11gnu: librewolf: Use distinct WM Class....Make desktop environments properly render the icon and not conflate LibreWolf with other browsers with the "Navigator" class. A similar fix to IceCat was pushed as commit be1d05c10766a979dd0720b677889ed950d3b895. * gnu/packages/librewolf.scm (librewolf)[arguments]: Set both the MOZ_APP_REMOTINGNAME environment variable and librewolf.desktop's StartupWMClass to "LibreWolf". Change-Id: I3e117f99ee25321fe3a40ad67450460971579d71 Ashvith Shetty 2024-07-08gnu: librewolf: Fix building on aarch64-linux....* gnu/packages/librewolf.scm (librewolf)[arguments]: On non-x86-linux systems the "--disable-eme" switch is not available because EME is not available. Change-Id: I0f397570249b1bc6a0182d2744a8d3c459c1bafa Signed-off-by: Andreas Enge <andreas@enge.fr> Remco van 't Veer 2024-06-11gnu: librewolf: Update to 126.0.1-1....* gnu/packages/librewolf.scm (librewolf): Update to 126.0.1-1. Change-Id: Ie2cda543b3de76226d1d6959711b955d22c74fef Signed-off-by: Christopher Baines <mail@cbaines.net> Ian Eure 2024-05-31gnu: librewolf: Update to 126.0-1 [security fixes]....* gnu/packages/librewolf.scm (librewolf): Update to 126.0-1. Fixes CVE-2024-4367, CVE-2024-4764, CVE-2024-4765, CVE-2024-4766, CVE-2024-4767, CVE-2024-4768, CVE-2024-4769, CVE-2024-4770, CVE-2024-4771, CVE-2024-4772, CVE-2024-4773, CVE-2024-4774, CVE-2024-4775, CVE-2024-4776, CVE-2024-4777, CVE-2024-4778. Change-Id: Iec010e516651588da389f747074cbd10f8c14377 Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Ian Eure 2024-05-31gnu: librewolf: Generate source tarball....This patch removes an intermediate step in the build chain. The upstream source tarball is created with an automated build process, where Firefox sources are fetched, patched, and repacked. Rather than download the output of that process, as the package has been, it’s now replicated within the build process, similar to how IceCat works. * gnu/packages/librewolf.scm (firefox-source-origin): New procedure. (librewolf-source-origin): Likewise. (computed-origin-method): New variable. (librewolf-source): Likewise. (librewolf) [source]: Use it. Change-Id: I0f1c2a10252cbbff9b3b3140f6ea3a594df0c97b Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Ian Eure 2024-04-28gnu: librewolf: Update to 125.0.2-1....* gnu/packages/librewolf.scm (librewolf): Update to 125.0.2-1. Build with LLVM/Clang 18; LLVM 13 (the default) segfaults on build. Minor style tweaks. Change-Id: Ib515f1596b3ce2dd192baebf1a877b3c2dc8d7e2 Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Ian Eure 2024-04-26gnu: nss: Graft with version 3.98 [security fixes]....This fixes CVE-2023-5388, CVE-2023-6135 and CVE-2024-0743. * gnu/packages/nss.scm (nss) [replacement]: New field. (nss-3.98): Rename variable to... (nss/fixed): ... this. Make it a hidden package. * gnu/packages/librewolf.scm (librewolf) [inputs]: Replace nss-3.98 with nss/fixed. Change-Id: I8cc667c53a270dfe00738bf731923f1342036624 Maxim Cournoyer 2024-04-12gnu: Add librewolf....* gnu/packages/librewolf.scm (librewolf): New variable. * gnu/local.mk (dist_patch_DATA): Add it. Change-Id: I98b6410582b856ede83b79637a58e66d6e5832e6 Signed-off-by: Andrew Tropin <andrew@trop.in> Ian Eure