summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dir-locals.el12
-rw-r--r--.guix-authorizations1
-rw-r--r--.guix-channel1
-rw-r--r--NEWS21
-rw-r--r--README.org39
-rw-r--r--news.txt54
-rw-r--r--nongnu/ci.scm14
-rw-r--r--nongnu/packages/anydesk.scm21
-rw-r--r--nongnu/packages/benchmark.scm43
-rw-r--r--nongnu/packages/cad.scm14
-rw-r--r--nongnu/packages/chrome.scm152
-rw-r--r--nongnu/packages/chromium.scm25
-rw-r--r--nongnu/packages/clojure.scm57
-rw-r--r--nongnu/packages/compression.scm21
-rw-r--r--nongnu/packages/coq.scm25
-rw-r--r--nongnu/packages/databases.scm45
-rw-r--r--nongnu/packages/dotnet.scm31
-rw-r--r--nongnu/packages/dyalog.scm222
-rw-r--r--nongnu/packages/editors.scm97
-rw-r--r--nongnu/packages/electron.scm83
-rw-r--r--nongnu/packages/emacs.scm51
-rw-r--r--nongnu/packages/emulators.scm17
-rw-r--r--nongnu/packages/engineering.scm73
-rw-r--r--nongnu/packages/firmware.scm306
-rw-r--r--nongnu/packages/fonts.scm185
-rw-r--r--nongnu/packages/game-client.scm343
-rw-r--r--nongnu/packages/game-development.scm17
-rw-r--r--nongnu/packages/gog.scm19
-rw-r--r--nongnu/packages/k8s.scm217
-rw-r--r--nongnu/packages/linux.scm630
-rw-r--r--nongnu/packages/lisp.scm71
-rw-r--r--nongnu/packages/messaging.scm407
-rw-r--r--nongnu/packages/mozilla.scm614
-rw-r--r--nongnu/packages/music.scm103
-rw-r--r--nongnu/packages/ncurses.scm314
-rw-r--r--nongnu/packages/nvidia.scm923
-rw-r--r--nongnu/packages/patches/broadcom-sta-debian-fix-kernel-warnings.patch161
-rw-r--r--nongnu/packages/patches/broadcom-sta-fix_mac_profile_discrepancy.patch16
-rw-r--r--nongnu/packages/patches/broadcom-sta-gcc.patch11
-rw-r--r--nongnu/packages/patches/broadcom-sta-license.patch13
-rw-r--r--nongnu/packages/patches/broadcom-sta-linux-4.11.patch52
-rw-r--r--nongnu/packages/patches/broadcom-sta-linux-4.12.patch68
-rw-r--r--nongnu/packages/patches/broadcom-sta-linux-4.15.patch47
-rw-r--r--nongnu/packages/patches/broadcom-sta-linux-4.7.patch109
-rw-r--r--nongnu/packages/patches/broadcom-sta-linux-4.8.patch64
-rw-r--r--nongnu/packages/patches/broadcom-sta-linux-5.1.patch32
-rw-r--r--nongnu/packages/patches/broadcom-sta-linux-5.10.patch211
-rw-r--r--nongnu/packages/patches/broadcom-sta-linux-5.6.patch87
-rw-r--r--nongnu/packages/patches/broadcom-sta-linux-5.9.patch12
-rw-r--r--nongnu/packages/patches/broadcom-sta-null-pointer-fix.patch27
-rw-r--r--nongnu/packages/patches/broadcom-sta-rdtscl.patch22
-rw-r--r--nongnu/packages/playonlinux.scm17
-rw-r--r--nongnu/packages/printers.scm294
-rw-r--r--nongnu/packages/productivity.scm107
-rw-r--r--nongnu/packages/radio.scm58
-rw-r--r--nongnu/packages/scanner.scm17
-rw-r--r--nongnu/packages/version-control.scm58
-rw-r--r--nongnu/packages/video.scm56
-rw-r--r--nongnu/packages/vpn.scm18
-rw-r--r--nongnu/packages/wasm.scm136
-rw-r--r--nongnu/packages/wine.scm41
-rw-r--r--nongnu/services/nvidia.scm56
-rw-r--r--nongnu/services/vpn.scm17
-rw-r--r--nongnu/system/install.scm14
-rw-r--r--nongnu/system/linux-initrd.scm39
-rw-r--r--nonguix/build-system/binary.scm17
-rw-r--r--nonguix/build-system/chromium-binary.scm209
-rw-r--r--nonguix/build/binary-build-system.scm51
-rw-r--r--nonguix/build/chromium-binary-build-system.scm75
-rw-r--r--nonguix/build/utils.scm42
-rw-r--r--nonguix/download.scm14
-rw-r--r--nonguix/licenses.scm14
-rw-r--r--nonguix/modules.scm14
-rw-r--r--nonguix/multiarch-container.scm (renamed from nongnu/packages/steam-client.scm)484
-rw-r--r--nonguix/utils.scm18
75 files changed, 4831 insertions, 3235 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index e0716f9..4ab3cc8 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -1,3 +1,5 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
;; Per-directory local variables for GNU Emacs 23 and later.
((nil
@@ -8,11 +10,17 @@
;; For use with 'bug-reference-prog-mode'.
(bug-reference-url-format . "https://gitlab.com/nonguix/nonguix/issues/%s")
(bug-reference-bug-regexp
- . "#[0-9]+")))
+ . "\\(#\\([0-9]+\\)\\)")
+
+ (geiser-insert-actual-lambda . nil)))
(c-mode . ((c-file-style . "gnu")))
(scheme-mode
.
- ((indent-tabs-mode . nil)
+ ;; Note this next setting will use the current guix as the geiser binary;
+ ;; one working with a local guix checkout may want something different.
+ ((geiser-guile-binary . ("guix" "repl"))
+
+ (indent-tabs-mode . nil)
(eval . (put 'eval-when 'scheme-indent-function 1))
(eval . (put 'call-with-prompt 'scheme-indent-function 1))
(eval . (put 'test-assert 'scheme-indent-function 1))
diff --git a/.guix-authorizations b/.guix-authorizations
index 39e9bdd..2103b65 100644
--- a/.guix-authorizations
+++ b/.guix-authorizations
@@ -1,3 +1,4 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;; This is the list of OpenPGP keys currently authorized to sign commits in
;; this repository.
diff --git a/.guix-channel b/.guix-channel
index 73787dc..cfa33b0 100644
--- a/.guix-channel
+++ b/.guix-channel
@@ -1,3 +1,4 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;; -*- mode: scheme; -*-
(channel
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..724ca08
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,21 @@
+ -*- org -*-
+# SPDX-License-Identifier: CC0-1.0
+# Copyright © 2022-2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+# Copyright © 2023 John Kehayias <john.kehayias@protonmail.com>
+#+TITLE: NEWS about user visible changes of nonguix
+
+* Unreleased
+*** New `chromium-binary-build-system`
+
+* Changes in 1.4.0 (since 2022-05-21 (Guix 1.3.0))
+** Distribution
+*** Nvidia driver now available as service
+*** Enable WebAssembly sandboxed libraries in firefox
+*** Update binary build system to return a monadic procedure
+** New services
+nvidia
+** package updates including:
+firefox 108.0.1, firefox-esr 102.6.0esr, linux 6.0.12, nvidia-driver 515.76
+steam 1.0.0.75
+*** steam updates
+Steam now supports Proton versions 5.13 and newer, including support for SteamVR.
diff --git a/README.org b/README.org
index dc13104..2f5e0a8 100644
--- a/README.org
+++ b/README.org
@@ -94,8 +94,11 @@ your configuration.
** Installation image
For some hardware the official Guix installation image won't do
-(e.g. unsupported wifi). You can generate an installation image running the
-nonfree Linux kernel and nonfree firmware with the following command:
+(e.g. unsupported wifi). You can find a pre-generated installation image
+(time and version in line with upstream Guix), running the nonfree Linux
+kernel and nonfree firmware, on the [[https://gitlab.com/nonguix/nonguix/-/releases][Releases page]]. Or, you can generate an
+installation image from a local checkout of this repository, at a more recent
+commit, with the following command:
#+begin_src sh
guix system image --image-type=iso9660 /path/to/this/channel/nongnu/system/install.scm
@@ -173,18 +176,19 @@ is exactly equivalent to:
rest)))
#+END_SRC
-** Broadcom Wireless
+** Broadcom
+
+*** Wireless
Some Broadcom wireless hardware requires a proprietary kernel module in
addition to firmware. To use such hardware you will also need to add a service
-to load that module on boot, blacklist conflicting kernel modules, and while not
-required, it is recommended to stay with Linux LTS releases:
+to load that module on boot and blacklist conflicting kernel modules:
#+BEGIN_SRC scheme
(use-modules (nongnu packages linux))
(operating-system
- (kernel linux-lts)
+ (kernel linux)
;; Blacklist conflicting kernel modules.
(kernel-arguments '("modprobe.blacklist=b43,b43legacy,ssb,bcm43xx,brcm80211,brcmfmac,brcmsmac,bcma"))
(kernel-loadable-modules (list broadcom-sta))
@@ -193,6 +197,29 @@ required, it is recommended to stay with Linux LTS releases:
...)
#+END_SRC
+*** Webcam
+
+Like Broadcom wireless hardware, the Broadcom 1570 PCIe webcam (better known as
+FacetimeHD and found in recent Macbooks) also requires a kernel module,
+firmware, and blacklisting of conflicting modules:
+
+#+BEGIN_SRC scheme
+ (use-modules (nongnu packages linux))
+ (use-modules (nongnu packages firmware))
+
+ (operating-system
+ (kernel-arguments '("modprobe.blacklist=bdc_pci"))
+ (kernel-loadable-modules (list facetimehd))
+ (firmware (cons* facetimehd-firmware
+ facetimehd-calibration ; Optional but make the colors look better.
+ %base-firmware))
+ (services
+ (cons* (simple-service 'facetimehd
+ kernel-module-loader-service-type
+ '("facetimehd"))
+ ...))
+ ...)
+#+END_SRC
** Substitutes for nonguix
A Nonguix substitute server is available at [[https://substitutes.nonguix.org]].
diff --git a/news.txt b/news.txt
index eac4cae..d294861 100644
--- a/news.txt
+++ b/news.txt
@@ -1,4 +1,6 @@
;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2023 Wolf <wolf@wolfsden.cz>
;;
;; Copying and distribution of this file, with or without modification, are
;; permitted in any medium without royalty provided the copyright notice and
@@ -7,6 +9,58 @@
(channel-news
(version 0)
+ (entry (commit "8078757b887a7691644b119913c3f7b41661775d")
+ (title
+ (en "New @code{GUIX_SANDBOX_EXTRA_SHARES} variable for nonguix containers (Steam)"))
+ (body
+ (en "The nonguix container has a new environment variable
+@code{GUIX_SANDBOX_EXTRA_SHARES} which is a @code{:} delimited list of
+directories to share with the container. These directories will be available
+at the same path as the host. For instance, you can set this to another drive
+you want to have a Steam library in by either setting this variable in your
+environment or launching Steam with:
+
+@example
+GUIX_SANDBOX_EXTRA_SHARES=/some/other/drive steam
+@end example
+
+This should allow you to select @code{/some/other/drive} in Steam for a game
+library. This is an experimental feature and just provides a basic way to add
+shares to the container, so please test and report any difficulties or
+suggestions to improve.")))
+
+ (entry (commit "1591c3d1d10b2884da29ab7d1252304f2ce1514b")
+ (title
+ (en "(nongnu packages steam-client) module renamed"))
+ (body
+ (en "The (nongnu packages steam-client) module has been renamed to (nongnu packages
+game-client). This is to better reflect the contents with the addition of the
+Heroic client in a following commit.")))
+
+ (entry (commit "9456c59cfa580399ab450ca0057321e2d81f3319")
+ (title
+ (en "Linux LTS kernel updated to 6.1")
+ (de "Linux LTS Kernel wird auf 6.1 aktualisiert"))
+ (body
+ (en "The default version of the @code{linux-lts} kernel has been
+ updated to the 6.1 longterm release series.")
+ (de "Der standardmäßig verwendete @code{linux-lts}-Kernel basiert
+ jetzt auf der 6.1-Versionsreihe (Langzeitunterstützung).")))
+
+ (entry (commit "7d4c49eace0d3f074aa34ebbbf880236b6b0fab1")
+ (title
+ (en "Nvidia driver configuration refactored")
+ (de "Nvidia Treiberkonfiguration überarbeitet"))
+ (body
+ (en "The configuration of the Nvidia driver was completly over-worked.
+In the system definition @code{nvidia-driver} needs to be replaced by
+@code{nvidia-module} in the @code{kernel-loadable-module} list. Further add
+the service @code{nvidia-service-type}.")
+ (de "Die Konfiguration der Nvidia Treiber wurde komplett überarbeitet.
+Dazu muss in der Systemkonfiguration @code{nvidia-driver} mit @code{nvidia-module}
+in der @code{kernel-loadable-module} Liste ersetzt werden. Sowie der Dienst
+@code{nvidia-service-type} hinzugefügt werden.")))
+
(entry (commit "1ac29b33f3ca19134fcbedd6dc22deb45c15229f")
(title (en "Nonguix authenticated updates"))
(body
diff --git a/nongnu/ci.scm b/nongnu/ci.scm
index a4e2c72..db9e68a 100644
--- a/nongnu/ci.scm
+++ b/nongnu/ci.scm
@@ -1,17 +1,5 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2021 Mathieu Othacehe <m.othacehe@gmail.com>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
(define-module (nongnu ci)
#:use-module (gnu ci)
diff --git a/nongnu/packages/anydesk.scm b/nongnu/packages/anydesk.scm
index 5ba0c7c..27b6a48 100644
--- a/nongnu/packages/anydesk.scm
+++ b/nongnu/packages/anydesk.scm
@@ -1,21 +1,6 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2021 Korytov Pavel <thexcloud@gmail.com>
;;; Copyright © 2021 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;;
-;;; This file is not 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 (nongnu packages anydesk)
#:use-module (gnu packages compression)
@@ -36,14 +21,14 @@
(define-public anydesk
(package
(name "anydesk")
- (version "6.1.1")
+ (version "6.3.0")
(source (origin
(method url-fetch)
(uri (string-append "https://download.anydesk.com/linux/anydesk-"
version "-amd64.tar.gz"))
(sha256
(base32
- "1ai58fsivb8al1279bayl800qavy0kfj40rjhf87g902ap3p4bhh"))))
+ "0lp4zvbdriwbzfnvblbbpzxsrs0l425rha9qjs9sy6ff6myk7qxi"))))
(build-system binary-build-system)
(arguments
`(#:validate-runpath? #f
diff --git a/nongnu/packages/benchmark.scm b/nongnu/packages/benchmark.scm
new file mode 100644
index 0000000..feb2c7d
--- /dev/null
+++ b/nongnu/packages/benchmark.scm
@@ -0,0 +1,43 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2021-2022 Petr Hodina <phodina@protonmail.com>
+
+(define-module (nongnu packages benchmark)
+ #:use-module (guix packages)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages gcc)
+ #:use-module (guix gexp)
+ #:use-module (guix download)
+ #:use-module (nonguix build-system binary)
+ #:use-module ((nonguix licenses) #:prefix license:))
+
+(define-public geekbench5
+ (package
+ (name "geekbench5")
+ (version "5.4.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://cdn.geekbench.com/Geekbench-"
+ version "-Linux.tar.gz"))
+ (sha256
+ (base32
+ "0qppx5ivclfwldb4fcmzg3v9a9nzi7d4f44vx634mfzw2symn3r4"))))
+ (build-system binary-build-system)
+ (arguments
+ (list #:strip-binaries? #f ;TODO: For some reason it fails validate-runpath
+ #:install-plan #~'(("geekbench5" "bin/")
+ ("geekbench.plar" "bin/")
+ ("geekbench_x86_64" "bin/"))
+ #:patchelf-plan #~(list (list "geekbench5"
+ '("glibc" "gcc:lib"))
+ (list "geekbench_x86_64"
+ '("glibc" "gcc:lib")))))
+ (supported-systems '("x86_64-linux"))
+ (inputs `(("gcc:lib" ,gcc "lib")
+ ("glibc" ,glibc)))
+ (synopsis "Benchmark that measures processor and memory performance")
+ (description
+ "This package provides benchmark that measures processor and memory
+performance and uploads the results into online database.")
+ (home-page "https://www.geekbench.com/")
+ (license (license:nonfree
+ "https://www.primatelabs.com/legal/terms-of-use.html"))))
diff --git a/nongnu/packages/cad.scm b/nongnu/packages/cad.scm
index c896a5f..c17bb35 100644
--- a/nongnu/packages/cad.scm
+++ b/nongnu/packages/cad.scm
@@ -1,17 +1,5 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2021-2022 Petr Hodina <phodina@protonmail.com>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
(define-module (nongnu packages cad)
#:use-module (guix packages)
diff --git a/nongnu/packages/chrome.scm b/nongnu/packages/chrome.scm
new file mode 100644
index 0000000..67a061b
--- /dev/null
+++ b/nongnu/packages/chrome.scm
@@ -0,0 +1,152 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2022, 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2022 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+
+(define-module (nongnu packages chrome)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages fonts)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages pciutils)
+ #:use-module (gnu packages photo)
+ #:use-module (gnu packages qt)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages wget)
+ #:use-module (gnu packages xiph)
+ #:use-module (gnu packages xorg)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix build-system gnu)
+ #:use-module (nonguix build-system chromium-binary)
+ #:use-module (nonguix licenses)
+ #:use-module (ice-9 string-fun))
+
+(define-public (make-google-chrome repo version hash)
+ (let* ((name (string-append "google-chrome-" repo))
+ (appname (if (string=? repo "stable")
+ "chrome"
+ (string-replace-substring name "google-" ""))))
+ (package
+ (name name)
+ (version version)
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "https://dl.google.com/linux/chrome/deb/pool/main/g/"
+ name "/" name "_" version "-1_amd64.deb"))
+ (sha256
+ (base32 hash))))
+ (build-system chromium-binary-build-system)
+ (arguments
+ (list
+ ;; almost 300MB, faster to download and build from Google servers
+ #:substitutable? #f
+ #:wrapper-plan
+ #~(let ((path (string-append "opt/google/" #$appname "/")))
+ (map (lambda (file)
+ (string-append path file))
+ '("chrome"
+ "chrome-sandbox"
+ "chrome_crashpad_handler"
+ "libEGL.so"
+ "libGLESv2.so"
+ "liboptimization_guide_internal.so"
+ "libqt5_shim.so"
+ "libqt6_shim.so"
+ "libvk_swiftshader.so"
+ "libvulkan.so.1"
+ "WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so")))
+ #:install-plan
+ #~'(("opt/" "/share")
+ ("usr/share/" "/share"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'install 'patch-assets
+ ;; Many thanks to
+ ;; https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/browsers/google-chrome/default.nix
+ (lambda _
+ (let* ((bin (string-append #$output "/bin"))
+ (share (string-append #$output "/share"))
+ (opt "./opt")
+ (usr/share "./usr/share")
+ (old-exe (string-append "/opt/google/" #$appname "/google-" #$appname))
+ (exe (string-append bin "/google-" #$appname)))
+ ;; This allows us to override CHROME_WRAPPER later.
+ (substitute* (string-append opt "/google/" #$appname "/google-" #$appname)
+ (("CHROME_WRAPPER") "WRAPPER"))
+ (substitute* (string-append usr/share "/applications/google-" #$appname ".desktop")
+ (("^Exec=.*") (string-append "Exec=" exe "\n")))
+ (substitute* (string-append usr/share "/gnome-control-center/default-apps/google-" #$appname ".xml")
+ ((old-exe) exe))
+ (substitute* (string-append usr/share "/menu/google-" #$appname ".menu")
+ (("/opt") share)
+ ((old-exe) exe)))))
+ (add-after 'install 'install-icons
+ (lambda _
+ (define (format-icon-size name)
+ (car
+ (string-split
+ (string-drop-right (string-drop name 13) 4)
+ #\_)))
+ (let ((icons (string-append #$output "/share/icons/hicolor"))
+ (share (string-append #$output "/share/google/" #$appname)))
+ (for-each (lambda (icon)
+ (let* ((icon-name (basename icon))
+ (icon-size (format-icon-size icon-name))
+ (target (string-append icons "/" icon-size "x" icon-size "/apps/google-" #$appname ".png")))
+ (mkdir-p (dirname target))
+ (rename-file icon target)))
+ (find-files share "product_logo_.*\\.png")))))
+ (add-before 'install-wrapper 'install-exe
+ (lambda _
+ (let* ((bin (string-append #$output "/bin"))
+ (exe (string-append bin "/google-" #$appname))
+ (share (string-append #$output "/share"))
+ (chrome-target (string-append share "/google/" #$appname "/google-" #$appname)))
+ (mkdir-p bin)
+ (symlink chrome-target exe)
+ (wrap-program exe
+ '("CHROME_WRAPPER" = (#$appname)))))))))
+ (inputs
+ (list bzip2
+ curl
+ flac
+ font-liberation
+ gdk-pixbuf
+ harfbuzz
+ libexif
+ libglvnd
+ libpng
+ libva
+ libxscrnsaver
+ opus
+ pciutils
+ pipewire
+ qtbase-5
+ qtbase
+ snappy
+ util-linux
+ xdg-utils
+ wget))
+ (synopsis "Freeware web browser")
+ (supported-systems '("x86_64-linux"))
+ (description "Google Chrome is a cross-platform web browser developed by Google.")
+ (home-page "https://www.google.com/chrome/")
+ (license (nonfree "https://www.google.com/intl/en/chrome/terms/")))))
+
+(define-public google-chrome-stable
+ (make-google-chrome "stable" "121.0.6167.139" "1b08wqflp1j5yqpw2g9z2s239gs8bzqbxigcxk93aqwf5c21ijkh"))
+
+(define-public google-chrome-beta
+ (make-google-chrome "beta" "122.0.6261.6" "1b12bjcg99f6bjfhm311hdx9s1a4i13mcgxbvf1gpzq8989c1g96"))
+
+(define-public google-chrome-unstable
+ (make-google-chrome "unstable" "123.0.6262.5" "04mf9nysdn77371fxa3z0wbvy2k09vw49s3lrcynlwgiwrz89a3m"))
diff --git a/nongnu/packages/chromium.scm b/nongnu/packages/chromium.scm
index 56d0c6e..4467714 100644
--- a/nongnu/packages/chromium.scm
+++ b/nongnu/packages/chromium.scm
@@ -1,20 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022 Pierre Neidhardt <mail@ambrevar.xyz>
-;;;
-;;; This file is not 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 (nongnu packages chromium)
#:use-module ((guix licenses) #:prefix license:)
@@ -41,15 +26,15 @@
#:use-module (srfi srfi-1))
(define-public chromium-embedded-framework
- (let ((git-revision "d0bbcbb")
- (chromium-version "103.0.5060.114")
+ (let ((git-revision "5053a95")
+ (chromium-version "117.0.5938.150")
(arch (match (or (%current-target-system) (%current-system))
("aarch64-linux" "linuxarm64")
("armhf-linux" "linuxarm")
(_ "linux64"))))
(package
(name "chromium-embedded-framework")
- (version "103.0.9")
+ (version "117.2.4")
(source (origin
(method url-fetch)
(uri (string-append
@@ -60,7 +45,7 @@
"_" arch "_minimal.tar.bz2"))
(sha256
(base32
- "143x0jmasl4z16bkxlrbz874chd9x9xpc5qylb9h7j80gfcrzlsi"))))
+ "0vzzwq1k6bv9d209yg3samvfnfwj7s58y9r3p3pd98wxa9iyzf4j"))))
(build-system binary-build-system)
(arguments
`(#:patchelf-plan
diff --git a/nongnu/packages/clojure.scm b/nongnu/packages/clojure.scm
index 0f59e72..234fafd 100644
--- a/nongnu/packages/clojure.scm
+++ b/nongnu/packages/clojure.scm
@@ -1,22 +1,8 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (nongnu packages clojure)
#:use-module (gnu packages compression)
@@ -26,6 +12,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (nonguix build-system binary)
@@ -35,15 +22,14 @@
(define leiningen-jar
(package
(name "leiningen-jar")
- (version "2.9.8")
+ (version "2.10.0")
(source (origin
(method url-fetch)
- (uri (string-append "https://github.com/technomancy/leiningen/releases/download/"
- version "/leiningen-" version "-standalone.jar"))
+ (uri "https://codeberg.org/attachments/43cebda5-a7c2-405b-b641-5143a00051b5")
(file-name "leiningen-standalone.jar")
(sha256
(base32
- "13f4n15i0gsk9jq52gxivnsk32qjahmxgrddm54cf8ynw0a923ia"))))
+ "0d5vmpyp9ddxpj1s5c60fv2f5iimz1chbgfhchlaqxa0sfx9jwnj"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
@@ -65,16 +51,16 @@ lets you focus on your code.")
(package
(inherit leiningen-jar)
(name "leiningen")
- (version "2.9.8")
+ (version "2.10.0")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/technomancy/leiningen.git")
+ (url "https://codeberg.org/leiningen/leiningen.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "1i6pn8vzzhgnm9hmlb92z65l79nxcxa5zdsrgg5svq7vmbixgnhl"))))
+ "0xvniav6iy1yrbamvbg8i3dq8issiczv3rbig2yc3nm08d2q0rig"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f
@@ -101,7 +87,7 @@ lets you focus on your code.")
(define-public clj-kondo
(package
(name "clj-kondo")
- (version "2022.06.22")
+ (version "2023.10.20")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append
@@ -109,23 +95,20 @@ lets you focus on your code.")
version "/clj-kondo-" version "-linux-amd64.zip"))
(sha256
(base32
- "057h48kf14pdnnyvgmbqkga1bspbr4ag22q2279s14c2c9bcinzz"))))
+ "1zb4bkmhv5mh18z8h82qa1a0m95pd5dwdxg31pqgs6lnlca3vsph"))))
(build-system binary-build-system)
(arguments
- `(#:patchelf-plan
- '(("clj-kondo" ("gcc:lib" "zlib")))
- #:install-plan
- '(("clj-kondo" "/bin/"))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'chmod
- (lambda _
- (chmod "clj-kondo" #o755))))))
+ (list #:patchelf-plan `'(("clj-kondo" ("gcc" "zlib")))
+ #:install-plan `'(("clj-kondo" "/bin/"))
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'chmod
+ (lambda _
+ (chmod "clj-kondo" #o755))))))
(native-inputs
- `(("unzip" ,unzip)))
+ (list unzip))
(inputs
- `(("gcc:lib" ,gcc "lib")
- ("zlib" ,zlib)))
+ (list `(,gcc "lib")
+ zlib))
(supported-systems '("x86_64-linux"))
(home-page "https://github.com/clj-kondo/clj-kondo")
(synopsis "Linter for Clojure code")
diff --git a/nongnu/packages/compression.scm b/nongnu/packages/compression.scm
index 60b1352..bb0ae88 100644
--- a/nongnu/packages/compression.scm
+++ b/nongnu/packages/compression.scm
@@ -1,20 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
-;;;
-;;; This file is not 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 (nongnu packages compression)
#:use-module (guix packages)
@@ -25,14 +10,14 @@
(define-public unrar
(package
(name "unrar")
- (version "6.0.2")
+ (version "6.2.2")
(source (origin
(method url-fetch)
(uri (string-append "https://www.rarlab.com/rar/unrarsrc-"
version ".tar.gz"))
(sha256
(base32
- "1lzdsfb4d00silyk04lkvaklmxaiyqksyxx4h1krg77q6f1iigw1"))))
+ "1mbw20lh300r541dz4m84rvq7b542mnb70yc29afrjj6waknqza7"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; No tests.
diff --git a/nongnu/packages/coq.scm b/nongnu/packages/coq.scm
index e95e00b..e8c9137 100644
--- a/nongnu/packages/coq.scm
+++ b/nongnu/packages/coq.scm
@@ -1,22 +1,7 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2021 Isaac Young <isyoung@pm.me>
;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;;
-;;; This file is not 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 (nongnu packages coq)
#:use-module (ice-9 match)
@@ -30,7 +15,7 @@
(define-public compcert
(package
(name "compcert")
- (version "3.11")
+ (version "3.12")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -39,11 +24,15 @@
(file-name (git-file-name name version))
(sha256
(base32
- "183b1fn7vhb9ykxax11x0bb2q6z5jnd874nzlxqnnm89j3ysr134"))))
+ "0pcrkz1as37iz2wcp8j226fjn672lrj0cip2s0wpkiy097qi0yc5"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
+ (add-before 'configure 'allow-newer-coq-version
+ (lambda _
+ (substitute* "configure"
+ (("8.15.2") "8.16.1"))))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((system ,(match (or (%current-target-system) (%current-system))
diff --git a/nongnu/packages/databases.scm b/nongnu/packages/databases.scm
new file mode 100644
index 0000000..96edcd9
--- /dev/null
+++ b/nongnu/packages/databases.scm
@@ -0,0 +1,45 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2023 Krzysztof Baranowski <pharcosyle@gmail.com>
+
+(define-module (nongnu packages databases)
+ #:use-module (guix build-system copy)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (gnu packages compression)
+ #:use-module ((guix licenses) #:prefix license:))
+
+(define-public datomic-cli-tools
+ (package
+ (name "datomic-cli-tools")
+ (version "1.0.91")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://datomic-releases-1fc2183a.s3.amazonaws.com"
+ "/tools/datomic-cli/datomic-cli-" version ".zip"))
+ (sha256
+ (base32
+ "1xicmbsig8f1p5r9rxkhndi0f9l9w421zf49rbx44yc6v0db523b"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:install-plan
+ '(("." "bin" #:include-regexp ("^\\./datomic"))
+ ("README.txt" "share/doc/datomic/"))
+ #:phases
+ ,#~(modify-phases %standard-phases
+ (add-after 'install 'make-scripts-executable
+ (lambda _
+ (for-each (lambda (f) (chmod f #o555))
+ (find-files (string-append #$output "/bin"))))))))
+ (native-inputs
+ (list unzip))
+ (home-page "https://docs.datomic.com/cloud/index.html")
+ (synopsis "Command-line tools for Datomic Cloud")
+ (description "View and Manage analytics, logs, and access control gateways
+for a Datomic Cloud instance on AWS.")
+ (license license:asl2.0)
+ (properties
+ `((release-monitoring-url
+ . "https://docs.datomic.com/cloud/releases.html")
+ (upstream-name . "datomic-cli")))))
diff --git a/nongnu/packages/dotnet.scm b/nongnu/packages/dotnet.scm
index bdf4111..a45a1ca 100644
--- a/nongnu/packages/dotnet.scm
+++ b/nongnu/packages/dotnet.scm
@@ -1,20 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2021 Jelle Licht <jlicht@fsfe.org>
-;;;
-;;; This file is not 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 (nongnu packages dotnet)
#:use-module (ice-9 match)
@@ -82,20 +67,20 @@ various IDEs and plugins.")
(license license:expat)))
(define-public dotnet
- (let ((dotnet-sdk-version "6.0.5"))
+ (let ((dotnet-sdk-version "6.0.9"))
(package
(name "dotnet")
- (version "6.0.300")
+ (version "6.0.401")
(source
(origin
(method url-fetch/tarbomb)
(uri
- (string-append "https://dotnetcli.azureedge.net/dotnet/Sdk/"
- version "/dotnet-sdk-"
- version "-linux-x64.tar.gz"))
+ (string-append "https://download.visualstudio.microsoft.com/download/pr/8159607a-e686-4ead-ac99-b4c97290a5fd/ec6070b1b2cc0651ebe57cf1bd411315/dotnet-sdk-"
+ version
+ "-linux-x64.tar.gz"))
(sha256
(base32
- "01bhd7amirchcvimbyv07bzvs6i7jydcfwlq9vyfjbf3ln88qk0x"))))
+ "05yr64ffcaf48ripxzcv9nwlzp7r83cy9hz17dm5c0317lhksqch"))))
(build-system binary-build-system)
(arguments
`(#:patchelf-plan
@@ -295,7 +280,7 @@ building different types of applications.")
("mit-krb5" ,mit-krb5)
("openssl" ,openssl)
("zlib" ,zlib)))
- (home-page "https://docs.microsoft.com/en-us/dotnet/")
+ (home-page "https://dotnet.microsoft.com/en-us/")
(supported-systems '("x86_64-linux"))
(synopsis "Binary build of the @code{.NET} SDK and runtime")
(description "@code{.NET} is a cross-platform developer platform for
diff --git a/nongnu/packages/dyalog.scm b/nongnu/packages/dyalog.scm
new file mode 100644
index 0000000..7408b68
--- /dev/null
+++ b/nongnu/packages/dyalog.scm
@@ -0,0 +1,222 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2022 B. Wilson <x@wilsonb.com>
+
+(define-module (nongnu packages dyalog)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages bootstrap)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages databases)
+ #:use-module (gnu packages elf)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages icu4c)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages nss)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu packages xml)
+ #:use-module (guix build utils)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (guix records)
+ #:use-module (guix utils)
+ #:use-module (ice-9 regex)
+ #:use-module (ice-9 match)
+ #:use-module (nongnu packages dotnet)
+ #:use-module (nongnu packages ncurses)
+ #:use-module ((nonguix licenses) #:prefix license:))
+
+(define-public dyalog-apl
+ (package
+ (name "dyalog-apl")
+ (version "18.2.45405")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://www.dyalog.com/uploads/php/download.dyalog.com/"
+ "download.php?file=" (version-major+minor version)
+ "/linux_64_" version "_unicode.x86_64.deb"))
+ (sha256
+ (base32 "0qx6z4n9p0dfrk0wwh66s8z8m91cq4inwan8w03gqqis60cxc3x4"))))
+ (build-system gnu-build-system)
+ (outputs '("out" "fonts"))
+ (inputs (list alsa-lib
+ at-spi2-atk
+ at-spi2-core
+ atk
+ cups
+ dbus
+ dotnet-core-3.1
+ fontconfig
+ expat
+ (list gcc "lib")
+ glib
+ glibc
+ gtk+-2
+ icu4c
+ libx11
+ libxcb
+ libxcomposite
+ libxcursor
+ libxdamage
+ libxext
+ libxfixes
+ libxi
+ libxrender
+ libxscrnsaver
+ libxtst
+ libxrandr
+ ncurses/tinfo-5
+ nspr
+ nss
+ pango
+ unixodbc))
+ (native-inputs (list binutils bzip2 patchelf tar))
+ (arguments
+ `(#:modules (((guix build gremlin) #:select (file-runpath))
+ ((guix elf) #:select (elf-segments parse-elf PT_INTERP))
+ ((ice-9 binary-ports) #:select (get-bytevector-n))
+ ((srfi srfi-1) #:select (last))
+ ,@%gnu-build-system-modules)
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'unpack
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((source (assoc-ref inputs "source")))
+ (invoke "ar" "x" source)
+ (invoke "tar" "-xzvf" "data.tar.gz"))))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib/dyalog"))
+ (in (string-append "opt/mdyalog/"
+ ,(version-major+minor version)
+ "/64/unicode/")))
+ (substitute* (string-append in "mapl")
+ (("\"\\$\\{DYALOG\\}/dyalog\"" dyalog)
+ (string-append "exec -a dyalog " dyalog)))
+ (substitute* (string-append in "scriptbin/dyalogscript")
+ (("^INSTALLDIR=.*") (format #f "INSTALLDIR=\"~a\"~%" lib))))))
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (fonts (assoc-ref outputs "fonts"))
+ (lib (string-append out "/lib/dyalog"))
+ (bin (string-append out "/bin"))
+ (truetype (string-append fonts "/share/fonts/truetype"))
+ (dotnet (assoc-ref inputs "dotnet"))
+ (dotnet-root (string-append dotnet "/share/dotnet"))
+ (icu4c (assoc-ref inputs "icu4c"))
+ (icu4c-lib (string-append icu4c "/lib"))
+ (in (string-append "opt/mdyalog/"
+ ,(version-major+minor version)
+ "/64/unicode/")))
+ (mkdir-p lib)
+ (copy-recursively in lib)
+ (delete-file-recursively (string-append lib "/fonts"))
+
+ (mkdir-p truetype)
+ (install-file (string-append in "/fonts/Apl385.ttf") truetype)
+ (install-file (string-append in "/fonts/APL333.ttf") truetype)
+
+ (mkdir-p bin)
+ (symlink (string-append lib "/mapl")
+ (string-append bin "/dyalog"))
+ (symlink (string-append lib "/scriptbin/dyalogscript")
+ (string-append bin "/dyalogscript"))
+ (wrap-program (string-append lib "/dyalog")
+ `("DOTNET_ROOT" = (,dotnet-root))
+ `("LD_LIBRARY_PATH" ":" suffix (,icu4c-lib)))
+ #t)))
+ (add-after 'install 'patch-elf-files
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib/dyalog"))
+ (glibc (assoc-ref inputs "glibc"))
+ (ld.so (string-append glibc ,(glibc-dynamic-linker)))
+ (rpath (pk (string-join
+ (cons* lib
+ (string-append lib "/lib")
+ (string-append (assoc-ref inputs "nss")
+ "/lib/nss")
+ (map (lambda (pkg)
+ (string-append (assoc-ref inputs pkg)
+ "/lib"))
+ '("alsa-lib"
+ "at-spi2-atk"
+ "at-spi2-core"
+ "atk"
+ "cups"
+ "dbus"
+ "expat"
+ "fontconfig-minimal"
+ "gcc"
+ "glib"
+ "glibc"
+ "gtk+"
+ "libx11"
+ "libxcb"
+ "libxcomposite"
+ "libxcursor"
+ "libxdamage"
+ "libxext"
+ "libxfixes"
+ "libxi"
+ "libxrender"
+ "libxscrnsaver"
+ "libxtst"
+ "libxrandr"
+ "ncurses-with-tinfo"
+ "nspr"
+ "pango"
+ "unixodbc")))
+ ":")))
+ (elf-file?* (lambda (file stat) (elf-file? file))))
+
+ (define* (file-segments file #:key type)
+ (let* ((bv (call-with-input-file file
+ (lambda (port)
+ (get-bytevector-n port 4096))
+ #:binary #t #:guess-encoding #f))
+ (segments (elf-segments (parse-elf bv)))
+ (select? (lambda (elf)
+ (eq? (elf-segment-type elf) type))))
+ (if type
+ (filter select? segments)
+ segments)))
+
+ (define* (set-runpath file #:optional (runpath rpath))
+ (if (file-runpath file)
+ (begin
+ (format #f "Setting RUNPATH: ~a~&" file)
+ (invoke "patchelf" "--set-rpath" runpath file)
+ (invoke "patchelf" "--shrink-rpath" file))))
+
+ (define* (set-interpreter file #:optional (interp ld.so))
+ (if (not (null? (file-segments file #:type PT_INTERP)))
+ (begin
+ (format #f "Setting interpreter: ~a~%" file)
+ (invoke "patchelf" "--set-interpreter" interp file))))
+
+ (define (patch-elf file)
+ (begin
+ (set-runpath file)
+ (set-interpreter file)))
+
+ (for-each patch-elf (find-files out elf-file?*))
+ #t))))))
+ (home-page "https://www.dyalog.com/")
+ (synopsis "Dyalog APL interpreter and programming language environment")
+ (description "Dyalog APL is de facto the most widely deployed dialect of
+APL in the wild. The interpreter boasts world-class performance benchmarks,
+excellent tooling integration, and support for modern APL features.")
+ (license (license:nonfree
+ "https://www.dyalog.com/prices-and-licences.htm"))))
diff --git a/nongnu/packages/editors.scm b/nongnu/packages/editors.scm
new file mode 100644
index 0000000..d07bf1d
--- /dev/null
+++ b/nongnu/packages/editors.scm
@@ -0,0 +1,97 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+
+(define-module (nongnu packages editors)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages gtk)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) :prefix license:)
+ #:use-module (nonguix build-system chromium-binary)
+ #:use-module (ice-9 match))
+
+(define-public vscodium
+ (package
+ (name "vscodium")
+ (version "1.87.0.24060")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (let ((arch (match (or (%current-target-system) (%current-system))
+ ("aarch64-linux" "arm64")
+ ("armhf-linux" "armhf")
+ (_ "x64"))))
+ (string-append
+ "https://github.com/VSCodium/vscodium/releases/download/" version
+ "/VSCodium-linux-" arch "-" version ".tar.gz")))
+ (sha256
+ (base32 "1lw7j8h0i96mg8si8dmi55ldbz5j63zb93qf1g59siavx84f1zpd"))))
+ (build-system chromium-binary-build-system)
+ (arguments
+ (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
+ #:substitutable? #f
+ #:wrapper-plan
+ #~'("opt/vscodium/codium")
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda _
+ (mkdir-p "opt/vscodium")
+ (invoke "tar" "-xvf" #$source "-C" "opt/vscodium")))
+ (add-before 'install-wrapper 'install-entrypoint
+ (lambda _
+ (let* ((bin (string-append #$output "/bin")))
+ (delete-file (string-append #$output "/environment-variables"))
+ (mkdir-p bin)
+ (symlink (string-append #$output "/opt/vscodium/codium")
+ (string-append bin "/codium")))))
+ (add-after 'install-entrypoint 'install-resources
+ (lambda _
+ (let* ((icons
+ (string-append #$output
+ "/share/icons/hicolor/512x512/apps"))
+ (icon.png
+ (string-append #$output
+ "/opt/vscodium/resources/app/"
+ "resources/linux/code.png"))
+ (apps (string-append #$output "/share/applications")))
+ (mkdir-p icons)
+ (symlink icon.png
+ (string-append icons "/code.png"))
+ (mkdir-p apps)
+ (make-desktop-entry-file
+ (string-append apps "/" #$name ".desktop")
+ #:name "VSCodium"
+ #:generic-name "Text Editor"
+ #:exec (string-append #$output "/bin/codium")
+ #:icon "code"
+ #:type "Application"
+ #:actions '("new-empty-window")
+ #:keywords '("vscode")
+ #:categories '("TextEditor" "Development"
+ "IDE")
+ #:startup-notify #t
+ #:startup-w-m-class "Code"
+ #:comment
+ '(("en" "Code Editing. Redefined.")
+ (#f "Code Editing. Redefined."))))))
+ (add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
+ (lambda _
+ (wrap-program (string-append #$output "/bin/codium")
+ `("LD_LIBRARY_PATH" ":"
+ prefix
+ (,(string-join
+ (list (string-append #$output "/opt/vscodium"))
+ ":")))))))))
+ (supported-systems '("armhf-linux" "aarch64-linux" "x86_64-linux"))
+ (native-inputs
+ (list tar))
+ (inputs
+ (list gdk-pixbuf))
+ (home-page "https://vscodium.com/")
+ (synopsis "Community-driven, freely-licensed binary distribution of VSCode")
+ (description "VSCodium is a community-driven, freely-licensed binary
+distribution of Microsoft’s editor VSCode.")
+ (license license:expat)))
diff --git a/nongnu/packages/electron.scm b/nongnu/packages/electron.scm
new file mode 100644
index 0000000..4a3ac0d
--- /dev/null
+++ b/nongnu/packages/electron.scm
@@ -0,0 +1,83 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2023 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+
+(define-module (nongnu packages electron)
+ #:use-module (nonguix build-system chromium-binary)
+ #:use-module ((nonguix licenses) :prefix license:)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (ice-9 match)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages video))
+
+(define-public electron
+ (package
+ (name "electron")
+ (version "27.1.0")
+ (source (origin
+ (method url-fetch/zipbomb)
+ (uri
+ (string-append
+ "https://github.com/electron/electron/releases/download/v"
+ version "/electron-v" version "-"
+ (match (or (%current-system) (%current-target-system))
+ ("x86_64-linux" "linux-x64")
+ ("i686-linux" "linux-ia32")
+ ("aarch64-linux" "linux-arm64")
+ ("armhf-linux" "linux-armv7l"))
+ ".zip"))
+ (sha256 (base32 "08illknzcikzzsb6i7z1p2xgb20jjc5cx9hynll25f44q9pg48b6"))))
+ (build-system chromium-binary-build-system)
+ (arguments
+ `(#:wrapper-plan
+ `("electron"
+ "libffmpeg.so"
+ "libGLESv2.so"
+ "libEGL.so")
+ #:install-plan
+ `(("." "share/electron/" #:include
+ ("electron"
+ "chrome-sandbox"
+ "chrome_100_percent.pak"
+ "chrome_200_percent.pak"
+ "chrome_crashpad_handler"
+ "icudtl.dat"
+ "resources.pak"
+ "v8_context_snapshot.bin"
+ "version"
+ "libffmpeg.so"
+ ;; electron seems to force-load these from its directory.
+ "libEGL.so"
+ "libGLESv2.so"))
+ ("resources" "share/electron/")
+ ("locales" "share/electron/"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'install-wrapper 'wrap-where-patchelf-does-not-work
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/share/electron/electron"))
+ (wrapper (string-append out "/bin/electron")))
+ (mkdir-p (dirname wrapper))
+ (make-wrapper wrapper bin
+ `("LD_LIBRARY_PATH" ":"
+ prefix
+ (,(string-join
+ (list
+ (string-append out "/share/electron"))
+ ":")))))
+ #t)))))
+ (native-inputs `(("unzip" ,unzip)))
+ (inputs `(("gdk-pixbuf" ,gdk-pixbuf)
+ ("ffmpeg" ,ffmpeg)))
+ (home-page "https://www.electronjs.org/")
+ (synopsis "Cross platform desktop application shell")
+ (description "The Electron framework lets you write cross-platform desktop
+applications using JavaScript, HTML and CSS. It is based on Node.js and
+Chromium and is used by the Atom editor and many other apps.")
+ (license (license:nonfree
+ (string-append "https://github.com/electron/electron/blob/v"
+ version "/LICENSE")))))
diff --git a/nongnu/packages/emacs.scm b/nongnu/packages/emacs.scm
index 3d3b3eb..ee1616c 100644
--- a/nongnu/packages/emacs.scm
+++ b/nongnu/packages/emacs.scm
@@ -1,27 +1,17 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2022 Fredrik Salomonsson <plattfot@posteo.net>
+;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (nongnu packages emacs)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages emacs-xyz)
#:use-module (guix packages)
#:use-module (guix build-system emacs)
#:use-module (guix build-system copy)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (nonguix licenses)
#:use-module (nongnu packages lisp))
@@ -131,3 +121,32 @@ Then you can start Allegro CL by entering @code{M-x fi:common-lisp}.")
;; While this may be a free license, this Emacs package is only useful
;; with the non-free Allegro CL.
(license (nonfree "https://raw.githubusercontent.com/franzinc/eli/acl10.1express_Feb2022update2022-02-11/LICENSE")))))
+
+(define-public emacs-org-roam-ui
+ (let ((commit "c75fc7506ee7f03840a9a93ed9336d7ed24551aa")
+ (revision "0"))
+ (package
+ (name "emacs-org-roam-ui")
+ (version (git-version "0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/org-roam/org-roam-ui")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32 "0mkcd2622np8s5qz2zvx7lch6dc586xqmn6914gi4ym7nvklf3zy"))))
+ (build-system emacs-build-system)
+ (arguments
+ (list #:include #~(cons "^out" %default-include)))
+ (propagated-inputs
+ (list emacs-org-roam emacs-simple-httpd emacs-websocket))
+ (home-page "https://github.com/org-roam/org-roam-ui")
+ (synopsis "Web User Interface for Org Roam")
+ (description
+ "Org Roam UI is meant as a successor of Org Roam server that extends
+functionality of Org Roam with a web application that runs side-by-side with
+Emacs. It provides a web interface for navigating around notes created within
+Org Roam.")
+ (license license:gpl3))))
diff --git a/nongnu/packages/emulators.scm b/nongnu/packages/emulators.scm
index 0ec22c0..5dade3b 100644
--- a/nongnu/packages/emulators.scm
+++ b/nongnu/packages/emulators.scm
@@ -1,20 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
-;;;
-;;; This file is not 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 (nongnu packages emulators)
#:use-module (gnu packages backup)
diff --git a/nongnu/packages/engineering.scm b/nongnu/packages/engineering.scm
new file mode 100644
index 0000000..b05f6c0
--- /dev/null
+++ b/nongnu/packages/engineering.scm
@@ -0,0 +1,73 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2022 Demis Balbach <db@minikn.xyz>
+;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+
+(define-module (nongnu packages engineering)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages xorg)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module ((guix licenses) :prefix license:)
+ #:use-module (nonguix build-system chromium-binary)
+ #:use-module ((nonguix licenses) :prefix license:)
+ #:use-module (ice-9 match))
+
+(define-public lycheeslicer
+ (package
+ (name "lycheeslicer")
+ (version "4.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "https://mango-lychee.nyc3.cdn.digitaloceanspaces.com/LycheeSlicer-" version ".deb"))
+ (sha256
+ (base32 "1rv3f8d1sb5irn4y8hjzk2m7c9irw71ls8p1mqambxg79q9ffj9m"))))
+ (supported-systems '("x86_64-linux"))
+ (build-system chromium-binary-build-system)
+ (arguments
+ (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
+ #:wrapper-plan
+ #~'("lib/LycheeSlicer/lycheeslicer")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'binary-unpack 'setup-cwd
+ (lambda _
+ ;; Use the more standard lib directory for everything.
+ (rename-file "opt/" "lib")
+ (mkdir-p "share")
+ (copy-recursively "usr/share" "share")
+ ;; Remove unneeded files.
+ (delete-file-recursively "usr")))
+ (add-after 'setup-cwd 'fix-desktop-file
+ (lambda _
+ ;; Fix the .desktop file binary location.
+ (substitute* '("share/applications/lycheeslicer.desktop")
+ (("/opt/LycheeSlicer")
+ (string-append #$output "/lib/LycheeSlicer")))))
+ (add-before 'install-wrapper 'symlink-binary-file
+ (lambda _
+ (mkdir-p (string-append #$output "/bin"))
+ (symlink (string-append #$output "/lib/LycheeSlicer/lycheeslicer")
+ (string-append #$output "/bin/lycheeslicer"))))
+ (add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
+ (lambda _
+ (wrap-program (string-append #$output "/lib/LycheeSlicer/lycheeslicer")
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-join
+ (list
+ (string-append #$output "/lib/LycheeSlicer"))
+ ":")))))))))
+ (inputs
+ (list libxscrnsaver))
+ (home-page "https://mango3d.io")
+ (synopsis "Slicer for resin 3d printers of different manufacturers")
+ (description "A user-friendly slicing software for resin 3d printers. It
+supports printers and resins of different manufacturers alongside
+community-created profiles as well. It offers a paid- and free version with a
+reduced feature set.")
+ (license (license:nonfree "https://mango3d.io/terms-and-conditions"))))
diff --git a/nongnu/packages/firmware.scm b/nongnu/packages/firmware.scm
new file mode 100644
index 0000000..218d375
--- /dev/null
+++ b/nongnu/packages/firmware.scm
@@ -0,0 +1,306 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2022-2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2023 Krzysztof Baranowski <pharcosyle@gmail.com>
+
+(define-module (nongnu packages firmware)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages cpio)
+ #:use-module (gnu packages efi)
+ #:use-module (gnu packages firmware)
+ #:use-module (guix build-system copy)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses) #:prefix guix-license:)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (nonguix licenses)
+ #:use-module (nongnu packages compression))
+
+;; fwupd with LVFS nonfree repositories enabled
+(define-public fwupd-nonfree
+ (package
+ (inherit fwupd)
+ (name "fwupd-nonfree")
+ (arguments
+ (substitute-keyword-arguments (package-arguments fwupd)
+ ((#:configure-flags _
+ #~'())
+ #~(list "--wrap-mode=nofallback"
+ "-Dsystemd=false"
+ (string-append "-Defi_os_dir="
+ #$gnu-efi "/lib")
+ "-Defi_binary=false"
+ (string-append "-Dudevdir="
+ #$output "/lib/udev")
+ "--localstatedir=/var"
+ (string-append "--libexecdir="
+ #$output "/libexec")
+ "-Dsupported_build=true"))))))
+
+(define-public ov5640-firmware
+ (let ((commit "6e8e591e17e207644dfe747e51026967bb1edab5")
+ (revision "1"))
+ (package
+ (name "ov5640-firmware")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://megous.com/git/linux-firmware")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "19xmkdvlkczc6zgigy8jdbgnp37i6pc03m2cm3gilvzg8m7v18ad"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:substitutable? #f
+ #:install-plan '(("ov5640_af.bin" "lib/firmware/"))))
+ (synopsis "Firmware for the OV5640 sensor in the PinePhone")
+ (description "This package provides binary firmware for the 0V5640 sensor
+in the PinePhone.")
+ (home-page "https://megous.com/git/linux-firmware")
+ (license (nonfree (string-append "unknown"))))))
+
+(define-public rtl8723bt-firmware
+ (let ((commit "6e8e591e17e207644dfe747e51026967bb1edab5")
+ (revision "1"))
+ (package
+ (name "rtl8723bt-firmware")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://megous.com/git/linux-firmware")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "19xmkdvlkczc6zgigy8jdbgnp37i6pc03m2cm3gilvzg8m7v18ad"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:substitutable? #f
+ #:install-plan '(("rtl_bt/rtl8723cs_xx_fw.bin" "lib/firmware/"))))
+ (synopsis "Firmware for the RTL8723BS/CS")
+ (description "This package provides binary firmware for the RTL8723BS/CS
+WiFi/Bluetooth chip in the PinePhone.")
+ (home-page "https://megous.com/git/linux-firmware")
+ (license (nonfree (string-append "unknown"))))))
+
+(define-public anx7688-firmware
+ (let ((commit "6e8e591e17e207644dfe747e51026967bb1edab5")
+ (revision "1"))
+ (package
+ (name "anx7688-firmware")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://megous.com/git/linux-firmware")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "19xmkdvlkczc6zgigy8jdbgnp37i6pc03m2cm3gilvzg8m7v18ad"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:substitutable? #f
+ #:install-plan '(("anx7688-fw.bin" "lib/firmware/"))))
+ (synopsis "Firmware for the ANX7688")
+ (description "This package provides binary firmware for the ANX7688
+HDMI to USB Type-C Bridge in the PinePhone.")
+ (home-page "https://megous.com/git/linux-firmware")
+ (license (nonfree (string-append "unknown"))))))
+
+(define-public ap6256-firmware
+ (let ((commit "056d5f6776e515f90bbbbead1be06857aaef17d0")
+ (revision "1"))
+ (package
+ (name "ap6256-firmware")
+ (version (git-version "2020.02" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url
+ "https://gitlab.manjaro.org/manjaro-arm/packages/community/ap6256-firmware")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1s52rpikw0gysph5lq7vr6b3nsxczg4ikgil9zdgmcknjnxk9kbv"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:substitutable? #f
+ #:install-plan '( ;Bluetooth firmware
+ ("BCM4345C5.hcd" "usr/lib/firmware/brcm/")
+ ;; WiFi firmware
+ ("fw_bcm43456c5_ag.bin" "usr/lib/firmware/brcm/")
+ ("brcmfmac43456-sdio.clm_blob"
+ "usr/lib/firmware/brcm/")
+ ("brcmfmac43456-sdio.AP6256.txt"
+ "usr/lib/firmware/brcm/")
+ ("brcmfmac43456-sdio.AP6256.txt"
+ "usr/lib/firmware/brcm/brcmfmac43456-sdio.pine64,pinebook-pro.txt"))))
+ (synopsis "Firmware for the wifi/bt module AP6256")
+ (description
+ "This package provides Firmware for the wifi/bt module AP6256,
+found in Pinebook Pro.")
+ (home-page "https://gitlab.manjaro.org/manjaro-arm/packages/community/ap6256-firmware")
+ (license (nonfree (string-append "unknown"))))))
+
+(define-public bluez-firmware
+ (package
+ (name "bluez-firmware")
+ (version "1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://bluez.sf.net/download/" name "-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1v4yv6gvlvvwslpb0lj1nsp4r900zxpvxz2ab0sbvimbiw8rw4dn"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-after 'install-license-files 'relocate-copyright
+ (lambda* _
+ (install-file (string-append #$output
+ "/lib/firmware/BCM-LEGAL.txt")
+ (string-append #$output
+ "/share/doc/bluez-firmware-"
+ #$(package-version bluez-firmware)
+ "/BCM-LEGAL.txt")))))))
+ (synopsis "Firmware for Broadcom BCM203x and STLC2300 Bluetooth chips")
+ (description "This package provides firmware for Broadcom BCM203x
+and STLC2300 Bluetooth chips.")
+ (home-page "https://github.com/RPi-Distro/bluez-firmware")
+ (license (list guix-license:gpl2+
+ (nonfree
+ "file:///share/doc/bluez-firmware-1.2/BCM-LEGAL.txt")))))
+
+(define dump-file-chunk
+ #~(lambda (in out count start)
+ (use-modules (rnrs io ports))
+ (call-with-output-file out
+ (lambda (out-port)
+ (put-bytevector
+ out-port
+ (call-with-input-file in
+ (lambda (in-port)
+ (seek in-port start SEEK_SET)
+ (get-bytevector-n in-port count))))))))
+
+(define-public facetimehd-firmware
+ (package
+ (name "facetimehd-firmware")
+ (version "1.43")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://updates.cdn-apple.com/2019/cert"
+ "/041-88431-20191011-e7ee7d98-2878-4cd9-bc0a-d98b3a1e24b1"
+ "/OSXUpd10.11.5.dmg"))
+ (sha256
+ (base32
+ "009kfk1nrrialgp69c5smzgbmd5xpvk35xmqr2fzb15h6pp33ka6"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:substitutable? #f
+ #:install-plan #~'(("firmware.bin" "/lib/firmware/facetimehd/"))
+ #:phases
+ (let ((dmg-subset-size 207733123)
+ (dmg-subset-offset 204909802)
+ (firmware-size 603715)
+ (firmware-offset 81920))
+ #~(modify-phases %standard-phases
+ (add-before 'install 'extract
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((firmware-in
+ (string-append
+ "System/Library/Extensions/AppleCameraInterface.kext"
+ "/Contents/MacOS/AppleCameraInterface")))
+ (let ((dmg-subset "dmg-subset"))
+ (#$dump-file-chunk #$source
+ dmg-subset
+ #$dmg-subset-size
+ #$dmg-subset-offset)
+ (system
+ (string-join
+ (list (search-input-file inputs "/bin/xz")
+ "--decompress"
+ "--stdout"
+ dmg-subset
+ "|"
+ (search-input-file inputs "/bin/cpio")
+ "--format=odc"
+ "--extract"
+ "--make-directories"
+ (string-append "./" firmware-in)))))
+ (let ((firmware-out "firmware.bin.gz"))
+ (#$dump-file-chunk firmware-in
+ firmware-out
+ #$firmware-size
+ #$firmware-offset)
+ (invoke
+ (search-input-file inputs "/bin/gzip")
+ "--decompress"
+ (string-append firmware-out))))))))))
+ (native-inputs
+ (list cpio gzip xz))
+ (synopsis "Firmware for the FacetimeHD (Broadcom 1570) PCIe webcam")
+ (description "Firmware for the FacetimeHD webcam. See
+@uref{https://github.com/patjak/facetimehd/wiki/Get-Started#firmware-extraction,
+patjak's facetimehd wiki} for more information.")
+ (home-page "https://support.apple.com")
+ (license (nonfree "https://www.apple.com/legal"))
+ (supported-systems '("i686-linux" "x86_64-linux"))))
+
+(define-public facetimehd-calibration
+ (package
+ (name "facetimehd-calibration")
+ (version "5.1.5769")
+ (source
+ (origin
+ (method url-fetch/zipbomb)
+ (uri (string-append
+ "https://download.info.apple.com/Mac_OS_X"
+ "/031-30890-20150812-ea191174-4130-11e5-a125-930911ba098f"
+ "/bootcamp" version".zip"))
+ (sha256
+ (base32
+ "07jbh6d0djcvcgj5hhkkw7d6mvcl228yb8rp0a2qqw20ya72rpjf"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:install-plan #~'(("." "/lib/firmware/facetimehd/"
+ #:include-regexp ("[0-9]{4}_01XX\\.dat")))
+ #:phases
+ (let ((calibration-files
+ '(("1771_01XX.dat" 19040 1644880)
+ ("1871_01XX.dat" 19040 1606800)
+ ("1874_01XX.dat" 19040 1625840)
+ ("9112_01XX.dat" 33060 1663920))))
+ #~(modify-phases %standard-phases
+ (add-before 'install 'extract
+ (lambda* (#:key inputs #:allow-other-keys)
+ (invoke (search-input-file inputs "/bin/unrar")
+ "x"
+ "BootCamp/Drivers/Apple/AppleCamera64.exe")
+ (for-each (lambda (spec)
+ (apply #$dump-file-chunk "AppleCamera.sys" spec))
+ '#$calibration-files)))))))
+ (native-inputs
+ (list unrar unzip))
+ (synopsis "Calibration files for the FacetimeHD (Broadcom 1570) PCIe webcam")
+ (description "Calibration files for the FacetimeHD webcam. These are
+optional but make the colors look much better. See
+@uref{https://github.com/patjak/facetimehd/wiki/Extracting-the-sensor-calibration-files,
+patjak's facetimehd wiki} for more information.")
+ (home-page "https://support.apple.com/kb/DL1837")
+ (license (nonfree "https://www.apple.com/legal"))
+ (supported-systems '("i686-linux" "x86_64-linux"))))
diff --git a/nongnu/packages/fonts.scm b/nongnu/packages/fonts.scm
index 7120fef..7b6eb75 100644
--- a/nongnu/packages/fonts.scm
+++ b/nongnu/packages/fonts.scm
@@ -1,26 +1,14 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2021 Korytov Pavel <thexcloud@gmail.com>
;;; Copyright © 2021 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2023 Krzysztof Baranowski <pharcosyle@gmail.com>
(define-module (nongnu packages fonts)
#:use-module (ice-9 string-fun)
#:use-module (gnu packages compression)
+ #:use-module (guix deprecation)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix build-system font)
#:use-module (guix build-system copy)
@@ -90,13 +78,16 @@ font from the pack of Microsoft core fonts for the web."))
#:font-name "Comic Sans MS"
#:hash "0ki0rljjc1pxkbsxg515fwx15yc95bdyaksa3pjd89nyxzzg6vcw"))
-(define-public font-microsoft-couirer-new
+(define-public font-microsoft-courier-new
(mscorefont
"courie32"
#:version "2.82"
#:font-name "Courier New"
#:hash "111k3waxki9yyxpjwl2qrdkswvsd2dmvhbjmmrwyipam2s31sldv"))
+(define-public font-microsoft-couirer-new
+ (deprecated-package "font-microsoft-couirer-new" font-microsoft-courier-new))
+
(define-public font-microsoft-georgia
(mscorefont
"georgi32"
@@ -174,3 +165,163 @@ Included fonts:
("font-microsoft-trebuchet-ms" ,font-microsoft-trebuchet-ms)
("font-microsoft-verdana" ,font-microsoft-verdana)
("font-microsoft-webdings" ,font-microsoft-webdings)))))
+
+(define* (apple-font #:key
+ font-name
+ archive-timestamp
+ version
+ file
+ hash
+ synopsis
+ description)
+ (package
+ (name (string-append "font-apple-"
+ (string-replace-substring
+ (string-downcase font-name)
+ " " "-")))
+ (version version)
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ ;; Download link is unversioned, use a stable snapshot.
+ "https://web.archive.org/web/" archive-timestamp "/"
+ "https://devimages-cdn.apple.com/design/resources/download/"
+ file ".dmg"))
+ (sha256
+ (base32 hash))))
+ (build-system font-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda* (#:key source inputs #:allow-other-keys)
+ (let ((7z-exe (search-input-file inputs "/bin/7z")))
+ (invoke 7z-exe "x" source)
+ (invoke 7z-exe "x" (car (find-files "." "\\.pkg$")))
+ (invoke 7z-exe "x" "Payload~")))))))
+ (native-inputs (list p7zip))
+ (home-page "https://developer.apple.com/fonts")
+ (synopsis (string-append font-name " typeface by Apple."))
+ (description description)
+ (license
+ (nonfree
+ "https://www.apple.com"
+ "Specific license information is embedded in the font files."))))
+
+(define-public font-apple-sf-pro
+ (apple-font
+ #:font-name "SF Pro"
+ #:archive-timestamp "20230710073336"
+ #:file "SF-Pro"
+ #:version "19.0d6e1"
+ #:hash "19qa6fs6x5614sqw9a6idlizzsssw8256crz1ps2p2n6gwp2fvaq"
+ #:description "This neutral, flexible, sans-serif typeface is the system
+font for iOS, iPad OS, macOS and tvOS. SF Pro features nine weights, variable
+optical sizes for optimal legibility, four widths, and includes a rounded
+variant. SF Pro supports over 150 languages across Latin, Greek, and Cyrillic
+scripts."))
+
+(define-public font-apple-sf-compact
+ (apple-font
+ #:font-name "SF Compact"
+ #:archive-timestamp "20230710073418"
+ #:file "SF-Compact"
+ #:version "19.0d6e1"
+ #:hash "02127drlqvwscq6vaphmvsp85cn8j4zfhi0kb9a3fzc0z8b95hdq"
+ #:description "Sharing many features with SF Pro, SF Compact features an
+efficient, compact design that is optimized for small sizes and narrow columns.
+SF Compact is the system font for watchOS and includes a rounded variant."))
+
+(define-public font-apple-sf-mono
+ (apple-font
+ #:font-name "SF Mono"
+ #:archive-timestamp "20230710073457"
+ #:file "SF-Mono"
+ #:version "19.0d6e1"
+ #:hash "0vjdpl3xyxl2rmfrnjsxpxdizpdr4canqa1nm63s5d3djs01iad6"
+ #:description "This monospaced variant of San Francisco enables alignment
+between rows and columns of text, and is used in coding environments like Xcode.
+SF Mono features six weights and supports Latin, Greek, and Cyrillic scripts."))
+
+(define-public font-apple-sf-arabic
+ (apple-font
+ #:font-name "SF Arabic"
+ #:archive-timestamp "20230710073501"
+ #:file "SF-Arabic"
+ #:version "19.0d6e1"
+ #:hash "0phl3wi0lq7djcg8nqg1ml1f73bsfjzmvd2n8hkl6dbprmw614jp"
+ #:description "A contemporary interpretation of the Naskh style with a
+rational and flexible design, this extension of San Francisco is the Arabic
+system font on Apple platforms. Like San Francisco, SF Arabic features nine
+weights, variable optical sizes that automatically adjust spacing and contrast
+based on the point size, and includes a rounded variant."))
+
+(define-public font-apple-new-york
+ (apple-font
+ #:font-name "New York"
+ #:archive-timestamp "20230710073506"
+ #:file "NY"
+ #:version "17.0d5e1"
+ #:hash "1hgxyizpgam7y1xh36fsypd3a1nn417wdnnfk1zahq9vhxrrds2w"
+ #:description "A companion to San Francisco, this serif typeface is based on
+essential aspects of historical type styles. New York features six weights,
+supports Latin, Greek and Cyrillic scripts, and features variable optical sizes
+allowing it to perform as a traditional reading face at small sizes and a
+graphic display face at larger sizes."))
+
+;; At the time of this writing, `sf-symbols' is just `sf-pro' and `sf-compact'
+;; together plus one extra file, SFSymbolsFallback.otf. This package is
+;; probably of limited use on non-macOS but we'll include it for completeness
+;; and in case the situation changes in the future.
+(define-public font-apple-sf-symbols
+ (apple-font
+ #:font-name "SF Symbols"
+ #:archive-timestamp "20230710073513"
+ #:file "SF-Symbols-5"
+ #:version "5"
+ #:hash "1bwlq1nf75bv0x36qdk371r2pd5slf3jlv50wgsl0kpj1dds22sf"
+ #:description "With over 5,000 symbols, SF Symbols is a library of
+iconography designed to integrate seamlessly with San Francisco, the system
+font for Apple platforms. Symbols come in nine weights and three scales, and
+automatically align with text labels."))
+
+(define-public font-apple-color-emoji
+ (package
+ (name "font-apple-color-emoji")
+ (version "18.0d4e1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/pharcosyle/apple-fonts"
+ "/releases/download"
+ "/Apple-Color-Emoji-" version "/Apple.Color.Emoji.ttc"))
+ (sha256
+ (base32 "06i1ady7b2g1i2hl3f8yxn64g2i82c2ni9vdw25gpdqdj28vyqw3"))))
+ (build-system font-build-system)
+ (home-page "https://www.apple.com")
+ (synopsis "Apple Color Emoji typeface by Apple.")
+ (description "Color and black-and-white Apple emoji fonts.")
+ (license (nonfree "https://www.apple.com"))))
+
+(define-public font-apple-symbols
+ (package
+ (name "font-apple-symbols")
+ (version "17.0d1e2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/pharcosyle/apple-fonts"
+ "/releases/download"
+ "/Apple-Symbols-" version "/Apple.Symbols.ttf"))
+ (sha256
+ (base32 "14ivhsiszmy1ql69kpr1f33n07qgpaj7w43w2p5qnmlwcrvs3ccr"))))
+ (build-system font-build-system)
+ (home-page "https://www.apple.com")
+ (synopsis "Apple Symbols typeface by Apple.")
+ (description "An Apple system font intended to provide coverage for
+characters defined as symbols in the Unicode Standard.")
+ (license (nonfree "https://www.apple.com"))))
diff --git a/nongnu/packages/game-client.scm b/nongnu/packages/game-client.scm
new file mode 100644
index 0000000..03fd21a
--- /dev/null
+++ b/nongnu/packages/game-client.scm
@@ -0,0 +1,343 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2020 pkill-9
+;;; Copyright © 2020, 2021 ison <ison@airmail.cc>
+;;; Copyright © 2021 pineapples
+;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
+;;; Copyright © 2021 Kozo <kozodev@runbox.com>
+;;; Copyright © 2021, 2022, 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2023 Elijah Malaby
+;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
+
+(define-module (nongnu packages game-client)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module ((nonguix licenses) #:prefix license:)
+ #:use-module (guix git-download)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
+ #:use-module (gnu packages audio)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages certs)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages elf)
+ #:use-module (gnu packages file)
+ #:use-module (gnu packages fonts)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gawk)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages graphics)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages libbsd)
+ #:use-module (gnu packages libusb)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages llvm)
+ #:use-module (gnu packages logging)
+ #:use-module (gnu packages lsof)
+ #:use-module (nongnu packages nvidia)
+ #:use-module (gnu packages pciutils)
+ #:use-module (gnu packages pulseaudio)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages python-web)
+ #:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages toolkits)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages xorg)
+ #:use-module (nonguix build-system chromium-binary)
+ #:use-module (nonguix multiarch-container)
+ #:use-module (nonguix utils))
+
+(define heroic-client
+ (package
+ (name "heroic-client")
+ (version "2.12.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/Heroic-Games-Launcher/"
+ "HeroicGamesLauncher/releases/download/v"
+ version "/heroic_" version "_amd64.deb"))
+ (sha256
+ (base32
+ "0ikb9r72n7xknns81mibipfwqh0r9hqnm5a3k4xsk8my1gajc60c"))))
+ (build-system chromium-binary-build-system)
+ (arguments
+ (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
+ #:wrapper-plan
+ #~'("lib/Heroic/heroic"
+ "lib/Heroic/libEGL.so"
+ "lib/Heroic/libGLESv2.so"
+ "lib/Heroic/libvk_swiftshader.so"
+ "lib/Heroic/libvulkan.so.1"
+ "lib/Heroic/chrome-sandbox"
+ "lib/Heroic/chrome_crashpad_handler"
+ "lib/Heroic/libffmpeg.so")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'binary-unpack 'setup-cwd
+ (lambda _
+ (copy-recursively "usr/" ".")
+ ;; Use the more standard lib directory for everything.
+ (rename-file "opt/" "lib")
+ ;; Remove unneeded files.
+ (delete-file-recursively "usr")
+ ;; Fix the .desktop file binary location.
+ (substitute* '("share/applications/heroic.desktop")
+ (("/opt/Heroic/")
+ (string-append #$output "/bin/")))))
+ (add-after 'install 'symlink-binary-file
+ (lambda _
+ (mkdir-p (string-append #$output "/bin"))
+ (symlink (string-append #$output "/lib/Heroic/heroic")
+ (string-append #$output "/bin/heroic"))))
+ (add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
+ (lambda _
+ (wrap-program (string-append #$output "/lib/Heroic/heroic")
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-join
+ (list
+ (string-append #$output "/lib/Heroic"))
+ ":")))))))))
+ (home-page "https://heroicgameslauncher.com")
+ (synopsis "A Native GOG, Amazon and Epic Games Launcher")
+ (description "Heroic is an Open Source Game Launcher. Right now it supports launching
+games from the Epic Games Store using Legendary, GOG Games using our custom
+implementation with gogdl and Amazon Games using Nile.")
+ (license license:gpl3)))
+
+(define steam-client
+ (package
+ (name "steam-client")
+ (version "1.0.0.78")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://repo.steampowered.com/steam/archive/precise/steam_"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0390qy8vy7sx35hxl51yrbk6mvdz1vvpy96v07qva4bjbmsmjhhh"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; There are no tests.
+ #:validate-runpath? #f ; Looks for bin/steam which doesn't exist.
+ #:make-flags
+ (list "PREFIX=" (string-append "DESTDIR=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ ;; Patch Makefile so it creates links to the store rather than /lib.
+ (add-after 'unpack 'patch-makefile
+ (lambda _
+ (substitute* "Makefile"
+ (("-fns ")
+ "-fns $(DESTDIR)"))))
+ (delete 'patch-dot-desktop-files)
+ (add-after 'unpack 'patch-startscript
+ (lambda _
+ (substitute* "bin_steam.sh"
+ (("/usr") (assoc-ref %outputs "out")))))
+ (add-after 'patch-dot-desktop-files 'patch-desktop-file
+ (lambda _
+ (let ((path (string-append (assoc-ref %outputs "out")
+ "/share/applications/")))
+ (substitute* (string-append path "steam.desktop")
+ (("Exec=.*/steam") "Exec=steam"))
+ (copy-file (string-append path "steam.desktop")
+ (string-append path "steam-asound32.desktop"))
+ (substitute* (string-append path "steam-asound32.desktop")
+ (("Exec=steam %U") "Exec=steam %U -- --asound32")
+ (("Name=Steam") "Name=Steam (32-bit ALSA)")))))
+ ;; Steamdeps installs missing packages, which doesn't work with Guix.
+ (add-after 'install-binaries 'post-install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref %outputs "out")))
+ (delete-file (string-append out "/lib/steam/bin_steamdeps.py"))
+ (delete-file (string-append out "/bin/steamdeps"))))))))
+ (home-page "https://store.steampowered.com")
+ (synopsis "Digital distribution platform for managing and playing games")
+ (description "Steam is a digital software distribution platform created by Valve.")
+ (license (license:nonfree "file:///share/doc/steam/steam_subscriber_agreement.txt"))))
+
+(define steam-client-libs
+ `(("at-spi2-core" ,at-spi2-core) ; Required (often) for SteamVR interface.
+ ("bash" ,bash) ; Required for steam startup.
+ ("coreutils" ,coreutils)
+ ("diffutils" ,diffutils)
+ ("dbus-glib" ,dbus-glib) ; Required for steam browser.
+ ("elfutils" ,elfutils) ; Required for capturing library dependencies in pv.
+ ("eudev" ,eudev) ; Required for steamwebhelper/heavy runtime.
+ ("fontconfig" ,fontconfig) ; Required for steam client.
+ ("file" ,file) ; Used for steam installation.
+ ("find" ,findutils) ; Required at least for some logging.
+ ("freetype" ,freetype) ; Required for steam login.
+ ("gawk" ,gawk)
+ ("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon.
+ ("gcc:lib" ,gcc "lib") ; Required for steam startup.
+ ("grep" ,grep)
+ ("libbsd" ,libbsd)
+ ("libcap" ,libcap) ; Required for SteamVR, but needs pkexec too.
+ ("libusb" ,libusb) ; Required for SteamVR.
+ ("libva" ,libva) ; Required for hardware video encoding/decoding.
+ ("libvdpau" ,libvdpau) ; Required for hardware video encoding/decoding.
+ ("libvdpau-va-gl" ,libvdpau-va-gl) ; Additional VDPAU support.
+ ("llvm" ,llvm-for-mesa) ; Required for mesa.
+ ("lsof" ,lsof) ; Required for some friend's list actions.
+ ("mesa" ,mesa) ; Required for steam startup.
+ ("nss-certs" ,nss-certs) ; Required for steam login.
+ ("pciutils" ,pciutils) ; Tries to run lspci at steam startup.
+ ("procps" ,procps)
+ ("sed" ,sed)
+ ("tar" ,tar)
+ ("usbutils" ,usbutils) ; Required for SteamVR.
+ ("util-linux" ,util-linux) ; Required for steam login.
+ ("wayland" ,wayland) ; Required for mesa vulkan (e.g. libvulkan_radeon).
+ ("xdg-user-dirs" ,xdg-user-dirs) ; Suppress warning of missing xdg-user-dir.
+ ("flatpak-xdg-utils" ,flatpak-xdg-utils)
+ ("xz" ,xz)
+ ("zenity" ,zenity))) ; Required for progress dialogs.
+
+(define steam-gameruntime-libs
+ `(("alsa-lib" ,alsa-lib) ; Required for audio in most games.
+ ("alsa-plugins:pulseaudio" ,alsa-plugins "pulseaudio") ; Required for audio in most games.
+ ("font-dejavu" ,font-dejavu)
+ ("font-liberation" ,font-liberation)
+ ("imgui" ,imgui-1.86) ; Required for MangoHud.
+ ("mangohud" ,mangohud)
+ ("openal" ,openal) ; Prevents corrupt audio in Crypt of the Necrodancer.
+ ("pulseaudio" ,pulseaudio) ; Prevents corrupt audio in Sven Coop.
+ ("python" ,python) ; Required for KillingFloor2 and Wreckfest.
+ ("spdlog" ,spdlog))) ; Required for MangoHud.
+
+(define heroic-extra-client-libs
+ `(("curl" ,curl) ; Required for Heroic to download e.g. Wine.
+ ("which" ,which) ; Heroic complains about trying to use which (though works).
+ ("gtk+" ,gtk+))) ; Required for Heroic interface (gtk filechooser schema).
+
+(define steam-ld.so.conf
+ (packages->ld.so.conf
+ (list (fhs-union `(,@steam-client-libs
+ ,@steam-gameruntime-libs
+ ,@fhs-min-libs)
+ #:name "fhs-union-64")
+ (fhs-union `(,@steam-client-libs
+ ,@steam-gameruntime-libs
+ ,@fhs-min-libs)
+ #:name "fhs-union-32"
+ #:system "i686-linux"))))
+
+(define steam-ld.so.cache
+ (ld.so.conf->ld.so.cache steam-ld.so.conf))
+
+(define-public steam-container
+ (nonguix-container
+ (name "steam")
+ (wrap-package steam-client)
+ (run "/bin/steam")
+ (ld.so.conf steam-ld.so.conf)
+ (ld.so.cache steam-ld.so.cache)
+ (union64
+ (fhs-union `(,@steam-client-libs
+ ,@steam-gameruntime-libs
+ ,@fhs-min-libs)
+ #:name "fhs-union-64"))
+ (union32
+ (fhs-union `(,@steam-client-libs
+ ,@steam-gameruntime-libs
+ ,@fhs-min-libs)
+ #:name "fhs-union-32"
+ #:system "i686-linux"))
+ (link-files '("share"))
+ (description "Steam is a digital software distribution platform created by
+Valve. This package provides a script for launching Steam in a Guix container
+which will use the directory @file{$HOME/.local/share/guix-sandbox-home} where
+all games will be installed.")))
+
+(define-public steam-nvidia-container
+ (nonguix-container
+ (inherit steam-container)
+ (name "steam-nvidia")
+ ;; Steam's .desktop files expect a "steam" executable, so provide that.
+ (binary-name "steam")
+ (union64 (replace-mesa (ngc-union64 steam-container)))
+ (union32 (replace-mesa (ngc-union32 steam-container)))))
+
+(define-public steam (nonguix-container->package steam-container))
+(define-public steam-nvidia (nonguix-container->package steam-nvidia-container))
+
+(define-public heroic-container
+ (nonguix-container
+ (name "heroic")
+ (wrap-package heroic-client)
+ (run "/bin/heroic")
+ (ld.so.conf steam-ld.so.conf)
+ (ld.so.cache steam-ld.so.cache)
+ ;; TODO: Probably can remove some of the packages from these lists, at
+ ;; least changing the client libraries as Heroic is rather different from
+ ;; Steam. However, a good number will be needed to run games anyway. A
+ ;; better separation and testing in Steam as well would be helpful to
+ ;; differentiate what packages are needed for what in general. For now,
+ ;; this is easier and works.
+ (union64
+ (fhs-union `(,@heroic-extra-client-libs
+ ,@steam-client-libs
+ ,@steam-gameruntime-libs
+ ,@fhs-min-libs)
+ #:name "fhs-union-64"))
+ ;; Don't include heroic-client-libs as they are not needed in 32-bit.
+ (union32
+ (fhs-union `(,@steam-client-libs
+ ,@steam-gameruntime-libs
+ ,@fhs-min-libs)
+ #:name "fhs-union-32"
+ #:system "i686-linux"))
+ (link-files '("share"))
+ (description "Heroic is an Open Source Game Launcher. Right now it supports launching
+games from the Epic Games Store using Legendary, GOG Games using our custom
+implementation with gogdl and Amazon Games using Nile. This package provides
+a script for launching Heroic in a Guix container which will use the directory
+@file{$HOME/.local/share/guix-sandbox-home} where all games will be
+installed.")))
+
+(define-public heroic-nvidia-container
+ (nonguix-container
+ (inherit heroic-container)
+ (name "heroic-nvidia")
+ (union64 (replace-mesa (ngc-union64 heroic-container)))
+ (union32 (replace-mesa (ngc-union32 heroic-container)))))
+
+(define-public heroic (nonguix-container->package heroic-container))
+(define-public heroic-nvidia (nonguix-container->package heroic-nvidia-container))
+
+(define-public protonup-ng
+ (package
+ (name "protonup-ng")
+ (version "0.2.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cloudishBenne/protonup-ng")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0yd2mhhqxzarqxk85zf42s931jzc94f1cssn1hblsqghr79laa45"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:tests? #f)) ; there are no tests
+ (inputs
+ (list python-configparser python-requests))
+ (home-page "https://github.com/cloudishBenne/protonup-ng")
+ (synopsis "Manage Proton-GE Installations")
+ (description "ProtonUp-ng is a CLI program and API to automate the installation
+and update of GloriousEggroll's Proton-GE.")
+ (license license:gpl3)))
diff --git a/nongnu/packages/game-development.scm b/nongnu/packages/game-development.scm
index 16cd699..566cea2 100644
--- a/nongnu/packages/game-development.scm
+++ b/nongnu/packages/game-development.scm
@@ -1,21 +1,6 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
-;;;
-;;; This file is not 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 (nongnu packages game-development)
#:use-module (ice-9 match)
diff --git a/nongnu/packages/gog.scm b/nongnu/packages/gog.scm
index 6c2f023..f6deffb 100644
--- a/nongnu/packages/gog.scm
+++ b/nongnu/packages/gog.scm
@@ -1,18 +1,7 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2021-2022 Timotej Lazar <timotej.lazar@araneo.si>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
+;;; Copyright © 2023 Eidvilas Markevičius <markeviciuseidvilas@gmail.com>
(define-module (nongnu packages gog)
#:use-module (gnu packages boost)
@@ -33,7 +22,7 @@
(define-public lgogdownloader
(package
(name "lgogdownloader")
- (version "3.9")
+ (version "3.12")
(source
(origin
(method git-fetch)
@@ -42,7 +31,7 @@
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1hbwgwdm1vn7lkz366q9q8f44sk1pvhgjffndwx49lh3md66xps2"))))
+ (base32 "0kmz5zsbci7iilbqdvql9c1vk2b1q2flsdr6psnkln07xp664di2"))))
(build-system qt-build-system)
(arguments
`(#:configure-flags '("-DUSE_QT_GUI=ON")
diff --git a/nongnu/packages/k8s.scm b/nongnu/packages/k8s.scm
new file mode 100644
index 0000000..6a8a216
--- /dev/null
+++ b/nongnu/packages/k8s.scm
@@ -0,0 +1,217 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+
+(define-module (nongnu packages k8s)
+ #:use-module (guix build-system copy)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module ((guix licenses) :prefix license:))
+
+(define-public k9s
+ (package
+ (name "k9s")
+ (version "0.27.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/derailed/k9s/releases/download/v"
+ version "/k9s_Linux_amd64.tar.gz"))
+ (sha256
+ (base32
+ "14j37kl8pbmbid4np48cfv5k8vic6ngnc4pjh01qr6szplg861z5"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:substitutable? #f
+ #:install-plan
+ #~'(("k9s" "bin/"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda _
+ (invoke "tar" "-xvf" #$source))))))
+ (home-page "https://k9scli.io")
+ (supported-systems '("x86_64-linux"))
+ (synopsis "Kubernetes CLI To Manage Your Clusters In Style")
+ (description
+ "K9s provides a terminal UI to interact with your Kubernetes clusters. The
+aim of this project is to make it easier to navigate, observe and manage your
+applications in the wild. K9s continually watches Kubernetes for changes and
+offers subsequent commands to interact with your observed resources.")
+ (license license:asl2.0)))
+
+(define-public katenary
+ (package
+ (name "katenary")
+ (version "2.0.0-beta2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/metal3d/katenary/releases/download/"
+ version "/katenary-linux-amd64"))
+ (sha256
+ (base32
+ "0vk5c82bf5aasrgz2b7qdjlbmlcjha0r3swmrbs9y5mms18y7m3i"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:substitutable? #f
+ #:install-plan
+ #~'(("katenary" "bin/"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda _
+ (copy-file #$source "./katenary")
+ (chmod "katenary" #o644)))
+ (add-before 'install 'chmod
+ (lambda _
+ (chmod "katenary" #o555))))))
+ (home-page "https://github.com/metal3d/katenary")
+ (supported-systems '("x86_64-linux"))
+ (synopsis "Convert docker-compose to a configurable helm chart")
+ (description
+ "Katenary is a tool to help to transform docker-compose files to a working
+Helm Chart for Kubernetes.")
+ (license license:expat)))
+
+(define-public kubectl
+ (package
+ (name "kubectl")
+ (version "1.28.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://dl.k8s.io/release/v" version "/bin/linux/amd64/kubectl"))
+ (sha256
+ (base32
+ "1qbl4a2xv795apvbwahdb9kzcm2wys0am1c72as3iavgs3wxd9z7"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:substitutable? #f
+ #:install-plan
+ #~'(("kubectl" "bin/"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda _
+ (copy-file #$source "./kubectl")
+ (chmod "kubectl" #o644)))
+ (add-before 'install 'chmod
+ (lambda _
+ (chmod "kubectl" #o555))))))
+ (home-page "https://github.com/kubernetes/kubectl")
+ (supported-systems '("x86_64-linux"))
+ (synopsis "Kubernetes command line tool")
+ (description
+ "kubectl allows you to run commands against Kubernetes clusters. You can
+use kubectl to deploy applications, inspect and manage cluster resources, and
+view logs.")
+ (license license:asl2.0)))
+
+(define-public kompose
+ (package
+ (name "kompose")
+ (version "1.30.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/kubernetes/kompose/releases/download/v"
+ version "/kompose-linux-amd64"))
+ (sha256
+ (base32
+ "0sy3ci7s2dkjigasyv01nm1vg30wwhmdc0cmglzb23ws8bfrfjlh"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:substitutable? #f
+ #:install-plan
+ #~'(("kompose" "bin/"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda _
+ (copy-file #$source "./kompose")))
+ (add-before 'install 'chmod
+ (lambda _
+ (chmod "kompose" #o555))))))
+ (home-page "https://kompose.io")
+ (supported-systems '("x86_64-linux"))
+ (synopsis "Go from Docker Compose to Kubernetes")
+ (description
+ "Kompose is a conversion tool for Docker Compose to container orchestrators
+such as Kubernetes (or OpenShift).")
+ (license license:expat)))
+
+(define-public helm-kubernetes
+ (package
+ (name "helm-kubernetes")
+ (version "3.12.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://get.helm.sh/helm-v" version "-linux-amd64.tar.gz"))
+ (sha256
+ (base32
+ "1d99c506shnz5cr9xhkrla5r82nan7v3hz631jqflicd376i68qv"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:substitutable? #f
+ #:install-plan
+ #~'(("linux-amd64/helm" "bin/"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda _
+ (invoke "tar" "-xvf" #$source)))
+ (add-before 'install 'chmod
+ (lambda _
+ (chmod "linux-amd64/helm" #o555))))))
+ (home-page "https://helm.sh")
+ (supported-systems '("x86_64-linux"))
+ (synopsis "The package manager for Kubernetes")
+ (description
+ "Helm helps you manage Kubernetes applications - Helm Charts help you
+define, install, and upgrade Kubernetes applications.")
+ (license license:asl2.0)))
+
+(define-public kind
+ (package
+ (name "kind")
+ (version "0.20.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://kind.sigs.k8s.io/dl/v" version "/kind-linux-amd64"))
+ (sha256
+ (base32
+ "1v9x953a5n0l3kz78wm29yh11vz56nmlvhi7xzcjscyksq9p4fji"))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:substitutable? #f
+ #:install-plan
+ #~'(("kind" "bin/"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda _
+ (copy-file #$source "./kind")
+ (chmod "kind" #o644)))
+ (add-before 'install 'chmod
+ (lambda _
+ (chmod "kind" #o555))))))
+ (home-page "https://kind.sigs.k8s.io")
+ (synopsis "Tool for running local Kubernetes clusters using Docker containers")
+ (description "kind (Kubernetes in Docker) is designed for creating and managing
+local Kubernetes clusters using Docker containers as nodes. It provides
+a fast and straightforward way to run Kubernetes for development and
+testing tasks.
+
+Supporting multi-node cluster configurations, kind is ideal for testing
+more complex, real-world scenarios without demanding extensive resources.
+It’s a lightweight, portable, and configurable solution useful in
+continuous integration (CI) workflows.")
+ (license license:asl2.0)))
diff --git a/nongnu/packages/linux.scm b/nongnu/packages/linux.scm
index f5f396e..51bbfb0 100644
--- a/nongnu/packages/linux.scm
+++ b/nongnu/packages/linux.scm
@@ -1,9 +1,13 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
;;; Copyright © 2020, 2021 James Smith <jsubuntuxp@disroot.org>
-;;; Copyright © 2020, 2021, 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2020-2024 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020, 2021, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020, 2021, 2022 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2021 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 Risto Stevcev <me@risto.codes>
@@ -12,29 +16,28 @@
;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
+;;; Copyright © 2022 Simen Endsjø <simendsjo@gmail.com>
+;;; Copyright © 2022 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2023 Krzysztof Baranowski <pharcosyle@gmail.com>
+;;; Copyright © 2023 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2023 Jelle Licht <jlicht@fsfe.org>
+;;; Copyright © 2023 Adam Kandur <rndd@tuta.io>
+;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space>
+;;; Copyright © 2023 Ada Stevenson <adanskana@gmail.com>
+;;; Copyright © 2023 Tomas Volf <~@wolfsden.cz>
+;;; Copyright © 2023 PRESFIL <presfil@protonmail.com>
(define-module (nongnu packages linux)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cpio)
#:use-module (gnu packages linux)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
@@ -42,92 +45,294 @@
#:use-module (guix build-system trivial)
#:use-module (ice-9 match)
#:use-module (nonguix licenses)
+ #:use-module (srfi srfi-1)
#:export (corrupt-linux))
-(define (linux-urls version)
- "Return a list of URLS for Linux VERSION."
- (list (string-append "https://www.kernel.org/pub/linux/kernel/v"
- (version-major version) ".x/linux-" version ".tar.xz")))
+(define (linux-url version)
+ "Return a URL for Linux VERSION."
+ (string-append "mirror://kernel.org"
+ "/linux/kernel/v" (version-major version) ".x"
+ "/linux-" version ".tar.xz"))
-(define* (corrupt-linux freedo version hash #:key (name "linux"))
- (package
- (inherit freedo)
- (name name)
- (version version)
- (source (origin
- (method url-fetch)
- (uri (linux-urls version))
- (sha256 (base32 hash))))
- (home-page "https://www.kernel.org/")
- (synopsis "Linux kernel with nonfree binary blobs included")
- (description
- "The unmodified Linux kernel, including nonfree blobs, for running Guix
-System on hardware which requires nonfree software to function.")))
+;;; If you are corrupting the kernel on your own, consider using output of
+;;; this procedure as a base for your options:
+;;; (corrupt-linux linux-libre-lts
+;;; #:configs (cons* "CONFIG_FOO=y"
+;;; (nonguix-extra-linux-options linux-libre-lts)
+(define-public (nonguix-extra-linux-options linux-or-version)
+ "Return a list containing additional options that nonguix sets by default
+for a corrupted linux package of specified version. linux-or-version can be
+some freedo package or an output of package-version procedure."
+ (define linux-version
+ (if (package? linux-or-version)
+ (package-version linux-or-version)
+ linux-or-version))
+
+ (reverse (fold (lambda (opt opts)
+ (if (version>=? linux-version (car opt))
+ (cons* (cdr opt) opts)
+ opts))
+ '()
+ ;; List of additional options for nonguix corrupted linux.
+ ;; Each member is a pair of a minimal version (>=) and the
+ ;; option itself. Option has to be in a format suitable for
+ ;; (@ (guix build kconfig) modify-defconfig) procedure.
+ ;;
+ ;; Do note that this list is intended for enabling use of
+ ;; hardware requiring non-free firmware. If a configuration
+ ;; option does work under linux-libre, it should go into Guix
+ ;; actual.
+ '(
+ ;; Driver for MediaTek mt7921e wireless chipset
+ ("5.15" . "CONFIG_MT7921E=m")))))
+
+(define* (corrupt-linux freedo
+ #:key
+ (name "linux")
+ (configs (nonguix-extra-linux-options freedo))
+ (defconfig #f))
+
+ ;; TODO: This very directly depends on guix internals.
+ ;; Throw it all out when we manage kernel hashes.
+ (define gexp-inputs (@@ (guix gexp) gexp-inputs))
+
+ (define extract-gexp-inputs
+ (compose gexp-inputs force origin-uri))
+
+ (define (find-source-hash sources url)
+ (let ((versioned-origin
+ (find (lambda (source)
+ (let ((uri (origin-uri source)))
+ (and (string? uri) (string=? uri url)))) sources)))
+ (if versioned-origin
+ (origin-hash versioned-origin)
+ #f)))
+
+ (let* ((version (package-version freedo))
+ (url (linux-url version))
+ (pristine-source (package-source freedo))
+ (inputs (map gexp-input-thing (extract-gexp-inputs pristine-source)))
+ (sources (filter origin? inputs))
+ (hash (find-source-hash sources url)))
+ (package
+ (inherit
+ (customize-linux
+ #:name name
+ #:linux freedo
+ #:source (origin
+ (method url-fetch)
+ (uri url)
+ (hash hash))
+ #:configs configs
+ #:defconfig defconfig))
+ (version version)
+ (home-page "https://www.kernel.org/")
+ (synopsis "Linux kernel with nonfree binary blobs included")
+ (description
+ "The unmodified Linux kernel, including nonfree blobs, for running Guix System
+on hardware which requires nonfree software to function."))))
-(define-public linux-5.18
- (corrupt-linux linux-libre-5.18 "5.18.16"
- "1khi1npn8d8jimwdy8bf3r7l780mxdmvk5azdv419pk33qjqdxgi"))
+(define-public linux-6.7
+ (corrupt-linux linux-libre-6.7))
+
+(define-public linux-6.6
+ (corrupt-linux linux-libre-6.6))
+
+(define-public linux-6.1
+ (corrupt-linux linux-libre-6.1))
(define-public linux-5.15
- (corrupt-linux linux-libre-5.15 "5.15.59"
- "1jxw6fnc7yaw7r6193wy6l8wdlpy3frw48drnc3dnh3k0m1cdpg6"))
+ (corrupt-linux linux-libre-5.15))
(define-public linux-5.10
- (corrupt-linux linux-libre-5.10 "5.10.135"
- "0i1kahv739qpyyml7d7sx306nv7gp55i5d97vlb0fryfx4dsd6g4"))
+ (corrupt-linux linux-libre-5.10))
(define-public linux-5.4
- (corrupt-linux linux-libre-5.4 "5.4.209"
- "1kdnz99k7zspzaxqaxahbf6hncigy4cvjlb79jsy7a95qxxr31qf"))
+ (corrupt-linux linux-libre-5.4))
(define-public linux-4.19
- (corrupt-linux linux-libre-4.19 "4.19.254"
- "1rd40wmdaymbly2zvf60mjqsflkd4n1y232qz0ixn1rfl28yz62i"))
+ (corrupt-linux linux-libre-4.19))
-(define-public linux-4.14
- (corrupt-linux linux-libre-4.14 "4.14.290"
- "0zyxb99a7fa2l85vnzmvg2nry99clj20d4j38piqm921iqxak2j4"))
+(define-public linux linux-6.6)
+;; linux-lts points to the *newest* released long-term support version.
+(define-public linux-lts linux-6.1)
-(define-public linux-4.9
- (corrupt-linux linux-libre-4.9 "4.9.325"
- "04msx0x0d8v93zjr3jj0qqkgg7m4hb7rj6hk5vzrzasmgbjmb3dl"))
+(define-public linux-arm64-generic-5.10
+ (corrupt-linux linux-libre-arm64-generic-5.10 #:name "linux-arm64-generic"))
-(define-public linux linux-5.18)
-;; linux-lts points to the *newest* released long-term support version.
-(define-public linux-lts linux-5.15)
+(define-public linux-arm64-generic-5.4
+ (corrupt-linux linux-libre-arm64-generic-5.4 #:name "linux-arm64-generic"))
+
+(define-public linux-arm64-generic
+ (corrupt-linux linux-libre-arm64-generic #:name "linux-arm64-generic"))
+
+
+;;;
+;;; Linux-XanMod
+;;;
-(define-public linux-arm64-generic-5.18
- (corrupt-linux linux-libre-arm64-generic "5.18.16"
- "1khi1npn8d8jimwdy8bf3r7l780mxdmvk5azdv419pk33qjqdxgi"
- #:name "linux-arm64-generic"))
+(define* (make-linux-xanmod-source version xanmod-revision
+ #:key xanmod-branch kernel-hash xanmod-hash)
-(define-public linux-arm64-generic-5.15
- (corrupt-linux linux-libre-arm64-generic "5.15.59"
- "1jxw6fnc7yaw7r6193wy6l8wdlpy3frw48drnc3dnh3k0m1cdpg6"
- #:name "linux-arm64-generic"))
+ (define %upstream-linux-source
+ (@@ (gnu packages linux) %upstream-linux-source))
-(define-public linux-arm64-generic linux-arm64-generic-5.18)
+ (define kernel-source
+ (%upstream-linux-source (version-major+minor version) kernel-hash))
-(define-public linux-arm64-generic-lts linux-arm64-generic-5.15)
+ (define xanmod-patch
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://sourceforge/xanmod/releases/" xanmod-branch "/"
+ version "-" xanmod-revision "/patch-"
+ version "-" xanmod-revision ".xz"))
+ (sha256 xanmod-hash)))
+
+ (origin
+ (inherit kernel-source)
+ (modules '((guix build utils)))
+ (snippet
+ #~(begin
+ (let* ((xz-name (basename #+xanmod-patch))
+ (patch-xz-name (string-append (string-drop-right xz-name 3)
+ ".patch.xz"))
+ (patch-name (string-drop-right patch-xz-name 3)))
+ (copy-file #+xanmod-patch patch-xz-name)
+ (invoke #+(file-append xz "/bin/unxz") patch-xz-name)
+ (invoke #+(file-append patch "/bin/patch")
+ "--force" "--no-backup-if-mismatch"
+ #+@(origin-patch-flags kernel-source)
+ "--input" patch-name)
+ (for-each delete-file
+ (list patch-name
+ ;; EXTRAVERSION is used instead.
+ "localversion")))))))
+
+(define* (make-linux-xanmod version xanmod-revision source
+ #:key
+ (name "linux-xanmod")
+ (xanmod-defconfig "config_x86-64-v1"))
+
+ (define %default-extra-linux-options
+ (@@ (gnu packages linux) %default-extra-linux-options))
+
+ (define config->string
+ (@@ (gnu packages linux) config->string))
+
+ (define base-kernel
+ (customize-linux
+ #:name name
+ #:source source
+ #:defconfig xanmod-defconfig
+ ;; EXTRAVERSION is used instead.
+ #:configs (config->string
+ '(("CONFIG_LOCALVERSION" . "")))
+ #:extra-version xanmod-revision))
+
+ (package
+ (inherit base-kernel)
+ (version version)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base-kernel)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ ;; Since `customize-linux' replaces the configure phase, we add
+ ;; XanMod defconfig beforehand to ensure compatibility of the
+ ;; resulting package with `customize-linux'.
+ (add-before 'configure 'add-xanmod-defconfig
+ (lambda _
+ (rename-file
+ (string-append "CONFIGS/xanmod/gcc/" #$xanmod-defconfig)
+ ".config")
+
+ ;; Adapted from `make-linux-libre*'.
+ (chmod ".config" #o666)
+ (let ((port (open-file ".config" "a"))
+ (extra-configuration
+ #$(config->string
+ (append %default-extra-linux-options
+ ;; NOTE: These are configs expected by Guix
+ ;; but missing from XanMod defconfig.
+ '(("CONFIG_BLK_DEV_NVME" . #t)
+ ("CONFIG_CRYPTO_XTS" . m)
+ ("CONFIG_VIRTIO_CONSOLE" . m))))))
+ (display extra-configuration port)
+ (close-port port))
+ (invoke "make" "oldconfig")
+
+ (rename-file
+ ".config"
+ (string-append "arch/x86/configs/" #$xanmod-defconfig))))))))
+ (native-inputs
+ (modify-inputs (package-native-inputs base-kernel)
+ ;; cpio is needed for CONFIG_IKHEADERS.
+ (prepend cpio zstd)))
+ (home-page "https://xanmod.org/")
+ (supported-systems '("x86_64-linux"))
+ (synopsis "Linux kernel distribution with custom settings and new features")
+ (description
+ "This package provides XanMod kernel, a general-purpose Linux kernel
+distribution with custom settings and new features. It's built to provide a
+stable, responsive and smooth desktop experience.")))
+
+;; Linux-XanMod sources
+(define-public linux-xanmod-version "6.7.6")
+(define-public linux-xanmod-revision "xanmod1")
+(define-public linux-xanmod-source
+ (make-linux-xanmod-source
+ linux-xanmod-version
+ linux-xanmod-revision
+ #:xanmod-branch "main"
+ #:kernel-hash (base32 "0s8hbcsg7fdvspqam8kzcxygjsznr4zfi60nqgc81l3n4m518cgg")
+ #:xanmod-hash (base32 "0hv76dj9z17w6zcy25v1ndlmdw593wlbmnw5x903vidb3c6a1dfi")))
+
+(define-public linux-xanmod-lts-version "6.6.18")
+(define-public linux-xanmod-lts-revision "xanmod1")
+(define-public linux-xanmod-lts-source
+ (make-linux-xanmod-source
+ linux-xanmod-lts-version
+ linux-xanmod-lts-revision
+ #:xanmod-branch "lts"
+ #:kernel-hash (base32 "1l2nisx9lf2vdgkq910n5ldbi8z25ky1zvl67zgwg2nxcdna09nr")
+ #:xanmod-hash (base32 "1q33bd4a65l46333l2m7vjn46b0xhdbz508bq7q0bphbmy0bf35m")))
+
+;; Linux-XanMod packages
+(define-public linux-xanmod
+ (make-linux-xanmod linux-xanmod-version
+ linux-xanmod-revision
+ linux-xanmod-source))
+
+(define-public linux-xanmod-lts
+ (make-linux-xanmod linux-xanmod-lts-version
+ linux-xanmod-lts-revision
+ linux-xanmod-lts-source))
+
+
+;;;
+;;; Firmwares
+;;;
(define-public linux-firmware
(package
(name "linux-firmware")
- (version "20220509")
+ (version "20240115")
(source (origin
(method url-fetch)
- (uri (string-append "https://git.kernel.org/pub/scm/linux/kernel"
- "/git/firmware/linux-firmware.git/snapshot/"
- "linux-firmware-" version ".tar.gz"))
+ (uri (string-append "mirror://kernel.org/linux/kernel/firmware/"
+ "linux-firmware-" version ".tar.xz"))
(sha256
(base32
- "09461dcfxvzzsl768myywb64jivnxyx3m4apbygq4501l8h8ybig"))))
+ "13b75kd075famc58pvx4r9268pxn69nyihx7p3i6i7mvkgqayz5b"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f
#:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ (apply invoke "make" "install-nodedup" make-flags)))
(delete 'validate-runpath))))
(home-page
"https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git")
@@ -567,8 +772,8 @@ package contains nonfree firmware for the following chips:
(deprecated-package "rtl-bt-firmware" realtek-firmware))
(define-public rtl8192eu-linux-module
- (let ((commit "8396a4ebb4bde6b5c919d291838320f0e5b480dd")
- (revision "3"))
+ (let ((commit "a928f08c1dd4f9a1e84d85811a543e974551bc4f")
+ (revision "6"))
(package
(name "rtl8192eu-linux-module")
(version (git-version "0.0.0" revision commit))
@@ -581,7 +786,7 @@ package contains nonfree firmware for the following chips:
(file-name (git-file-name name version))
(sha256
(base32
- "0kbfrvrfbi1r6if9vi7ccn0nc4lcqp85insiksyg3kg99mx78xhk"))))
+ "1q26kyic4glmgy0hbaq46r067m6cqf7d41chgivyxn8y32rf1fgc"))))
(build-system linux-module-build-system)
(arguments
`(#:make-flags
@@ -603,8 +808,176 @@ network adapters.")
;; hal/rtl8192e/hal8192e_fw.c
(license gpl2))))
+(define-public rtl8821ce-linux-module
+ (let ((commit "a478095a45d8aa957b45be4f9173c414efcacc6f")
+ (revision "10"))
+ (package
+ (name "rtl8821ce-linux-module")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tomaspinho/rtl8821ce")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "00cn87jjrcxjqr3n8jv4w3n64zksmzz05fdr1gdvnbx1ab5739f6"))))
+ (build-system linux-module-build-system)
+ (arguments
+ (list #:make-flags
+ #~(list (string-append "CC=" #$(cc-for-target))
+ (string-append "KSRC="
+ (assoc-ref %build-inputs
+ "linux-module-builder")
+ "/lib/modules/build"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key (make-flags '()) (parallel-build? #t)
+ #:allow-other-keys)
+ (apply invoke "make"
+ `(,@(if parallel-build?
+ `("-j" ,(number->string (parallel-job-count)))
+ '())
+ ,@make-flags)))))
+ #:tests? #f)) ; no test suite
+ (home-page "https://github.com/tomaspinho/rtl8821ce")
+ (synopsis "Linux driver for Realtek RTL8821CE wireless network adapters")
+ (description "This is Realtek's RTL8821CE Linux driver for wireless
+network adapters.")
+ ;; Rejected by Guix beause it contains a binary blob in:
+ ;; hal/rtl8821c/hal8821c_fw.c
+ (license gpl2))))
+
+(define-public rtl8821cu-linux-module
+ (let ((commit "a41ef7cabd1aa36fa2b4eb63a71cf719bff11b72")
+ (revision "1"))
+ (package
+ (name "rtl8821cu-linux-module")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/morrownr/8821cu-20210916")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0fnv4gm4adnf8gbjzc2lljh2a3i111159qira3w0qm1zhyqadaq0"))))
+ (build-system linux-module-build-system)
+ (arguments
+ (list
+ #:make-flags #~(list (string-append "CC="
+ #$(cc-for-target))
+ (string-append "KSRC="
+ (assoc-ref %build-inputs
+ "linux-module-builder")
+ "/lib/modules/build"))
+ #:phases #~(modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key (make-flags '())
+ (parallel-build? #t) #:allow-other-keys)
+ (apply invoke "make"
+ `(,@(if parallel-build?
+ `("-j" ,(number->string (parallel-job-count)))
+ '()) ,@make-flags)))))
+ #:tests? #f))
+ (home-page "https://github.com/morrownr/8821cu-20210916")
+ (synopsis "Linux driver for Realtek USB WiFi adapters")
+ (description
+ "Linux driver for USB WiFi adapters that are based on the
+Realtek RTL8811CU, RTL8821CU, RTL8821CUH and RTL8731AU chipsets.
+
+To work, in addition to installing the driver, you need
+to disable the conflicting rtw88 driver:
+
+@example
+(operating-system
+ ;; ...
+ ;; Blacklist conflicting kernel modules.
+ (kernel-arguments '(\"modprobe.blacklist=rtw88_8821cu\"))
+ (kernel-loadable-modules (list rtl8821cu-linux-module)))
+@end example")
+ ;; Rejected by Guix beause it contains a binary blob in:
+ ;; hal/rtl8821c/hal8821c_fw.c
+ (license (nonfree
+ "https://github.com/morrownr/8821cu-20210916/blob/main/LICENSE")))))
+
+(define-public rtl8812au-aircrack-ng-linux-module
+ (let ((commit "35308f4dd73e77fa572c48867cce737449dd8548")
+ (revision "11"))
+ (package
+ (inherit rtl8821ce-linux-module)
+ (name "rtl8812au-aircrack-ng-linux-module")
+ (version (git-version "5.6.4.2" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/aircrack-ng/rtl8812au")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1clqrgmq5fhzybbiapmdbhg5qfx9k21r0hqa9pqmyinaqhvfnhfj"))
+ (modules '((guix build utils)))
+ (snippet
+ #~(begin
+ ;; Remove bundled tarballs, APKs, word lists, speadsheets,
+ ;; and other unnecessary unlicenced things.
+ (for-each delete-file-recursively (list "android"
+ "docs"
+ "tools"))))))
+ (supported-systems '("x86_64-linux" "i686-linux"))
+ (home-page "https://github.com/aircrack-ng/rtl8812au")
+ (synopsis "Linux driver for Realtek USB wireless network adapters")
+ (description
+ "This is Realtek's rtl8812au Linux driver for USB 802.11n wireless
+network adapters, modified by the aircrack-ng project to support monitor mode
+and frame injection. It provides a @code{88XXau} kernel module that supports
+RTL8812AU, RTL8821AU, and RTL8814AU chips.")
+ ;; Rejected by Guix beause it contains a binary blob in:
+ ;; hal/rtl8812a/hal8812a_fw.c
+ (license gpl2+))))
+
+(define-public r8168-linux-module
+ (package
+ (name "r8168-linux-module")
+ (version "8.052.01")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mtorromeo/r8168")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "01mi7hh92nc7jaxkfrpz7j0ci78djrhgmq0im4k1270mwmvr0yzj"))))
+ (arguments
+ (list #:tests? #f))
+ (build-system linux-module-build-system)
+ (home-page "https://github.com/mtorromeo/r8168")
+ (synopsis "Linux driver for Realtek PCIe network adapters")
+ (description
+ "Linux driver for Realtek PCIe network adapters. If the r8169 kernel module is
+giving you trouble, you can try this module.")
+ (license gpl2)))
+
(define broadcom-sta-version "6.30.223.271")
+(define (broadcom-sta-patch name commit hash)
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com/NixOS/nixpkgs/"
+ commit
+ "/pkgs/os-specific/linux/broadcom-sta/"
+ name
+ ".patch"))
+ (sha256
+ (base32
+ hash))))
+
(define broadcom-sta-x86_64-source
(origin
(method url-fetch/tarbomb)
@@ -613,29 +986,30 @@ network adapters.")
(string-replace-substring broadcom-sta-version "." "_")
".tar.gz"))
(patches
- (parameterize
- ((%patch-path
- (map (lambda (directory)
- (string-append directory "/nongnu/packages/patches"))
- %load-path)))
- ;; https://github.com/NixOS/nixpkgs/tree/master/pkgs/os-specific/linux/broadcom-sta
- ;; https://git.archlinux.org/svntogit/community.git/tree/trunk?h=packages/broadcom-wl-dkms
- (search-patches "broadcom-sta-gcc.patch"
- "broadcom-sta-license.patch"
- "broadcom-sta-null-pointer-fix.patch"
- "broadcom-sta-rdtscl.patch"
- "broadcom-sta-linux-4.7.patch"
- "broadcom-sta-linux-4.8.patch"
- "broadcom-sta-debian-fix-kernel-warnings.patch"
- "broadcom-sta-linux-4.11.patch"
- "broadcom-sta-linux-4.12.patch"
- "broadcom-sta-linux-4.15.patch"
- "broadcom-sta-fix_mac_profile_discrepancy.patch"
- "broadcom-sta-linux-5.1.patch"
- ;; source: https://github.com/NixOS/nixpkgs/commit/8ce65087c333097ab714d23800b69fc471ec48ca
- "broadcom-sta-linux-5.6.patch"
- "broadcom-sta-linux-5.9.patch"
- "broadcom-sta-linux-5.10.patch")))
+ ;; Keep these in sync with the list at
+ ;; https://github.com/NixOS/nixpkgs/tree/master/pkgs/os-specific/linux/broadcom-sta.
+ ;; Nixpkgs is good about keeping broadcom patches up to date so updating
+ ;; for a new kernel release should be as simple as chaging the commit to
+ ;; the newest available and adding any new patches.
+ (let ((commit "355042e2ff5933b245e804c5eaff4ec3f340e71b"))
+ (list
+ (broadcom-sta-patch "i686-build-failure" commit "1522w2gb698svlkb2b4lijbd740agvs2ibpz4g0jlv8v31cybkf4")
+ (broadcom-sta-patch "license" commit "0rwlhafcmpp97cknqwv8gwf8sbxgqavgci1ywfkdxiylh4mhcvhr")
+ (broadcom-sta-patch "linux-4.7" commit "1nn1p6j77s9zfpxy5gl6qg1kha45pc7ww0yfkn5dmhazi288wamf")
+ (broadcom-sta-patch "linux-4.8" commit "0bjx4ayi30jbdm3sh38p52d6dnb3c44mqzqi8g51hhbn1kghkmq9")
+ (broadcom-sta-patch "linux-4.11" commit "1s3n87v9cn3qicd5v4wzj20psl4gcn1ghz0fnsq60n05rriicywp")
+ (broadcom-sta-patch "linux-4.12" commit "1kj7sfnw9hxjxzqm48565vniq7fkhapaqadfpw6l9bcnpf53xld3")
+ (broadcom-sta-patch "linux-4.15" commit "0bvk7nrvqa066dpn6vvb6x00yrxa37iqv87135kay9mllmkjd70b")
+ (broadcom-sta-patch "linux-5.1" commit "1kykpzhs19dwww6grav3qxsd28kn8y84i4b4csx2y5m2j629ncn0")
+ (broadcom-sta-patch "linux-5.6" commit "0v1jkaf60jgjkrjfcmx1gin4b65cdv39glqy7l3cswkmzb60lz4l")
+ (broadcom-sta-patch "linux-5.9" commit "1sgmbaahydk4j3i1jf8q1fz3a210fmakrpz0w1n9v3dcn23ladah")
+ (broadcom-sta-patch "linux-5.17" commit "1qsllvykhs3nvjwv8d6bgsm2sc9a1lxf8yqf6fa99p60ggd253ps")
+ (broadcom-sta-patch "linux-5.18" commit "1img0a0vqnkmq4c21aywq2ajyigzcfhbbpg1hw9nx7cbj9hf6d0l")
+ (broadcom-sta-patch "linux-6.0" commit "0rv74j5giafzl19f01yvfa5rgvsdvcimxzhks2fp44wpnxq241nb")
+ (broadcom-sta-patch "linux-6.1" commit "1pvx1h7iimcbfqdc13n1980ngxk9q6iyip8svn293x4h7jn472kf")
+ (broadcom-sta-patch "pedantic-fix" commit "1kxmw1iyxnfwad75h981sak5qk16p81xy1f2qxss2d0v97vkfkl5")
+ (broadcom-sta-patch "null-pointer-fix" commit "15c2vxgf7v5wy4s8w9jk7irf3fxxghy05gxmav1ss73a2azajdx7")
+ (broadcom-sta-patch "gcc" commit "0jcqk2vapyy2pbsjv9n8b3qp6vqz17d6s07cr04cx7075q7yhz5h"))))
(sha256
(base32
"1gj485qqr190idilacpxwgqyw21il03zph2rddizgj7fbd6pfyaz"))))
@@ -661,7 +1035,7 @@ network adapters.")
(_ broadcom-sta-i686-source)))
(build-system linux-module-build-system)
(arguments
- `(#:linux ,linux-lts
+ `(#:linux ,linux
#:tests? #f))
(supported-systems '("i686-linux" "x86_64-linux"))
(home-page "https://www.broadcom.com/support/802.11")
@@ -682,10 +1056,7 @@ Linux device driver for the following chipsets:
@item BCM4331
@item BCM4352
@item BCM4360
-@end itemize
-
-It is recommended that anyone who uses this package stays with Linux LTS
-releases.")
+@end itemize")
(license (nonfree "https://www.broadcom.com/support/802.11"))))
(define-public broadcom-bt-firmware
@@ -780,10 +1151,44 @@ chipsets from Broadcom:
"/b60fa04881bf8f9b9d578f57d1dfa596cae2a82e"
"/LICENSE.broadcom_bcm20702")))))
+(define-public facetimehd
+ (package
+ (name "facetimehd")
+ (version "0.6.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/patjak/facetimehd")
+ (commit version)))
+ (file-name (git-file-name "facetimehd" version))
+ (sha256
+ (base32
+ "1g0ky9w5klkjndf30mjymq78r6yls9gri9x702nn8qkmgkjbqdsg"))))
+ (build-system linux-module-build-system)
+ (arguments
+ '(#:tests? #f))
+ (synopsis "Linux driver for the FacetimeHD (Broadcom 1570) PCIe webcam")
+ (description "Linux driver for the FacetimeHD webcam. According to Apple the
+following models contain a Facetime HD camera and should be compatible with this
+driver:
+@itemize
+@item iMac (21,5\", since mid 2011)
+@item iMac (27\", since mid 2011)
+@item MacBook Air (since mid 2011)
+@item MacBook Pro (15\", since early 2011)
+@item MacBook Pro (17\", since early 2011)
+@item MacBook Pro (13\", since early 2011)
+@item Thunderbolt display
+@end itemize")
+ (home-page "https://github.com/patjak/facetimehd")
+ (license gpl2)
+ (supported-systems '("i686-linux" "x86_64-linux"))))
+
(define-public intel-microcode
(package
(name "intel-microcode")
- (version "20220809")
+ (version "20231114")
(source
(origin
(method git-fetch)
@@ -794,15 +1199,15 @@ chipsets from Broadcom:
(commit (string-append "microcode-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0252ig6lp39rh87zgiadsmlwjwjr6q0275k5j28rpbq6f108pjxx"))))
+ (base32 "07c7hkwpvb9056s73s55sg04cxr1d9n1sd9r1g7sm3gh70yc17ki"))))
(build-system copy-build-system)
(arguments
- `(#:install-plan
- (let ((doc (string-append "share/doc/" ,name "-" ,version "/")))
- `(("intel-ucode" "lib/firmware/")
- ("README.md" ,doc)
- ("releasenote.md" ,doc)
- ("security.md" ,doc)))))
+ (list #:install-plan
+ #~(let ((doc (string-append "share/doc/" #$name "-" #$version "/")))
+ `(("intel-ucode" "lib/firmware/")
+ ("README.md" ,doc)
+ ("releasenote.md" ,doc)
+ ("security.md" ,doc)))))
(home-page
"https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files")
(synopsis "Processor microcode firmware for Intel CPUs")
@@ -836,16 +1241,15 @@ documented in the respective processor revision guides.")
(define-public sof-firmware
(package
(name "sof-firmware")
- (version "1.7")
+ (version "2.2.6")
(source
(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/thesofproject/sof-bin")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
+ (method url-fetch)
+ (uri (string-append "https://github.com/thesofproject/sof-bin/releases/download/v"
+ version "/sof-bin-v" version ".tar.gz"))
(sha256
- (base32 "1fb4rxgg3haxqg2gcm89g7af6v0a0h83c1ar2fyfa8h8pcf7hik7"))))
+ (base32
+ "018901g5hshrqf2d0rn7yhzxcy4gmdc4v6167df880kdcfkw48lk"))))
(build-system copy-build-system)
(arguments
`(#:install-plan
diff --git a/nongnu/packages/lisp.scm b/nongnu/packages/lisp.scm
index a6c6948..527dd9f 100644
--- a/nongnu/packages/lisp.scm
+++ b/nongnu/packages/lisp.scm
@@ -1,31 +1,25 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022 Pierre Neidhardt <mail@ambrevar.xyz>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2023 André A. Gomes <andremegafone@gmail.com>
(define-module (nongnu packages lisp)
#:use-module (ice-9 match)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages node)
+ #:use-module (gnu packages lisp)
+ #:use-module (gnu packages lisp-xyz)
+ ;; #:use-module (gnu packages lisp-check)
+ #:use-module (nongnu packages electron)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system asdf)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (nonguix build-system binary)
+ #:use-module ((guix licenses) #:prefix license:)
#:use-module ((nonguix licenses) #:prefix license:))
;; TODO: Split into differents outputs:
@@ -53,7 +47,7 @@
"/acl" version "express-" arch2 ".tbz2")))
(sha256
(base32
- "0ir1irpq5hhcmy0yp5p2jpnq5if1gr1fgxybqyvppx1j1jdfkcsp"))))
+ "1zxajn238aibsv0qknm5kiqjiplb4ggynjsxar390rwznh57qc46"))))
(build-system binary-build-system)
(inputs (list bash-minimal zlib openssl))
(arguments
@@ -75,6 +69,16 @@
"--directory=source" "-xvf" (assoc-ref inputs "source")
"--strip-components" "1")
(chdir "source")))
+ (add-after 'install 'update-license
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute*
+ (string-append (assoc-ref outputs "out")
+ "/share/allegro-cl/devel.lic")
+ ((";; License created on January 25, 2021, 8:32:19\\.")
+ ";; License created on January 17, 2023, 10:42:54.")
+ ((";; Expiration date: 2023-1-31 00:00:00")
+ ";; Expiration date: 2024-1-31 00:00:00"))
+ #t))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -119,3 +123,36 @@ then open a browser at http://localhost:PORT, where PORT is the indicated port."
(home-page "https://franz.com/products/allegrocl/")
(license (license:nonfree
"https://franz.com/ftp/pub/legal/ACL-Express-20170301.pdf"))))
+
+(define-public sbcl-cl-electron
+ (let ((commit "458a60d8c9baae71906294ffae891c3d0686c672")
+ (revision "2"))
+ (package
+ (name "sbcl-cl-electron")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/atlas-engineer/cl-electron")
+ (commit commit)))
+ (file-name (git-file-name "cl-electron" version))
+ (sha256
+ (base32 "1ya6y55kv0g3h19ifnmwbc752p00s9mj1b1n4ljw4n7ycxmdpb24"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs (list ;; sbcl-lisp-unit2
+ sbcl))
+ (inputs (list electron node
+ sbcl-cl-json sbcl-iolib sbcl-cl-str sbcl-nclasses
+ sbcl-parenscript sbcl-bordeaux-threads))
+ (synopsis "Common Lisp interface to Electron")
+ (home-page "https://github.com/atlas-engineer/cl-electron")
+ (description "@command{cl-electron} is a binding to Electron for
+Common Lisp.")
+ (license license:bsd-3))))
+
+(define-public cl-electron
+ (sbcl-package->cl-source-package sbcl-cl-electron))
+
+(define-public ecl-cl-electron
+ (sbcl-package->ecl-package sbcl-cl-electron))
diff --git a/nongnu/packages/messaging.scm b/nongnu/packages/messaging.scm
new file mode 100644
index 0000000..74e65ed
--- /dev/null
+++ b/nongnu/packages/messaging.scm
@@ -0,0 +1,407 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2021, 2022 PantherX OS Team <team@pantherx.org>
+;;; Copyright © 2022, 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022 Evgenii Lepikhin <johnlepikhin@gmail.com>
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2023 Raven Hallsby <karl@hallsby.org>
+
+(define-module (nongnu packages messaging)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages kerberos)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages nss)
+ #:use-module (gnu packages pulseaudio)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages xorg)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module ((guix licenses) :prefix license:)
+ #:use-module (nonguix build-system binary)
+ #:use-module (nonguix build-system chromium-binary)
+ #:use-module ((nonguix licenses) :prefix license:)
+ #:use-module (ice-9 match))
+
+(define-public element-desktop
+ (package
+ (name "element-desktop")
+ (version "1.11.57")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "https://packages.riot.im/debian/pool/main/e/" name "/" name "_" version
+ "_amd64.deb"))
+ (sha256
+ (base32 "05318i6z5kkzi01ygr77g5ij0hs4xmy0j23hznkqc4zia02q1vgx"))))
+ (supported-systems '("x86_64-linux"))
+ (build-system chromium-binary-build-system)
+ (arguments
+ (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
+ #:wrapper-plan
+ #~'("lib/Element/element-desktop")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'binary-unpack 'setup-cwd
+ (lambda _
+ (copy-recursively "usr/" ".")
+ ;; Use the more standard lib directory for everything.
+ (rename-file "opt/" "lib")
+ ;; Remove unneeded files.
+ (delete-file-recursively "usr")
+ ;; Fix the .desktop file binary location.
+ (substitute* '("share/applications/element-desktop.desktop")
+ (("/opt/Element/")
+ (string-append #$output "/bin/")))))
+ (add-after 'install 'symlink-binary-file
+ (lambda _
+ (mkdir-p (string-append #$output "/bin"))
+ (symlink (string-append #$output "/lib/Element/element-desktop")
+ (string-append #$output "/bin/element-desktop"))))
+ (add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
+ (lambda _
+ (wrap-program (string-append #$output "/lib/Element/element-desktop")
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-join
+ (list
+ (string-append #$output "/lib/Element"))
+ ":")))))))))
+ (home-page "https://github.com/vector-im/element-desktop")
+ (synopsis "Matrix collaboration client for desktop")
+ (description "Element Desktop is a Matrix client for desktop with Element Web at
+its core.")
+ ;; not working?
+ (properties
+ '((release-monitoring-url . "https://github.com/vector-im/element-desktop/releases")))
+ (license license:asl2.0)))
+
+(define-public signal-desktop
+ (package
+ (name "signal-desktop")
+ (version "6.46.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "https://updates.signal.org/desktop/apt/pool/s/" name "/" name "_" version
+ "_amd64.deb"))
+ (sha256
+ (base32 "1pjv8v1hhycwbvqvih83axv41jkyksq6d9152fqic9d61lbb1kpa"))))
+ (supported-systems '("x86_64-linux"))
+ (build-system chromium-binary-build-system)
+ (arguments
+ (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
+ #:wrapper-plan
+ #~'("lib/Signal/signal-desktop")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'binary-unpack 'setup-cwd
+ (lambda _
+ (copy-recursively "usr/" ".")
+ ;; Use the more standard lib directory for everything.
+ (rename-file "opt/" "lib")
+ ;; Remove unneeded files.
+ (delete-file-recursively "usr")
+ ;; Fix the .desktop file binary location.
+ (substitute* '("share/applications/signal-desktop.desktop")
+ (("/opt/Signal/")
+ (string-append #$output "/bin/")))))
+ (add-after 'install 'symlink-binary-file
+ (lambda _
+ (mkdir-p (string-append #$output "/bin"))
+ (symlink (string-append #$output "/lib/Signal/signal-desktop")
+ (string-append #$output "/bin/signal-desktop"))))
+ (add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
+ (lambda _
+ (wrap-program (string-append #$output "/lib/Signal/signal-desktop")
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-join
+ (list
+ (string-append #$output "/lib/Signal"))
+ ":")))))))))
+ (home-page "https://signal.org/")
+ (synopsis "Private messenger using the Signal protocol")
+ (description "Signal Desktop is an Electron application that links with Signal on Android
+or iOS.")
+ ;; doesn't work?
+ (properties
+ '((release-monitoring-url . "https://github.com/signalapp/Signal-Desktop/releases")))
+ (license license:agpl3)))
+
+(define-public zoom
+ (package
+ (name "zoom")
+ (version "5.17.5.2543")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://cdn.zoom.us/prod/" version "/zoom_x86_64.tar.xz"))
+ (file-name (string-append name "-" version "-x86_64.tar.xz"))
+ (sha256
+ (base32 "06m53d3jrpiq1z5wd7m61lb3w8m8g72iaqx5sixnzn290gyyzgim"))))
+ (supported-systems '("x86_64-linux"))
+ (build-system binary-build-system)
+ (arguments
+ (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
+ #:patchelf-plan
+ ;; Note: it seems like some (all?) of these only do anything in
+ ;; LD_LIBRARY_PATH, or at least needed there as well.
+ #~(let ((libs '("alsa-lib"
+ "at-spi2-atk"
+ "at-spi2-core"
+ "atk"
+ "cairo"
+ "cups"
+ "dbus"
+ "eudev"
+ "expat"
+ "fontconfig-minimal"
+ "gcc"
+ "glib"
+ "gtk+"
+ "libdrm"
+ "libx11"
+ "libxcb"
+ "libxcomposite"
+ "libxcursor"
+ "libxdamage"
+ "libxext"
+ "libxfixes"
+ "libxi"
+ "libxkbcommon"
+ "libxkbfile"
+ "libxrandr"
+ "libxshmfence"
+ "libxtst"
+ "mesa"
+ "nspr"
+ "pango"
+ "pulseaudio"
+ "xcb-util-image"
+ "xcb-util-keysyms"
+ "zlib")))
+ `(("lib/zoom/ZoomLauncher"
+ ,libs)
+ ("lib/zoom/zoom"
+ ,libs)
+ ("lib/zoom/zopen"
+ ,libs)
+ ("lib/zoom/aomhost"
+ ,libs)))
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda _
+ (invoke "tar" "xvf" #$source)
+ ;; Use the more standard lib directory for everything.
+ (mkdir-p "lib")
+ (rename-file "zoom/" "lib/zoom")))
+ (add-after 'install 'wrap-where-patchelf-does-not-work
+ (lambda _
+ (wrap-program (string-append #$output "/lib/zoom/zopen")
+ `("LD_LIBRARY_PATH" prefix
+ ,(list #$@(map (lambda (pkg)
+ (file-append (this-package-input pkg) "/lib"))
+ '("fontconfig-minimal"
+ "freetype"
+ "gcc"
+ "glib"
+ "libxcomposite"
+ "libxdamage"
+ "libxkbcommon"
+ "libxkbfile"
+ "libxrandr"
+ "libxrender"
+ "zlib")))))
+ (wrap-program (string-append #$output "/lib/zoom/zoom")
+ '("QML2_IMPORT_PATH" = ())
+ '("QT_PLUGIN_PATH" = ())
+ '("QT_SCREEN_SCALE_FACTORS" = ())
+ `("FONTCONFIG_PATH" ":" prefix
+ (,(string-join
+ (list
+ (string-append #$(this-package-input "fontconfig-minimal") "/etc/fonts")
+ #$output)
+ ":")))
+ `("LD_LIBRARY_PATH" prefix
+ ,(list (string-append #$(this-package-input "nss") "/lib/nss")
+ #$@(map (lambda (pkg)
+ (file-append (this-package-input pkg) "/lib"))
+ ;; TODO: Reuse this long list as it is
+ ;; needed for aomhost. Or perhaps
+ ;; aomhost has a shorter needed list,
+ ;; but untested.
+ '("alsa-lib"
+ "atk"
+ "at-spi2-atk"
+ "at-spi2-core"
+ "cairo"
+ "cups"
+ "dbus"
+ "eudev"
+ "expat"
+ "gcc"
+ "glib"
+ "mesa"
+ "mit-krb5"
+ "nspr"
+ "libxcb"
+ "libxcomposite"
+ "libxdamage"
+ "libxext"
+ "libxkbcommon"
+ "libxkbfile"
+ "libxrandr"
+ "libxshmfence"
+ "pango"
+ "pulseaudio"
+ "xcb-util"
+ "xcb-util-image"
+ "xcb-util-keysyms"
+ "xcb-util-wm"
+ "xcb-util-renderutil"
+ "zlib")))))
+ (wrap-program (string-append #$output "/lib/zoom/aomhost")
+ `("FONTCONFIG_PATH" ":" prefix
+ (,(string-join
+ (list
+ (string-append #$(this-package-input "fontconfig-minimal") "/etc/fonts")
+ #$output)
+ ":")))
+ `("LD_LIBRARY_PATH" prefix
+ ,(list (string-append #$(this-package-input "nss") "/lib/nss")
+ #$@(map (lambda (pkg)
+ (file-append (this-package-input pkg) "/lib"))
+ '("alsa-lib"
+ "atk"
+ "at-spi2-atk"
+ "at-spi2-core"
+ "cairo"
+ "cups"
+ "dbus"
+ "eudev"
+ "expat"
+ "gcc"
+ "glib"
+ "mesa"
+ "mit-krb5"
+ "nspr"
+ "libxcb"
+ "libxcomposite"
+ "libxdamage"
+ "libxext"
+ "libxkbcommon"
+ "libxkbfile"
+ "libxrandr"
+ "libxshmfence"
+ "pango"
+ "pulseaudio"
+ "xcb-util"
+ "xcb-util-image"
+ "xcb-util-keysyms"
+ "xcb-util-wm"
+ "xcb-util-renderutil"
+ "zlib")))))))
+ (add-after 'wrap-where-patchelf-does-not-work 'rename-binary
+ ;; IPC (for single sign-on and handling links) fails if the
+ ;; name does not end in "zoom," so rename the real binary.
+ ;; Thanks to the Nix packagers for figuring this out.
+ (lambda _
+ (rename-file (string-append #$output "/lib/zoom/.zoom-real")
+ (string-append #$output "/lib/zoom/.zoom"))
+ (substitute* (string-append #$output "/lib/zoom/zoom")
+ (("zoom-real")
+ "zoom"))))
+ (add-after 'rename-binary 'symlink-binaries
+ (lambda _
+ (delete-file (string-append #$output "/environment-variables"))
+ (mkdir-p (string-append #$output "/bin"))
+ (symlink (string-append #$output "/lib/zoom/aomhost")
+ (string-append #$output "/bin/aomhost"))
+ (symlink (string-append #$output "/lib/zoom/zoom")
+ (string-append #$output "/bin/zoom"))
+ (symlink (string-append #$output "/lib/zoom/zopen")
+ (string-append #$output "/bin/zopen"))
+ (symlink (string-append #$output "/lib/zoom/ZoomLauncher")
+ (string-append #$output "/bin/ZoomLauncher"))))
+ (add-after 'symlink-binaries 'create-desktop-file
+ (lambda _
+ (let ((apps (string-append #$output "/share/applications")))
+ (mkdir-p apps)
+ (make-desktop-entry-file
+ (string-append apps "/zoom.desktop")
+ #:name "Zoom"
+ #:generic-name "Zoom Client for Linux"
+ #:exec (string-append #$output "/bin/ZoomLauncher %U")
+ #:mime-type (list
+ "x-scheme-handler/zoommtg"
+ "x-scheme-handler/zoomus"
+ "x-scheme-handler/tel"
+ "x-scheme-handler/callto"
+ "x-scheme-handler/zoomphonecall"
+ "application/x-zoom")
+ #:categories '("Network" "InstantMessaging"
+ "VideoConference" "Telephony")
+ #:startup-w-m-class "zoom"
+ #:comment
+ '(("en" "Zoom Video Conference")
+ (#f "Zoom Video Conference")))))))))
+ (native-inputs (list tar))
+ (inputs (list alsa-lib
+ at-spi2-atk
+ at-spi2-core
+ atk
+ bash-minimal
+ cairo
+ cups
+ dbus
+ eudev
+ expat
+ fontconfig
+ freetype
+ `(,gcc "lib")
+ glib
+ gtk+
+ libdrm
+ librsvg
+ libx11
+ libxcb
+ libxcomposite
+ libxdamage
+ libxext
+ libxfixes
+ libxkbcommon
+ libxkbfile
+ libxrandr
+ libxrender
+ libxshmfence
+ mesa
+ mit-krb5
+ nspr
+ nss
+ pango
+ pulseaudio
+ xcb-util
+ xcb-util-image
+ xcb-util-keysyms
+ xcb-util-renderutil
+ xcb-util-wm
+ zlib))
+ (home-page "https://zoom.us/")
+ (synopsis "Video conference client")
+ (description "The Zoom video conferencing and messaging client. Zoom must be run via an
+app launcher to use its .desktop file, or with @code{ZoomLauncher}.")
+ (license (license:nonfree "https://explore.zoom.us/en/terms/"))))
diff --git a/nongnu/packages/mozilla.scm b/nongnu/packages/mozilla.scm
index b1da29f..f159446 100644
--- a/nongnu/packages/mozilla.scm
+++ b/nongnu/packages/mozilla.scm
@@ -1,7 +1,7 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
@@ -14,27 +14,13 @@
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2019, 2020 Adrian Malacoda <malacoda@monarch-pass.net>
-;;; Copyright © 2020-2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2020-2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
-;;; Copyright © 2021, 2022 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2021, 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 Pierre Langlois <pierre.langlois@gmx.com>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2023 Tomas Volf <wolf@wolfsden.cz>
(define-module (nongnu packages mozilla)
#:use-module (guix build-system gnu)
@@ -60,6 +46,7 @@
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages hunspell)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages jemalloc)
@@ -67,7 +54,6 @@
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
- #:use-module (gnu packages libreoffice) ;for hunspell
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages m4)
@@ -79,473 +65,51 @@
#:use-module (gnu packages python)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
+ #:use-module (gnu packages speech)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages video)
#:use-module (nongnu packages wasm)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg))
-;; Copied from guix/gnu/packages/rust.scm
-(define* (rust-uri version #:key (dist "static"))
- (string-append "https://" dist ".rust-lang.org/dist/"
- "rustc-" version "-src.tar.gz"))
+;; Define the versions of rust needed to build firefox, trying to match
+;; upstream. See the file taskcluster/ci/toolchain/rust.yml at
+;; https://searchfox.org under the particular firefox release, like
+;; mozilla-esr102.
+(define-public rust-firefox-esr rust) ; 1.60 is the default in Guix
+(define-public rust-firefox rust) ; 1.65 is the minimum
-(define* (rust-bootstrapped-package base-rust version checksum)
- "Bootstrap rust VERSION with source checksum CHECKSUM using BASE-RUST."
+(define icu4c-73
(package
- (inherit base-rust)
- (version version)
- (source
- (origin
- (inherit (package-source base-rust))
- (uri (rust-uri version))
- (sha256 (base32 checksum))))
- (native-inputs
- (alist-replace "cargo-bootstrap" (list base-rust "cargo")
- (alist-replace "rustc-bootstrap" (list base-rust)
- (package-native-inputs base-rust))))))
-
-(define rust-firefox-1.58
- (rust-bootstrapped-package
- rust "1.58.1" "1iq7kj16qfpkx8gvw50d8rf7glbm6s0pj2y1qkrz7mi56vfsyfd8"))
-
-(define rust-firefox-1.59
- (rust-bootstrapped-package
- rust-firefox-1.58 "1.59.0" "1yc5bwcbmbwyvpfq7zvra78l0r8y3lbv60kbr62fzz2vx2pfxj57"))
-
-(define-public rust-firefox rust-firefox-1.59)
-
-;; rust-cbindgen-0.23/0.24 dependencies
-(define-public rust-unicode-ident-1
- (package
- (name "rust-unicode-ident")
- (version "1.0.3")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "unicode-ident" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1bqswc96ws8l6k7xx56dg521a3l5imi3mhlcz7rsi6a92mxb7xf4"))))
- (build-system cargo-build-system)
- (arguments
- `(#:skip-build? #t))
- (home-page "https://github.com/dtolnay/unicode-ident")
- (synopsis
- "Better optimized implementation of the older unicode-xid crate")
- (description
- "Determine whether characters have the XID_Start or XID_Continue properties
-according to Unicode Standard Annex #31")
- (license (list license:unicode license:expat))))
-
-(define-public rust-proc-macro2-1.0.43
- (package
- (inherit rust-proc-macro2-1)
- (name "rust-proc-macro2")
- (version "1.0.43")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "proc-macro2" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1avvpf4qki8mg2na60yr3afbsfl5p6vllac6516xgwy93g3a4b0a"))))
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-unicode-ident" ,rust-unicode-ident-1))))))
-
-(define-public rust-syn-1.0.99
- (package
- (inherit rust-syn-1)
- (name "rust-syn")
- (version "1.0.99")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "syn" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "04xba78p559nl737llv7nqcwm723dp6ah5bbp0h5w1amqrpfznsq"))))
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2-1.0.43)
- ("rust-quote" ,rust-quote-1)
- ("rust-unicode-ident" ,rust-unicode-ident-1))))))
-
-(define-public rust-textwrap-0.15
- (package
- (inherit rust-textwrap-0.12)
- (name "rust-textwrap")
- (version "0.15.0")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "textwrap" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1yw513k61lfiwgqrfvsjw1a5wpvm0azhpjr2kr0jhnq9c56is55i"))))
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-hyphenation" ,rust-hyphenation-0.8)
- ("rust-smawk" ,rust-smawk-0.3)
- ("rust-terminal-size" ,rust-terminal-size-0.1)
- ("rust-unicode-linebreak" ,rust-unicode-linebreak-0.1)
- ("rust-unicode-width" ,rust-unicode-width-0.1))))))
-
-(define-public rust-windows-x86-64-msvc-0.36
- (package
- (inherit rust-windows-x86-64-msvc-0.28)
- (name "rust-windows-x86-64-msvc")
- (version "0.36.1")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "windows_x86_64_msvc" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "103n3xijm5vr7qxr1dps202ckfnv7njjnnfqmchg8gl5ii5cl4f8"))))))
-
-(define-public rust-windows-x86-64-gnu-0.36
- (package
- (inherit rust-windows-x86-64-gnu-0.28)
- (name "rust-windows-x86-64-gnu")
- (version "0.36.1")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "windows_x86_64_gnu" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1qfrck3jnihymfrd01s8260d4snql8ks2p8yaabipi3nhwdigkad"))))))
-
-(define-public rust-windows-i686-msvc-0.36
- (package
- (inherit rust-windows-i686-msvc-0.28)
- (name "rust-windows-i686-msvc")
- (version "0.36.1")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "windows_i686_msvc" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "097h2a7wig04wbmpi3rz1akdy4s8gslj5szsx8g2v0dj91qr3rz2"))))))
-
-(define-public rust-windows-i686-gnu-0.36
- (package
- (inherit rust-windows-i686-gnu-0.28)
- (name "rust-windows-i686-gnu")
- (version "0.36.1")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "windows_i686_gnu" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1dm3svxfzamrv6kklyda9c3qylgwn5nwdps6p0kc9x6s077nq3hq"))))))
-
-(define-public rust-windows-aarch64-msvc-0.36
- (package
- (inherit rust-windows-aarch64-msvc-0.28)
- (name "rust-windows-aarch64-msvc")
- (version "0.36.1")
+ (inherit icu4c)
+ (version "73.1")
(source (origin
(method url-fetch)
- (uri (crate-uri "windows_aarch64_msvc" version))
- (file-name (string-append name "-" version ".tar.gz"))
+ (uri (string-append
+ "https://github.com/unicode-org/icu/releases/download/release-"
+ (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)
+ "/icu4c-"
+ (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
+ "-src.tgz"))
(sha256
(base32
- "0ixaxs2c37ll2smprzh0xq5p238zn8ylzb3lk1zddqmd77yw7f4v"))))))
+ "0iccpdvc0kvpww5a31k9gjkqigyz016i7v80r9zamd34w4fl6mx4"))))))
-(define-public rust-windows-sys-0.36
- (package
- (inherit rust-windows-sys-0.28)
- (name "rust-windows-sys")
- (version "0.36.1")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "windows-sys" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1lmqangv0zg1l46xiq7rfnqwsx8f8m52mqbgg2mrx7x52rd1a17a"))))
- (build-system cargo-build-system)
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.36)
- ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.36)
- ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.36)
- ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.36)
- ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.36))))))
-
-(define-public rust-hashbrown-0.12
- (package
- (inherit rust-hashbrown-0.11)
- (name "rust-hashbrown")
- (version "0.12.3")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "hashbrown" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1268ka4750pyg2pbgsr43f0289l5zah4arir2k4igx5a8c6fg7la"))))))
-
-(define-public rust-object-0.29
- (package
- (inherit rust-object-0.28)
- (name "rust-object")
- (version "0.29.0")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "object" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0lzblxwxcih7j4z2cfx9094caax97hlfm9n0y5hlavda6cn8n591"))))
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
- ("rust-crc32fast" ,rust-crc32fast-1)
- ("rust-flate2" ,rust-flate2-1)
- ("rust-hashbrown" ,rust-hashbrown-0.12)
- ("rust-indexmap" ,rust-indexmap-1)
- ("rust-memchr" ,rust-memchr-2)
- ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1)
- ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1)
- ("rust-wasmparser" ,rust-wasmparser-0.57))))))
-
-(define-public rust-object-0.27
- (package
- (inherit rust-object-0.28)
- (name "rust-object")
- (version "0.27.1")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "object" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1ygv9zgi9wz6q5f2z9xn72i0c97jjr1dgj30kbyicdhxk8zivb37"))))))
-
-(define-public rust-gimli-0.26
- (package
- (inherit rust-gimli-0.23)
- (name "rust-gimli")
- (version "0.26.2")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "gimli" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0pafbk64rznibgnvfidhm1pqxd14a5s9m50yvsgnbv38b8n0w0r2"))))))
-
-(define-public rust-addr2line-0.17
- (package
- (inherit rust-addr2line-0.14)
- (name "rust-addr2line")
- (version "0.17.0")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "addr2line" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0sw16zqy6w0ar633z69m7lw6gb0k1y7xj3387a8wly43ij5div5r"))))))
-
-(define-public rust-backtrace-0.3.66
- (package
- (inherit rust-backtrace-0.3)
- (name "rust-backtrace")
- (version "0.3.66")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "backtrace" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "19yrfx0gprqmzphmf6qv32g93w76ny5g751ks1abdkqnsqcl7f6a"))))
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-addr2line" ,rust-addr2line-0.17)
- ("rust-cc" ,rust-cc-1)
- ("rust-cfg-if" ,rust-cfg-if-1)
- ("rust-cpp-demangle" ,rust-cpp-demangle-0.3)
- ("rust-libc" ,rust-libc-0.2)
- ("rust-miniz-oxide" ,rust-miniz-oxide-0.5)
- ("rust-object" ,rust-object-0.29)
- ("rust-rustc-demangle" ,rust-rustc-demangle-0.1)
- ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
- ("rust-serde" ,rust-serde-1)
- ("rust-winapi" ,rust-winapi-0.3))))))
-
-(define-public rust-parking-lot-core-0.9
- (package
- (inherit rust-parking-lot-core-0.8)
- (name "rust-parking-lot-core")
- (version "0.9.3")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "parking_lot_core" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0ab95rljb99rm51wcic16jgbajcr6lgbqkrr21w7bc2wyb5pk8h9"))))
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-backtrace" ,rust-backtrace-0.3.66)
- ("rust-cfg-if" ,rust-cfg-if-1)
- ("rust-libc" ,rust-libc-0.2)
- ("rust-petgraph" ,rust-petgraph-0.6)
- ("rust-redox-syscall" ,rust-redox-syscall-0.2)
- ("rust-smallvec" ,rust-smallvec-1)
- ("rust-thread-id" ,rust-thread-id-4)
- ("rust-windows-sys" ,rust-windows-sys-0.36))))))
-
-(define-public rust-once-cell-1.13.0
- (package
- (inherit rust-once-cell-1)
- (name "rust-once-cell")
- (version "1.13.0")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "once_cell" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1qfqvgnwfzzwxd13ybvplzshaqwnjnna9ghcn0zgijaq0zixp9hq"))))
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-atomic-polyfill" ,rust-atomic-polyfill-0.1)
- ("rust-parking-lot-core" ,rust-parking-lot-core-0.9))))))
-
-(define-public rust-clap-lex-0.2
- (package
- (name "rust-clap-lex")
- (version "0.2.4")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "clap_lex" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1ib1a9v55ybnaws11l63az0jgz5xiy24jkdgsmyl7grcm3sz4l18"))))
- (build-system cargo-build-system)
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-os-str-bytes" ,rust-os-str-bytes-6))))
- (home-page "https://github.com/clap-rs/clap/tree/master/clap_lex")
- (synopsis "Minimal, flexible command line parser")
- (description "Minimal, flexible command line parser")
- (license (list license:expat license:asl2.0))))
-
-(define-public rust-clap-derive-3.2.15
- (package
- (inherit rust-clap-derive-3)
- (name "rust-clap-derive")
- (version "3.2.15")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "clap_derive" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1d2c4vs345fwihkd8cc7m6acbiydcwramkd5mnp36p0a7g6jm9cv"))))
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-heck" ,rust-heck-0.4)
- ("rust-proc-macro-error" ,rust-proc-macro-error-1)
- ("rust-proc-macro2" ,rust-proc-macro2-1.0.43)
- ("rust-quote" ,rust-quote-1)
- ("rust-syn" ,rust-syn-1.0.99))))))
-
-(define-public rust-clap-3.2.16
- (package
- (inherit rust-clap-3)
- (name "rust-clap")
- (version "3.2.16")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "clap" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1af06z8z7m3327yz1xvzxfjanclgpvvy3lssb745rig7adkbpnx3"))))
- (arguments
- `(#:skip-build? #t
- #:cargo-inputs (("rust-atty" ,rust-atty-0.2)
- ("rust-backtrace" ,rust-backtrace-0.3.66)
- ("rust-bitflags" ,rust-bitflags-1)
- ("rust-clap-derive" ,rust-clap-derive-3.2.15)
- ("rust-clap-lex" ,rust-clap-lex-0.2)
- ("rust-indexmap" ,rust-indexmap-1)
- ("rust-once-cell" ,rust-once-cell-1.13.0)
- ("rust-regex" ,rust-regex-1)
- ("rust-strsim" ,rust-strsim-0.10)
- ("rust-termcolor" ,rust-termcolor-1)
- ("rust-terminal-size" ,rust-terminal-size-0.1)
- ("rust-textwrap" ,rust-textwrap-0.15)
- ("rust-unicase" ,rust-unicase-2)
- ("rust-yaml-rust" ,rust-yaml-rust-0.4))))))
-
-(define-public rust-cbindgen-0.24
- (package
- (inherit rust-cbindgen-0.19)
- (name "rust-cbindgen")
- (version "0.24.3")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "cbindgen" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1yqxqsz2d0cppd8zwihk2139g5gy38wqgl9snj6rnk8gyvnqsdd6"))))
- (arguments
- `(#:cargo-inputs (("rust-clap" ,rust-clap-3.2.16)
- ("rust-heck" ,rust-heck-0.4)
- ("rust-indexmap" ,rust-indexmap-1)
- ("rust-log" ,rust-log-0.4)
- ("rust-proc-macro2" ,rust-proc-macro2-1.0.43)
- ("rust-quote" ,rust-quote-1)
- ("rust-serde" ,rust-serde-1)
- ("rust-serde-json" ,rust-serde-json-1)
- ("rust-syn" ,rust-syn-1.0.99)
- ("rust-tempfile" ,rust-tempfile-3)
- ("rust-toml" ,rust-toml-0.5))
- #:cargo-development-inputs (("rust-serial-test" ,rust-serial-test-0.5))))))
-
-;; Bug with firefox build (v101-102) with cbindgen-0.24, see
-;; https://bugzilla.mozilla.org/show_bug.cgi?id=1773259#c5 for possible patch
-;; (untested)
-(define-public rust-cbindgen-0.23
- (package
- (inherit rust-cbindgen-0.24)
- (name "rust-cbindgen")
- (version "0.23.0")
- (source (origin
- (method url-fetch)
- (uri (crate-uri "cbindgen" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "006rn3fn4njayjxr2vd24g1awssr9i3894nbmfzkybx07j728vav"))))))
-
-;; Update this id with every firefox update to it's release date.
-;; It's used for cache validation and therefor can lead to strange bugs.
-(define %firefox-esr-build-id "20220726000000")
+;; Update this id with every firefox update to its release date.
+;; It's used for cache validation and therefore can lead to strange bugs.
+(define %firefox-esr-build-id "20240219101823")
(define-public firefox-esr
(package
(name "firefox-esr")
- (version "102.1.0esr")
+ (version "115.8.0esr")
(source
(origin
(method url-fetch)
(uri (string-append "https://archive.mozilla.org/pub/firefox/releases/"
version "/source/firefox-" version ".source.tar.xz"))
(sha256
- (base32 "0q4lawxynvdiihlqnqiwxdp0ai71qq2fp6mkdsy5p08vgmr6wyv3"))))
+ (base32 "1slmp2v1q3my81z8kiym9rpxw5d9n4sn07v7hv99517w7vr8d05g"))))
(build-system gnu-build-system)
(arguments
(list
@@ -592,8 +156,14 @@ according to Unicode Standard Annex #31")
"--disable-elf-hack"))
#:imported-modules %cargo-utils-modules
#:modules `((ice-9 regex)
+ (ice-9 string-fun)
(ice-9 ftw)
+ (srfi srfi-1)
(srfi srfi-26)
+ (rnrs bytevectors)
+ (rnrs io ports)
+ (guix elf)
+ (guix build gremlin)
,@%gnu-build-system-modules)
#:phases
#~(modify-phases %standard-phases
@@ -663,6 +233,22 @@ according to Unicode Standard Annex #31")
(substitute* "build/RunCbindgen.py"
(("\"--frozen\",") ""))))
(delete 'bootstrap)
+ (add-before 'configure 'patch-SpeechDispatcherService.cpp
+ (lambda _
+ (let* ((lib "libspeechd.so.2")
+ (file "dom/media/webspeech/synth/speechd/SpeechDispatcherService.cpp")
+ (old-content (call-with-input-file file get-string-all)))
+ (substitute
+ file
+ `((,(format #f "~s" lib)
+ . ,(lambda (line _)
+ (string-replace-substring
+ line
+ lib
+ (string-append #$speech-dispatcher "/lib/" lib))))))
+ (if (string=? old-content
+ (call-with-input-file file get-string-all))
+ (error "substitute did nothing, phase requires an update")))))
(add-before 'configure 'set-build-id
;; Firefox will write the timestamp to output, which is harmful
;; for reproducibility, so change it to a fixed date. Use a
@@ -753,6 +339,19 @@ according to Unicode Standard Annex #31")
(lambda _ (invoke "./mach" "install")))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; The following two functions are from Guix's icecat package in
+ ;; (gnu packages gnuzilla). See commit
+ ;; b7a0935420ee630a29b7e5ac73a32ba1eb24f00b.
+ (define (runpath-of lib)
+ (call-with-input-file lib
+ (compose elf-dynamic-info-runpath
+ elf-dynamic-info
+ parse-elf
+ get-bytevector-all)))
+ (define (runpaths-of-input label)
+ (let* ((dir (string-append (assoc-ref inputs label) "/lib"))
+ (libs (find-files dir "\\.so$")))
+ (append-map runpath-of libs)))
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))
;; TODO: make me a loop again
@@ -763,6 +362,20 @@ according to Unicode Standard Annex #31")
;; For hardware video acceleration via VA-API
(libva-lib (string-append (assoc-ref inputs "libva")
"/lib"))
+ ;; VA-API is run in the RDD (Remote Data Decoder) sandbox
+ ;; and must be explicitly given access to files it needs.
+ ;; Rather than adding the whole store (as Nix had
+ ;; upstream do, see
+ ;; <https://github.com/NixOS/nixpkgs/pull/165964> and
+ ;; linked upstream patches), we can just follow the
+ ;; runpaths of the needed libraries to add everything to
+ ;; LD_LIBRARY_PATH. These will then be accessible in the
+ ;; RDD sandbox.
+ (rdd-whitelist
+ (map (cut string-append <> "/")
+ (delete-duplicates
+ (append-map runpaths-of-input
+ '("mesa" "ffmpeg")))))
(pulseaudio-lib (string-append (assoc-ref inputs "pulseaudio")
"/lib"))
;; For U2F and WebAuthn
@@ -771,7 +384,7 @@ according to Unicode Standard Annex #31")
"/share")))
(wrap-program (car (find-files lib "^firefox$"))
`("LD_LIBRARY_PATH" prefix (,mesa-lib ,libnotify-lib ,libva-lib
- ,pulseaudio-lib ,eudev-lib))
+ ,pulseaudio-lib ,eudev-lib ,@rdd-whitelist))
`("XDG_DATA_DIRS" prefix (,gtk-share))
`("MOZ_LEGACY_PROFILES" = ("1"))
`("MOZ_ALLOW_DOWNGRADE" = ("1"))))))
@@ -824,7 +437,7 @@ according to Unicode Standard Annex #31")
gtk+
gtk+-2
hunspell
- icu4c-71
+ icu4c-73
jemalloc
libcanberra
libevent
@@ -845,10 +458,12 @@ according to Unicode Standard Annex #31")
nspr-4.32
;; nss
pango
+ pipewire
pixman
pulseaudio
- startup-notification
+ speech-dispatcher
sqlite
+ startup-notification
eudev
unzip
zip
@@ -857,18 +472,18 @@ according to Unicode Standard Annex #31")
(list
alsa-lib
autoconf-2.13
- `(,rust-firefox "cargo")
- clang-12
- llvm-12
+ `(,rust-firefox-esr "cargo")
+ clang
+ llvm
wasm32-wasi-clang-toolchain
m4
nasm
- node
+ node-lts
perl
pkg-config
python
- rust-firefox
- rust-cbindgen-0.23
+ rust-firefox-esr
+ rust-cbindgen-0.24
which
yasm))
(home-page "https://mozilla.org/firefox/")
@@ -915,22 +530,22 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
((firefox) out))
#t))))))
-;; Update this id with every firefox update to it's release date.
-;; It's used for cache validation and therefor can lead to strange bugs.
-(define %firefox-build-id "20220809000000")
+;; Update this id with every firefox update to its release date.
+;; It's used for cache validation and therefore can lead to strange bugs.
+(define %firefox-build-id "20240219104035")
(define-public firefox
(package
(inherit firefox-esr)
(name "firefox")
- (version "103.0.2")
+ (version "123.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://archive.mozilla.org/pub/firefox/releases/"
version "/source/firefox-" version ".source.tar.xz"))
(sha256
- (base32 "1ajkshdsbbi4fdxdkjf632qaxzqrg4is6pd80m1sh5wwwgl86qbn"))))
+ (base32 "1dscgn1ymqi4zr29fpj43y8gaspc5wl7a59w657ws56vmnymm24y"))))
(arguments
(substitute-keyword-arguments (package-arguments firefox-esr)
((#:phases phases)
@@ -940,43 +555,14 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
(setenv "MOZ_BUILD_DATE" #$%firefox-build-id)))))))
(native-inputs
(modify-inputs (package-native-inputs firefox-esr)
- (replace "rust-cbindgen" rust-cbindgen-0.24)))
+ (replace "rust" rust-firefox)
+ (replace "rust:cargo" `(,rust-firefox "cargo"))
+ (replace "rust-cbindgen" rust-cbindgen-0.26)))
(description
"Full-featured browser client built from Firefox source tree, without
the official icon and the name \"firefox\".")))
-(define-public firefox/wayland
- (package
- (inherit firefox)
- (name "firefox-wayland")
- (native-inputs '())
- (inputs
- `(("bash" ,bash-minimal)
- ("firefox" ,firefox)))
- (build-system trivial-build-system)
- (arguments
- '(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let* ((bash (assoc-ref %build-inputs "bash"))
- (firefox (assoc-ref %build-inputs "firefox"))
- (out (assoc-ref %outputs "out"))
- (exe (string-append out "/bin/firefox")))
- (mkdir-p (dirname exe))
-
- (call-with-output-file exe
- (lambda (port)
- (format port "#!~a
-MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
- (string-append bash "/bin/bash")
- (string-append firefox "/bin/firefox"))))
- (chmod exe #o555)
-
- ;; Provide the manual and .desktop file.
- (copy-recursively (string-append firefox "/share")
- (string-append out "/share"))
- (substitute* (string-append
- out "/share/applications/firefox.desktop")
- ((firefox) out))
- #t))))))
+;; As of Firefox 121.0, Firefox uses Wayland by default. This means we no longer need a seperate package
+;; for Firefox on Wayland.
+(define-public firefox-wayland
+ (deprecated-package "firefox-wayland" firefox))
diff --git a/nongnu/packages/music.scm b/nongnu/packages/music.scm
new file mode 100644
index 0000000..dffd758
--- /dev/null
+++ b/nongnu/packages/music.scm
@@ -0,0 +1,103 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2022 Sughosha <sughosha@proton.me>
+;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+
+(define-module (nongnu packages music)
+ #:use-module (gnu packages audio)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages cpp)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages linux)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 regex)
+ #:use-module ((nonguix licenses) #:prefix license:)
+ #:use-module (nonguix build-system binary))
+
+(define-public reaper
+ (package
+ (name "reaper")
+ (version "6.73")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.reaper.fm/files/"
+ (version-major version)
+ ".x/reaper"
+ (string-replace-substring version "." "")
+ "_"
+ (match (%current-system)
+ ("x86_64-linux" "linux_x86_64")
+ ("i686-linux" "linux_i686")
+ ("aarch64-linux" "linux_aarch64")
+ ("armhf-linux" "linux_armv7l"))
+ ".tar.xz"))
+ (sha256
+ (base32
+ (match (%current-system)
+ ("x86_64-linux" "1hd7fbk0px45fxhqa7nqcnij8ls2fhpjp60v840vy2zqs9fkcr52")
+ ("i686-linux" "11vk32mxyda9xl08pp2ivd1vsahnw6w7d08in4syz6iannfwp19b")
+ ("aarch64-linux" "0zpkaiwwxn8yh3s1d22qswshbgaxx5d8iy17hb3w256zgb722yjw")
+ ("armhf-linux" "18174b1lgsk73gxhala471ppzbrpa1cs953b5par998yqgh74znk"))))))
+ (build-system binary-build-system)
+ (arguments
+ (list #:strip-binaries? #f ;allocated section `.dynsym' not in segment
+ #:patchelf-plan #~`(("REAPER/reaper" ("libc" "gcc" "alsa-lib"))
+ ("REAPER/reamote-server" ("libc" "gcc"))
+ ("REAPER/Plugins/reaper_host_x86_64" ("libc" "gcc")))
+ #:phases #~(modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((target (string-append #$output "/opt"))
+ (bin (string-append #$output "/bin"))
+ (libexec (string-append #$output "/libexec"))
+ (data (string-append #$output "/share"))
+ (doc (string-append data "/doc/reaper-"
+ #$version)))
+ (setenv "HOME" "/tmp")
+ (setenv "XDG_DATA_HOME" data)
+ (invoke "sh" "./install-reaper.sh" "--install"
+ target "--integrate-user-desktop")
+ (delete-file (string-append target
+ "/REAPER/uninstall-reaper.sh"))
+ (delete-file (string-append target
+ "/REAPER/libSwell.so"))
+ (symlink (search-input-file inputs
+ "/lib/libSwell.so")
+ (string-append target
+ "/REAPER/libSwell.so"))
+ (mkdir-p bin)
+ (symlink (string-append target "/REAPER/reaper")
+ (string-append bin "/reaper"))
+ (mkdir-p libexec)
+ (symlink (string-append target
+ "/REAPER/Plugins/reaper_host_x86_64")
+ (string-append libexec
+ "/reaper_host_x86_64"))
+ (mkdir-p doc)
+ (symlink (string-append target
+ "/REAPER/EULA.txt")
+ (string-append doc "/LICENSE"))))))))
+ (native-inputs
+ (list
+ which
+ xdg-utils))
+ (inputs
+ (list
+ alsa-lib
+ `(,gcc "lib")
+ wdl))
+ (supported-systems '("x86_64-linux" "i686-linux" "aarch64-linux"
+ "armhf-linux"))
+ (home-page "https://www.reaper.fm")
+ (synopsis "Digital audio workstation")
+ (description
+ "REAPER is a digital audio production application offering multitrack
+audio and MIDI recording, editing, processing, mixing and mastering toolset.
+It supports a vast range of hardware, digital formats and plugins, and can be
+comprehensively extended, scripted and modified.")
+ (license (license:nonfree "file:///opt/REAPER/EULA.txt"))))
diff --git a/nongnu/packages/ncurses.scm b/nongnu/packages/ncurses.scm
index 5c27ae9..1a51d2c 100644
--- a/nongnu/packages/ncurses.scm
+++ b/nongnu/packages/ncurses.scm
@@ -1,4 +1,4 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
@@ -8,26 +8,13 @@
;;; Copyright © 2017, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
-;;; Copyright © 2022 B. Wilson <x@wilsonb.com>
-;;;
-;;; 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/>.
+;;; Copyright © 2022-2023 B. Wilson <x@wilsonb.com>
(define-module (nongnu packages ncurses)
#:use-module (gnu packages)
+ #:use-module (guix gexp)
#:use-module (guix licenses)
+ #:use-module (guix memoization)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
@@ -40,6 +27,17 @@
#:use-module (guix utils)
#:use-module (ice-9 match))
+(define ncurses-rollup-patch
+ (mlambda (version hash)
+ (origin
+ (method url-fetch)
+ (uri (match (string-split (version-major+minor+point version) #\.)
+ ((major minor point)
+ (string-append "https://invisible-mirror.net/archives"
+ "/ncurses/" major "." minor "/ncurses-"
+ major "." minor "-" point "-patch.sh.bz2"))))
+ (sha256 (base32 hash)))))
+
(define-public ncurses-5
(package
(name "ncurses")
@@ -57,172 +55,157 @@
"doc")) ;1 MiB of man pages
(arguments
(let ((patch-makefile-phase
- '(lambda _
- (for-each patch-makefile-SHELL
- (find-files "." "Makefile.in"))))
+ #~(lambda _
+ (for-each patch-makefile-SHELL
+ (find-files "." "Makefile.in"))))
(configure-phase
;; The 'configure' script does not understand '--docdir', so we must
;; override that and use '--mandir' instead.
- '(lambda* (#:key build target outputs configure-flags
- #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (doc (assoc-ref outputs "doc")))
- (apply invoke "./configure"
- (string-append "SHELL=" (which "sh"))
- (string-append "--build=" build)
- (string-append "--prefix=" out)
- (string-append "--mandir=" doc "/share/man")
- (if target
- (cons (string-append "--host=" target)
- configure-flags)
- configure-flags)))))
+ #~(lambda* (#:key build target outputs configure-flags
+ #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (doc (assoc-ref outputs "doc")))
+ (apply invoke "./configure"
+ (string-append "SHELL=" (which "sh"))
+ (string-append "--build=" build)
+ (string-append "--prefix=" out)
+ (string-append "--mandir=" doc "/share/man")
+ (if target
+ (cons (string-append "--host=" target)
+ configure-flags)
+ configure-flags)))))
(apply-rollup-patch-phase
;; Ncurses distributes "stable" patchsets to be applied on top
;; of the release tarball. These are only available as shell
;; scripts(!) so we decompress and apply them in a phase.
;; See <https://invisible-mirror.net/archives/ncurses/6.1/README>.
- '(lambda* (#:key inputs native-inputs #:allow-other-keys)
- (let ((rollup-patch (assoc-ref (or native-inputs inputs)
- "rollup-patch")))
- (when rollup-patch
- (copy-file rollup-patch
- (string-append (getcwd) "/rollup-patch.sh.bz2"))
- (invoke "bzip2" "-d" "rollup-patch.sh.bz2")
- (invoke "sh" "rollup-patch.sh")))))
+ #~(lambda* (#:key inputs native-inputs #:allow-other-keys)
+ (let ((rollup-patch #$(ncurses-rollup-patch
+ (package-version this-package)
+ "16ny892yhimy6r4mmsgw3rcl0i15570ifn9c54g1ndyrk7kpmlgs")))
+ (copy-file rollup-patch
+ (string-append (getcwd) "/rollup-patch.sh.bz2"))
+ (invoke "bzip2" "-d" "rollup-patch.sh.bz2")
+ (invoke "sh" "rollup-patch.sh"))))
(remove-shebang-phase
- '(lambda _
- ;; To avoid retaining a reference to the bootstrap Bash via the
- ;; shebang of the 'ncursesw6-config' script, simply remove that
- ;; shebang: it'll work just as well without it. Likewise, do not
- ;; retain a reference to the "doc" output.
- (substitute* "misc/ncurses-config.in"
- (("#!@SHELL@")
- "# No shebang here, use /bin/sh!\n")
- (("@SHELL@ \\$0")
- "$0")
- (("mandir=.*$")
- "mandir=share/man"))))
+ #~(lambda _
+ ;; To avoid retaining a reference to the bootstrap Bash via the
+ ;; shebang of the 'ncursesw6-config' script, simply remove that
+ ;; shebang: it'll work just as well without it. Likewise, do not
+ ;; retain a reference to the "doc" output.
+ (substitute* "misc/ncurses-config.in"
+ (("#!@SHELL@")
+ "# No shebang here, use /bin/sh!\n")
+ (("@SHELL@ \\$0")
+ "$0")
+ (("mandir=.*$")
+ "mandir=share/man"))))
(post-install-phase
- `(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; When building a wide-character (Unicode) build, create backward
- ;; compatibility links from the the "normal" libraries to the
- ;; wide-character ones (e.g. libncurses.so to libncursesw.so).
- ,@(if (target-mingw?)
- '( ;; TODO: create .la files to link to the .dll?
- (with-directory-excursion (string-append out "/bin")
- (for-each
- (lambda (lib)
- (define lib.dll
- (string-append "lib" lib ".dll"))
- (define libw6.dll
- (string-append "lib" lib "w6.dll"))
+ #~(lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; When building a wide-character (Unicode) build, create backward
+ ;; compatibility links from the the "normal" libraries to the
+ ;; wide-character ones (e.g. libncurses.so to libncursesw.so).
+ #$@(if (target-mingw?)
+ `( ;; TODO: create .la files to link to the .dll?
+ (with-directory-excursion (string-append out "/bin")
+ (for-each
+ (lambda (lib)
+ (define lib.dll
+ (string-append "lib" lib ".dll"))
+ (define libwx.dll
+ (string-append "lib" lib "w"
+ ,(version-major version) ".dll"))
- (when (file-exists? libw6.dll)
- (format #t "creating symlinks for `lib~a'~%" lib)
- (symlink libw6.dll lib.dll)))
- '("curses" "ncurses" "form" "panel" "menu"))))
- '())
- (with-directory-excursion (string-append out "/lib")
- (for-each (lambda (lib)
- (define libw.a
- (string-append "lib" lib "w.a"))
- (define lib.a
- (string-append "lib" lib ".a"))
+ (when (file-exists? libwx.dll)
+ (format #t "creating symlinks for `lib~a'~%" lib)
+ (symlink libw6.dll lib.dll)))
+ '("curses" "ncurses" "form" "panel" "menu"))))
+ #~())
+ (with-directory-excursion (string-append out "/lib")
+ (for-each (lambda (lib)
+ (define libw.a
+ (string-append "lib" lib "w.a"))
+ (define lib.a
+ (string-append "lib" lib ".a"))
- ,@(if (not (target-mingw?))
- `((define libw.so.x
- (string-append "lib" lib "w.so."
- ,(version-major version)))
- (define lib.so.x
- (string-append "lib" lib ".so."
- ,(version-major version)))
- (define lib.so
- (string-append "lib" lib ".so"))
- (define packagew.pc
- (string-append lib "w.pc"))
- (define package.pc
- (string-append lib ".pc")))
- '())
+ #$@(if (not (target-mingw?))
+ #~((define libw.so.x
+ (string-append "lib" lib "w.so."
+ #$(version-major version)))
+ (define lib.so.x
+ (string-append "lib" lib ".so."
+ #$(version-major version)))
+ (define lib.so
+ (string-append "lib" lib ".so"))
+ (define packagew.pc
+ (string-append lib "w.pc"))
+ (define package.pc
+ (string-append lib ".pc")))
+ #~())
- (when (file-exists? libw.a)
- (format #t "creating symlinks for `lib~a'~%" lib)
- (symlink libw.a lib.a)
- ,@(if (not (target-mingw?))
- '((symlink libw.so.x lib.so.x)
- (false-if-exception (delete-file lib.so))
- (call-with-output-file lib.so
- (lambda (p)
- (format p "INPUT (-l~aw)~%" lib)))
- (with-directory-excursion "pkgconfig"
- (format #t "creating symlink for `~a'~%"
- package.pc)
- (when (file-exists? packagew.pc)
- (symlink packagew.pc package.pc))))
- '())))
- '("curses" "ncurses" "form" "panel" "menu")))))))
- `(#:configure-flags
- ,(cons*
- 'quasiquote
- `(("--with-shared" "--without-debug" "--enable-widec"
+ (when (file-exists? libw.a)
+ (format #t "creating symlinks for `lib~a'~%" lib)
+ (symlink libw.a lib.a)
+ #$@(if (not (target-mingw?))
+ '((symlink libw.so.x lib.so.x)
+ (false-if-exception (delete-file lib.so))
+ (call-with-output-file lib.so
+ (lambda (p)
+ (format p "INPUT (-l~aw)~%" lib)))
+ (with-directory-excursion "pkgconfig"
+ (format #t "creating symlink for `~a'~%"
+ package.pc)
+ (when (file-exists? packagew.pc)
+ (symlink packagew.pc package.pc))))
+ #~())))
+ '("curses" "ncurses" "form" "panel" "menu")))))))
+ (list #:configure-flags
+ #~`("--with-shared" "--without-debug" "--enable-widec"
- "--enable-pc-files" "--with-versioned-syms=yes"
- ,(list 'unquote '(string-append "--with-pkg-config-libdir="
- (assoc-ref %outputs "out")
- "/lib/pkgconfig"))
+ "--enable-pc-files" "--with-versioned-syms=yes"
+ ,(string-append "--with-pkg-config-libdir="
+ #$output "/lib/pkgconfig")
- ;; By default headers land in an `ncursesw' subdir, which is not
- ;; what users expect.
- ,(list 'unquote '(string-append "--includedir=" (assoc-ref %outputs "out")
- "/include"))
- "--enable-overwrite" ;really honor --includedir
+ ;; By default headers land in an `ncursesw' subdir, which is not
+ ;; what users expect.
+ ,(string-append "--includedir=" #$output "/include")
+ "--enable-overwrite" ;really honor --includedir
- ;; Make sure programs like 'tic', 'reset', and 'clear' have a
- ;; correct RUNPATH.
- ,(list 'unquote '(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out")
- "/lib"))
+ ;; Make sure programs like 'tic', 'reset', and 'clear' have a
+ ;; correct RUNPATH.
+ ,(string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
- ;; Starting from ncurses 6.1, "make install" runs "install -s"
- ;; by default, which doesn't work for cross-compiled binaries
- ;; because it invokes 'strip' instead of 'TRIPLET-strip'. Work
- ;; around this.
- ,@(if (%current-target-system) '("--disable-stripping") '())
+ ;; Starting from ncurses 6.1, "make install" runs "install -s"
+ ;; by default, which doesn't work for cross-compiled binaries
+ ;; because it invokes 'strip' instead of 'TRIPLET-strip'. Work
+ ;; around this.
+ #$@(if (%current-target-system) #~("--disable-stripping") #~())
- ;; Do not assume a default search path in ld, even if it is only to
- ;; filter it out in ncurses-config. Mainly because otherwise it ends
- ;; up using the libdir from binutils, which makes little sense and
- ;; causes an unnecessary runtime dependency.
- "cf_cv_ld_searchpath=/no-ld-searchpath"
+ ;; Do not assume a default search path in ld, even if it is only to
+ ;; filter it out in ncurses-config. Mainly because otherwise it ends
+ ;; up using the libdir from binutils, which makes little sense and
+ ;; causes an unnecessary runtime dependency.
+ "cf_cv_ld_searchpath=/no-ld-searchpath"
- ;; MinGW: Use term-driver created for the MinGW port.
- ,@(if (target-mingw?) '("--enable-term-driver") '()))))
- #:tests? #f ; no "check" target
- #:phases (modify-phases %standard-phases
- (add-after 'unpack 'apply-rollup-patch
- ,apply-rollup-patch-phase)
- (replace 'configure ,configure-phase)
- (add-after 'install 'post-install
- ,post-install-phase)
- (add-before 'configure 'patch-makefile-SHELL
- ,patch-makefile-phase)
- (add-before 'patch-source-shebangs 'remove-unneeded-shebang
- ,remove-shebang-phase)))))
+ ;; MinGW: Use term-driver created for the MinGW port.
+ #$@(if (target-mingw?) #~("--enable-term-driver") #~())
+ "CXXFLAGS=-std=c++11")
+ #:tests? #f ; no "check" target
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'apply-rollup-patch
+ #$apply-rollup-patch-phase)
+ (replace 'configure #$configure-phase)
+ (add-after 'install 'post-install
+ #$post-install-phase)
+ (add-before 'configure 'patch-makefile-SHELL
+ #$patch-makefile-phase)
+ (add-before 'patch-source-shebangs 'remove-unneeded-shebang
+ #$remove-shebang-phase)))))
(native-inputs
- `(,@(if (%current-target-system)
- `(("self" ,this-package)) ;for `tic'
- '())
- ("rollup-patch"
- ,(origin
- (method url-fetch)
- (uri (match (string-split (version-major+minor+point version) #\.)
- ((major minor point)
- (string-append "https://invisible-mirror.net/archives"
- "/ncurses/" major "." minor "/ncurses-"
- major "." minor "-" point "-patch.sh.bz2"))))
- (sha256
- (base32
- "16ny892yhimy6r4mmsgw3rcl0i15570ifn9c54g1ndyrk7kpmlgs"))))
- ("pkg-config" ,pkg-config)))
+ (if (%current-target-system)
+ (list pkg-config this-package) ;for 'tic'
+ (list pkg-config)))
(native-search-paths
(list (search-path-specification
(variable "TERMINFO_DIRS")
@@ -237,13 +220,10 @@ ncursesw library provides wide character support.")
(license x11)
(home-page "https://www.gnu.org/software/ncurses/")))
-;; Needed by u-boot 2022.04+
-;; Consider merging into ncurses for next core-updates cycle.
(define-public ncurses/tinfo-5
(package/inherit ncurses-5
(name "ncurses-with-tinfo")
(arguments
(substitute-keyword-arguments (package-arguments ncurses-5)
((#:configure-flags cf)
- `(cons "--with-termlib=tinfo"
- ,cf))))))
+ #~(cons "--with-termlib=tinfo" #$cf))))))
diff --git a/nongnu/packages/nvidia.scm b/nongnu/packages/nvidia.scm
index 5f03b8a..97039d9 100644
--- a/nongnu/packages/nvidia.scm
+++ b/nongnu/packages/nvidia.scm
@@ -1,28 +1,16 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2020 Hebi Li <hebi@lihebi.com>
;;; Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com>
;;; Copyright © 2020, 2021 Jean-Baptiste Volatier <jbv@pm.me>
;;; Copyright © 2020-2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
-;;;
-;;; This file is not part of GNU Guix.
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
+;;; Copyright © 2022, 2023 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2022 Alexey Abramov <levenson@mmer.org>
+;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
(define-module (nongnu packages nvidia)
#:use-module (guix packages)
+ #:use-module (guix deprecation)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
@@ -30,25 +18,37 @@
#:use-module ((guix licenses) #:prefix license-gnu:)
#:use-module ((nonguix licenses) #:prefix license:)
#:use-module (guix build-system linux-module)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bootstrap)
+ #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages elf)
#:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gawk)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages linux)
#:use-module (gnu packages m4)
+ #:use-module (gnu packages lsof)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages python-web)
+ #:use-module (gnu packages qt)
+ #:use-module (gnu packages terminals)
#:use-module (gnu packages video)
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (nongnu packages linux)
#:use-module (ice-9 match)
@@ -58,400 +58,484 @@
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
-; Used for closed-source packages
-(define nvidia-version "470.86")
+(define nvidia-version "515.76")
-; Used for the open-source kernel module package
-(define nversion "515.57")
+(define computed-origin-method
+ (@@ (guix packages) computed-origin-method))
-(define-public nvidia-driver
- (package
- (name "nvidia-driver")
- (version nvidia-version)
- (source
+;; Extract the driver installer and make it a new origin instance for reusing.
+(define (make-nvidia-source version installer)
+ (origin
+ (method computed-origin-method)
+ (file-name (string-append "nvidia-driver-" version "-checkout"))
+ (sha256 #f)
+ (uri
+ (delay
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils)
+ (ice-9 ftw))
+ (set-path-environment-variable
+ "PATH" '("bin")
+ (list (canonicalize-path #+bash-minimal)
+ (canonicalize-path #+coreutils)
+ (canonicalize-path #+gawk)
+ (canonicalize-path #+grep)
+ (canonicalize-path #+tar)
+ (canonicalize-path #+which)
+ (canonicalize-path #+xz)))
+ (setenv "XZ_OPT" (string-join (%xz-parallel-args)))
+ (invoke "sh" #$installer "-x")
+ (copy-recursively
+ (car (scandir (canonicalize-path (getcwd))
+ (lambda (file)
+ (not (member file '("." ".."))))))
+ #$output)))))))
+
+(define nvidia-source
+ (let ((version nvidia-version))
+ (make-nvidia-source
+ version
(origin
- (uri (format #f "http://us.download.nvidia.com/XFree86/Linux-x86_64/~a/~a.run"
- version
- (format #f "NVIDIA-Linux-x86_64-~a" version)))
- (sha256 (base32 "0krwcxc0j19vjnk8sv6mx1lin2rm8hcfhc2hg266846jvcws1dsg"))
(method url-fetch)
- (file-name (string-append "nvidia-driver-" version "-checkout"))))
- (build-system linux-module-build-system)
- (arguments
- (list #:linux linux-lts
- #:tests? #f
- #:phases
- #~(modify-phases %standard-phases
- (replace 'unpack
- (lambda* (#:key inputs #:allow-other-keys #:rest r)
- (let ((source (assoc-ref inputs "source")))
- (invoke "sh" source "--extract-only")
- (chdir #$(format #f "NVIDIA-Linux-x86_64-~a" version)))))
- (replace 'build
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; We cannot use with-directory-excursion, because the install
- ;; phase needs to be in the kernel folder. Otherwise no .ko
- ;; would be installed.
- (chdir "kernel")
- ;; Patch Kbuild
- (substitute* "Kbuild"
- (("/bin/sh") (string-append #$bash-minimal "/bin/sh")))
- (invoke "make"
- "-j"
- (string-append "SYSSRC="
- (assoc-ref inputs "linux-module-builder")
- "/lib/modules/build")
- "CC=gcc")))
- (delete 'strip)
- (add-after 'install 'install-copy
- (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
- (chdir "..")
- (use-modules (ice-9 ftw)
- (ice-9 regex)
- (ice-9 textual-ports))
- (let* ((libdir (string-append #$output "/lib"))
- (bindir (string-append #$output "/bin"))
- (etcdir (string-append #$output "/etc")))
- ;; ------------------------------
- ;; Copy .so files
- (for-each
- (lambda (file)
- (format #t "Copying '~a'...~%" file)
- (install-file file libdir))
- (scandir "." (lambda (name)
- (string-contains name ".so"))))
-
- (install-file "nvidia_drv.so" (string-append #$output "/lib/xorg/modules/drivers/"))
- (install-file (string-append "libglxserver_nvidia.so."
- #$(package-version nvidia-driver))
- (string-append #$output "/lib/xorg/modules/extensions/"))
-
- ;; ICD Loader for OpenCL
- (let ((file (string-append etcdir "/OpenCL/vendors/nvidia.icd")))
- (mkdir-p (string-append etcdir "/OpenCL/vendors/"))
- (call-with-output-file file
- (lambda (port)
- (display (string-append #$output "/lib/libnvidia-opencl.so.1") port)))
- (chmod file #o555))
+ (uri (string-append
+ "https://us.download.nvidia.com/XFree86/Linux-x86_64/"
+ version "/NVIDIA-Linux-x86_64-" version ".run"))
+ (sha256
+ (base32 "0i5zyvlsjnfkpfqhw6pklp0ws8nndyiwxrg4pj04jpwnxf6a38n6"))))))
- ;; Add udev rules for nvidia
- (let ((rulesdir (string-append #$output "/lib/udev/rules.d/"))
- (rules (string-append #$output "/lib/udev/rules.d/90-nvidia.rules"))
- (sh (string-append #$bash-minimal "/bin/sh"))
- (mknod (string-append #$coreutils "/bin/mknod"))
- (cut (string-append #$coreutils "/bin/cut"))
- (grep (string-append #$grep "/bin/grep")))
- (mkdir-p rulesdir)
- (call-with-output-file rules
- (lambda (port)
- (put-string port
- (string-append
- "KERNEL==\"nvidia\", "
- "RUN+=\"" sh " -c '" mknod " -m 666 /dev/nvidiactl c $$(" grep " nvidia-frontend /proc/devices | " cut " -d \\ -f 1) 255'\"" "\n"
- "KERNEL==\"nvidia_modeset\", "
- "RUN+=\"" sh " -c '" mknod " -m 666 /dev/nvidia-modeset c $$(" grep " nvidia-frontend /proc/devices | " cut " -d \\ -f 1) 254'\"" "\n"
- "KERNEL==\"card*\", SUBSYSTEM==\"drm\", DRIVERS==\"nvidia\", "
- "RUN+=\"" sh " -c '" mknod " -m 666 /dev/nvidia0 c $$(" grep " nvidia-frontend /proc/devices | " cut " -d \\ -f 1) 0'\"" "\n"
- "KERNEL==\"nvidia_uvm\", "
- "RUN+=\"" sh " -c '" mknod " -m 666 /dev/nvidia-uvm c $$(" grep " nvidia-uvm /proc/devices | " cut " -d \\ -f 1) 0'\"" "\n"
- "KERNEL==\"nvidia_uvm\", "
- "RUN+=\"" sh " -c '" mknod " -m 666 /dev/nvidia-uvm-tools c $$(" grep " nvidia-uvm /proc/devices | " cut " -d \\ -f 1) 0'\"" "\n" )))))
-
- ;; ------------------------------
- ;; Add a file to load nvidia drivers
- (mkdir-p bindir)
- (let ((file (string-append bindir "/nvidia-insmod"))
- (moddir (string-append "/lib/modules/" (utsname:release (uname)) "-gnu/extra")))
- (call-with-output-file file
- (lambda (port)
- (put-string port (string-append "#!" (assoc-ref inputs "bash-minimal") "/bin/sh" "\n"
- "modprobe ipmi_devintf" "\n"
- "insmod " #$output moddir "/nvidia.ko" "\n"
- "insmod " #$output moddir "/nvidia-modeset.ko" "\n"
- "insmod " #$output moddir "/nvidia-uvm.ko" "\n"
- "insmod " #$output moddir "/nvidia-drm.ko" "\n"))))
- (chmod file #o555))
- (let ((file (string-append bindir "/nvidia-rmmod")))
- (call-with-output-file file
- (lambda (port)
- (put-string port (string-append "#!" #$bash-minimal "/bin/sh" "\n"
- "rmmod " "nvidia-drm" "\n"
- "rmmod " "nvidia-uvm" "\n"
- "rmmod " "nvidia-modeset" "\n"
- "rmmod " "nvidia" "\n"
- "rmmod " "ipmi_devintf" "\n"))))
- (chmod file #o555))
-
- ;; ------------------------------
- ;; nvidia-smi
-
- (install-file "nvidia-smi" bindir)
+(define-public gpustat
+ (package
+ (name "gpustat")
+ (version "1.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "gpustat" version))
+ (sha256
+ (base32
+ "1wg3yikkqdrcxp5xscyb9rxifgfwv7qh73xv4airab63b3w8y7jq"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f))
+ (propagated-inputs (list python-blessed python-nvidia-ml-py python-psutil
+ python-six))
+ (native-inputs (list python-mock python-pytest python-pytest-runner))
+ (home-page "https://github.com/wookayin/gpustat")
+ (synopsis "Utility to monitor NVIDIA GPU status and usage")
+ (description
+ "This package provides an utility to monitor NVIDIA GPU status
+and usage.")
+ (license license-gnu:expat)))
- ;; ------------------------------
- ;; patchelf
- (let* ((ld.so (string-append #$glibc #$(glibc-dynamic-linker)))
+(define-public python-nvidia-ml-py
+ (package
+ (name "python-nvidia-ml-py")
+ (version "11.495.46")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "nvidia-ml-py" version))
+ (sha256
+ (base32
+ "09cnb7xasd7brby52j70y7fqsfm9n6gvgqf769v0cmj74ypy2s4g"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-libnvidia
+ (lambda _
+ (substitute* "pynvml.py"
+ (("libnvidia-ml.so.1")
+ (string-append #$(this-package-input
+ "nvidia-driver")
+ "/lib/libnvidia-ml.so.1"))))))))
+ (inputs (list nvidia-driver))
+ (home-page "https://forums.developer.nvidia.com")
+ (synopsis "Python Bindings for the NVIDIA Management Library")
+ (description "This package provides official Python Bindings for the NVIDIA
+Management Library")
+ (license license-gnu:bsd-3)))
- (rpath (string-join
- (list "$ORIGIN"
- (string-append #$output "/lib")
- (string-append #$glibc "/lib")
- (string-append #$libx11 "/lib")
- (string-append #$libxext "/lib")
- (string-append #$pango "/lib")
- (string-append #$gtk+ "/lib")
- (string-append #$gtk+-2 "/lib")
- (string-append #$atk "/lib")
- (string-append #$glib "/lib")
- (string-append #$cairo "/lib")
- (string-append #$gdk-pixbuf "/lib")
- (string-append #$wayland "/lib")
- (string-append #$gcc:lib "/lib"))
- ":")))
- (define (patch-elf file)
- (format #t "Patching ~a ...~%" file)
- (unless (string-contains file ".so")
- (invoke "patchelf" "--set-interpreter" ld.so file))
- (invoke "patchelf" "--set-rpath" rpath file))
- (for-each (lambda (file)
- (when (elf-file? file)
- (patch-elf file)))
- (find-files #$output ".*\\.so"))
- (patch-elf (string-append bindir "/" "nvidia-smi")))
+(define-public nvidia-htop
+ (package
+ (name "nvidia-htop")
+ (version "1.0.5")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "nvidia-htop" version))
+ (sha256
+ (base32
+ "0lv9cpccpkbg0d577irm1lp9rx6pacyk2pk9v41k9s9hyl4b7hvx"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-libnvidia
+ (lambda _
+ (substitute* "nvidia-htop.py"
+ (("nvidia-smi")
+ (string-append #$(this-package-input
+ "nvidia-driver")
+ "/bin/nvidia-smi"))))))))
+ (inputs (list nvidia-driver))
+ (propagated-inputs (list python-termcolor))
+ (home-page "https://github.com/peci1/nvidia-htop")
+ (synopsis "Tool to enrich the output of nvidia-smi")
+ (description "This package provides tool for enriching the output of
+nvidia-smi.")
+ (license license-gnu:bsd-3)))
- ;; ------------------------------
- ;; Create short name symbolic links
- (for-each (lambda (file)
- (let* ((short (regexp-substitute
- #f
- (string-match "([^/]*\\.so).*" file)
- 1))
- (major (cond
- ((or (string=? short "libGLX.so")
- (string=? short "libGLX_nvidia.so")
- (string=? short "libEGL_nvidia.so")) "0")
- ((string=? short "libGLESv2.so") "2")
- (else "1")))
- (mid (string-append short "." major))
- (short-file (string-append libdir "/" short))
- (mid-file (string-append libdir "/" mid)))
- ;; FIXME the same name, print out warning at least
- ;; [X] libEGL.so.1.1.0
- ;; [ ] libEGL.so.435.21
- (when (not (file-exists? short-file))
- (format #t "Linking ~a to ~a ...~%" short file)
- (symlink (basename file) short-file))
- (when (not (file-exists? mid-file))
- (format #t "Linking ~a to ~a ...~%" mid file)
- (symlink (basename file) mid-file))))
- (find-files libdir "\\.so\\."))
- (symlink (string-append "libglxserver_nvidia.so."
- #$(package-version nvidia-driver))
- (string-append #$output "/lib/xorg/modules/extensions/" "libglxserver_nvidia.so"))))))))
- (supported-systems '("x86_64-linux"))
- (native-inputs
- (list
- patchelf
- perl
- python-2
- which
- xz))
- (inputs
- (list
- atk
- bash-minimal
- cairo
- coreutils
- `(,gcc "lib")
- gdk-pixbuf
- glib
- grep
- gtk+
- gtk+-2
- kmod
- glibc
- libx11
- libxext
- linux-lts
- pango
- wayland))
- (home-page "https://www.nvidia.com")
- (synopsis "Proprietary Nvidia driver")
- (description "This is the evil Nvidia driver. Don't forget to add
-nvidia-driver to the udev-rules in your config.scm:
-@code{(simple-service 'custom-udev-rules udev-service-type (list nvidia-driver))}
-Further xorg should be configured by adding:
-@code{(modules (cons* nvidia-driver %default-xorg-modules))
-(drivers '(\"nvidia\"))} to @code{xorg-configuration}.")
- (license (license:nonfree (format #f "file:///share/doc/nvidia-driver-~a/LICENSE" version)))))
+(define-public python-py3nvml
+ (package
+ (name "python-py3nvml")
+ (version "0.2.7")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "py3nvml" version))
+ (sha256
+ (base32
+ "0wxxky9amy38q7qjsdmmznk1kqdzwd680ps64i76cvlab421vvh9"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-libnvidia
+ (lambda _
+ (substitute* "py3nvml/py3nvml.py"
+ (("libnvidia-ml.so.1")
+ (string-append #$(this-package-input
+ "nvidia-driver")
+ "/lib/libnvidia-ml.so.1"))))))))
+ (propagated-inputs (list nvidia-driver python-xmltodict))
+ (home-page "https://github.com/fbcotter/py3nvml")
+ (synopsis "Unoffcial Python 3 Bindings for the NVIDIA Management Library")
+ (description "This package provides unofficial Python 3 Bindings for the
+NVIDIA Management Library")
+ (license license-gnu:bsd-3)))
-(define-public nvidia-libs
+(define-public nvidia-driver
(package
- (name "nvidia-libs")
+ (name "nvidia-driver")
(version nvidia-version)
- (source
- (origin
- (uri (format #f "http://us.download.nvidia.com/XFree86/Linux-x86_64/~a/~a.run"
- version
- (format #f "NVIDIA-Linux-x86_64-~a" version)))
- (sha256 (base32 "0krwcxc0j19vjnk8sv6mx1lin2rm8hcfhc2hg266846jvcws1dsg"))
- (method url-fetch)
- (file-name (string-append "nvidia-driver-" version "-checkout"))))
+ (source nvidia-source)
(build-system copy-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'unpack
- (lambda* (#:key inputs #:allow-other-keys #:rest r)
- (let ((source (assoc-ref inputs "source")))
- (invoke "sh" source "--extract-only")
- (chdir ,(format #f "NVIDIA-Linux-x86_64-~a" version))
- #t)))
- (delete 'build)
- (delete 'check)
- (add-after 'install 'patch-symlink
- (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
- (use-modules (ice-9 ftw)
- (ice-9 regex)
- (ice-9 textual-ports))
- (let* ((out (assoc-ref outputs "out"))
- (libdir (string-append out "/lib"))
- (bindir (string-append out "/bin"))
- (etcdir (string-append out "/etc")))
- ;; ------------------------------
- ;; patchelf
- (let* ((libc (assoc-ref inputs "libc"))
- (ld.so (string-append libc ,(glibc-dynamic-linker)))
+ (list #:modules '((guix build copy-build-system)
+ (guix build utils)
+ (ice-9 ftw)
+ (ice-9 popen)
+ (ice-9 rdelim)
+ (ice-9 regex)
+ (ice-9 textual-ports))
+ #:install-plan
+ #~`((,#$(match (or (%current-target-system) (%current-system))
+ ("i686-linux" "32")
+ ("x86_64-linux" ".")
+ (_ "."))
+ "lib/" #:include-regexp ("^./[^/]+\\.so") #:exclude-regexp ("nvidia_drv\\.so" "libglxserver_nvidia\\.so\\..*"))
+ ("." "share/nvidia/" #:include-regexp ("nvidia-application-profiles.*"))
+ ("." "share/egl/egl_external_platform.d/" #:include-regexp (".*_nvidia_.*\\.json"))
+ ("90-nvidia.rules" "lib/udev/rules.d/")
+ ("nvidia-drm-outputclass.conf" "share/x11/xorg.conf.d/")
+ ("nvidia-dbus.conf" "share/dbus-1/system.d/")
+ ("nvidia-smi.1.gz" "share/man/man1/")
+ ("nvidia.icd" "etc/OpenCL/vendors/")
+ ("nvidia_drv.so" "lib/xorg/modules/drivers/")
+ ("nvidia_icd.json" "share/vulkan/icd.d/")
+ ("nvidia_layers.json" "share/vulkan/implicit_layer.d/")
+ (,(string-append "libglxserver_nvidia.so." #$version) "lib/xorg/modules/extensions/"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'strip)
+ (add-after 'unpack 'create-misc-files
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Vulkan layer configuration
+ (for-each (lambda (file)
+ (substitute* file
+ (("lib(GLX|nvidia).*\\.so\\..*" all)
+ (string-append #$output "/lib/" all))))
+ (scandir "." (lambda (name)
+ (string-contains name ".json"))))
- (out (assoc-ref outputs "out"))
- (rpath (string-join
- (list "$ORIGIN"
- (string-append out "/lib")
- (string-append libc "/lib")
- (string-append (assoc-ref inputs "atk") "/lib")
- (string-append (assoc-ref inputs "cairo") "/lib")
- (string-append (assoc-ref inputs "gcc:lib") "/lib")
- (string-append (assoc-ref inputs "gdk-pixbuf") "/lib")
- (string-append (assoc-ref inputs "glib") "/lib")
- (string-append (assoc-ref inputs "gtk+") "/lib")
- (string-append (assoc-ref inputs "gtk2") "/lib")
- (string-append (assoc-ref inputs "libx11") "/lib")
- (string-append (assoc-ref inputs "libxext") "/lib")
- (string-append (assoc-ref inputs "pango") "/lib")
- (string-append (assoc-ref inputs "wayland") "/lib"))
- ":")))
- (define (patch-elf file)
- (format #t "Patching ~a ...~%" file)
- (unless (string-contains file ".so")
- (invoke "patchelf" "--set-interpreter" ld.so file))
- (invoke "patchelf" "--set-rpath" rpath file))
- (for-each (lambda (file)
- (when (elf-file? file)
- (patch-elf file)))
- (find-files out ".*\\.so")))
+ ;; OpenCL vendor ICD configuration
+ (substitute* "nvidia.icd"
+ ((".*" all) (string-append #$output "/lib/" all)))
- ;; ------------------------------
- ;; Create short name symbolic links
- (for-each (lambda (file)
- (let* ((short (regexp-substitute
- #f
+ ;; Add udev rules for nvidia
+ (let ((rules "90-nvidia.rules"))
+ (call-with-output-file rules
+ (lambda (port)
+ (put-string port (format #f "~
+KERNEL==\"nvidia\", RUN+=\"@sh@ -c '@mknod@ -m 666 /dev/nvidiactl c $$(@grep@ nvidia-frontend /proc/devices | @cut@ -d \\ -f 1) 255'\"
+KERNEL==\"nvidia_modeset\", RUN+=\"@sh@ -c '@mknod@ -m 666 /dev/nvidia-modeset c $$(@grep@ nvidia-frontend /proc/devices | @cut@ -d \\ -f 1) 254'\"
+KERNEL==\"card*\", SUBSYSTEM==\"drm\", DRIVERS==\"nvidia\", RUN+=\"@sh@ -c '@mknod@ -m 666 /dev/nvidia0 c $$(@grep@ nvidia-frontend /proc/devices | @cut@ -d \\ -f 1) 0'\"
+KERNEL==\"nvidia_uvm\", RUN+=\"@sh@ -c '@mknod@ -m 666 /dev/nvidia-uvm c $$(@grep@ nvidia-uvm /proc/devices | @cut@ -d \\ -f 1) 0'\"
+KERNEL==\"nvidia_uvm\", RUN+=\"@sh@ -c '@mknod@ -m 666 /dev/nvidia-uvm-tools c $$(@grep@ nvidia-uvm /proc/devices | @cut@ -d \\ -f 1) 0'\"
+"))))
+ (substitute* rules
+ (("@\\<(sh|grep|mknod|cut)\\>@" all cmd)
+ (search-input-file inputs (string-append "/bin/" cmd)))))))
+ (add-after 'install 'patch-elf
+ (lambda _
+ (let* ((ld.so (string-append #$(this-package-input "glibc")
+ #$(glibc-dynamic-linker)))
+ (rpath (string-join
+ (list "$ORIGIN"
+ (string-append #$output "/lib")
+ (string-append #$gcc:lib "/lib")
+ (string-append #$gtk+-2 "/lib")
+ (string-append #$(this-package-input "atk") "/lib")
+ (string-append #$(this-package-input "cairo") "/lib")
+ (string-append #$(this-package-input "gdk-pixbuf") "/lib")
+ (string-append #$(this-package-input "glib") "/lib")
+ (string-append #$(this-package-input "glibc") "/lib")
+ (string-append #$(this-package-input "gtk+") "/lib")
+ (string-append #$(this-package-input "libdrm") "/lib")
+ (string-append #$(this-package-input "libx11") "/lib")
+ (string-append #$(this-package-input "libxext") "/lib")
+ (string-append #$(this-package-input "mesa") "/lib")
+ (string-append #$(this-package-input "pango") "/lib")
+ (string-append #$(this-package-input "wayland") "/lib"))
+ ":")))
+ (define (patch-elf file)
+ (format #t "Patching ~a ..." file)
+ (unless (string-contains file ".so")
+ (invoke "patchelf" "--set-interpreter" ld.so file))
+ (invoke "patchelf" "--set-rpath" rpath file)
+ (display " done\n"))
+ (for-each (lambda (file)
+ (when (elf-file? file)
+ (patch-elf file)))
+ (append (find-files #$output ".*\\.so")
+ (find-files (string-append #$output "/bin")))))))
+ (add-before 'patch-elf 'install-nvidia-smi
+ (lambda _
+ (if (string-match "x86_64-linux"
+ (or #$(%current-target-system) #$(%current-system)))
+ (install-file "nvidia-smi" (string-append #$output "/bin")))))
+ (add-after 'patch-elf 'create-short-name-symlinks
+ (lambda _
+ (define (get-soname file)
+ (when elf-file? file
+ (let* ((cmd (string-append "patchelf --print-soname " file))
+ (port (open-input-pipe cmd))
+ (soname (read-line port)))
+ (close-pipe port)
+ soname)))
- (string-match "([^/]*\\.so).*" file)
- 1))
- (major (cond
- ((or (string=? short "libGLX.so")
- (string=? short "libGLX_nvidia.so")
- (string=? short "libEGL_nvidia.so")) "0")
- ((string=? short "libGLESv2.so") "2")
- (else "1")))
- (mid (string-append short "." major))
- (short-file (string-append libdir "/" short))
- (mid-file (string-append libdir "/" mid)))
- ;; FIXME the same name, print out warning at least
- ;; [X] libEGL.so.1.1.0
- ;; [ ] libEGL.so.435.21
- (when (not (file-exists? short-file))
- (format #t "Linking ~a to ~a ...~%" short file)
- (symlink (basename file) short-file))
- (when (not (file-exists? mid-file))
- (format #t "Linking ~a to ~a ...~%" mid file)
- (symlink (basename file) mid-file))))
- (find-files libdir "\\.so\\."))
- #t))))
- #:install-plan
- ,@(match (%current-system)
- ("x86_64-linux" '(`(("." "lib" #:include-regexp ("^./[^/]+\\.so")))))
- ("i686-linux" '(`(("32" "lib" #:include-regexp ("^./[^/]+\\.so")))))
- (_ '()))))
+ (for-each
+ (lambda (lib)
+ (let ((lib-soname (get-soname lib)))
+ (when (string? lib-soname)
+ (let* ((soname (string-append
+ (dirname lib) "/" lib-soname))
+ (base (string-append
+ (regexp-substitute
+ #f (string-match "(.*)\\.so.*" soname) 1)
+ ".so"))
+ (source (basename lib)))
+ (for-each
+ (lambda (target)
+ (unless (file-exists? target)
+ (format #t "Symlinking ~a -> ~a..."
+ target source)
+ (symlink source target)
+ (display " done\n")))
+ (list soname base))))))
+ (find-files #$output "\\.so"))
+ (symlink (string-append "libglxserver_nvidia.so." #$version)
+ (string-append #$output "/lib/xorg/modules/extensions/" "libglxserver_nvidia.so"))
+ (symlink (string-append "libnvidia-allocator.so." #$version)
+ (string-append #$output "/lib/nvidia-drm_gbm.so" )))))))
(supported-systems '("i686-linux" "x86_64-linux"))
- (native-inputs
- `(("patchelf" ,patchelf)
- ("perl" ,perl)
- ("python" ,python-2)
- ("which" ,which)
- ("xz" ,xz)))
+ (native-inputs (list patchelf))
(inputs
- `(("atk" ,atk)
- ("cairo" ,cairo)
- ("gcc:lib" ,gcc "lib")
- ("gdk-pixbuf" ,gdk-pixbuf)
- ("glib" ,glib)
- ("gtk+" ,gtk+)
- ("gtk2" ,gtk+-2)
- ("libc" ,glibc)
- ("libx11" ,libx11)
- ("libxext" ,libxext)
- ("wayland" ,wayland)))
+ (list `(,gcc "lib")
+ atk
+ bash-minimal
+ cairo
+ coreutils
+ gdk-pixbuf
+ glib
+ glibc
+ grep
+ gtk+
+ gtk+-2
+ kmod
+ libdrm
+ libx11
+ libxext
+ linux-lts
+ mesa
+ pango
+ wayland))
(home-page "https://www.nvidia.com")
- (synopsis "Libraries of the proprietary Nvidia driver")
- (description "These are the libraries of the evil Nvidia driver compatible
-with the ones usually provided by Mesa. To use these libraries with
-packages that have been compiled with a mesa output, take a look at the nvda
-package.")
- (license (license:nonfree (format #f "file:///share/doc/nvidia-driver-~a/LICENSE" version)))))
+ (synopsis "Proprietary NVIDIA driver")
+ (description
+ "This is the evil NVIDIA driver. Don't forget to add @code{service
+nvidia-service-type} to your @file{config.scm}. Further xorg should be
+configured by adding: @code{(modules (cons* nvidia-driver
+%default-xorg-modules)) (drivers '(\"nvidia\"))} to @code{xorg-configuration}.
+")
+ (license
+ (license:nonfree
+ (format #f "file:///share/doc/nvidia-driver-~a/LICENSE" version)))))
-(define-public nvidia-module
+(define-public nvidia-firmware
+ (let ((base nvidia-driver))
+ (package
+ (inherit base)
+ (name "nvidia-firmware")
+ (arguments
+ (list #:install-plan
+ #~'(("firmware" #$(string-append
+ "lib/firmware/nvidia/" (package-version base))))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'strip))))
+ (inputs '())
+ (native-inputs '())
+ (properties `((hidden? . #t))))))
+
+(define-public nvidia-exec
(package
- (name "nvidia-module")
- (version nversion)
+ (name "nvidia-exec")
+ (version "0.1.0")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/NVIDIA/open-gpu-kernel-modules")
- (commit nversion)))
+ (url "https://github.com/pedro00dk/nvidia-exec")
+ (commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
- "11f723xjj700pmxffz4v5mv6fyl5zc44i6ix042pj446dfbdgiqg"))))
+ "079alqgz3drv5mvx059fzhj3f20rnljl7r4yihfd5qq7djgmvv0v"))))
+ (build-system copy-build-system)
+ (arguments
+ (list #:install-plan #~`(("nvx" "bin/"))
+ #:modules #~((guix build copy-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'install 'wrap-nvx
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (wrap-program (string-append #$output "/bin/nvx")
+ `("PATH" ":" prefix
+ ,(fold (lambda (input paths)
+ (let* ((in (assoc-ref
+ inputs input))
+ (bin (string-append
+ in "/bin")))
+ (append (filter
+ file-exists?
+ (list bin))
+ paths)))
+ '()
+ '("jq" "lshw" "lsof")))))))))
+ (inputs (list bash-minimal jq lshw lsof))
+ (home-page "https://github.com/pedro00dk/nvidia-exec")
+ (synopsis "GPU switching without login out for Nvidia Optimus laptops")
+ (description
+ "This package provides GPU switching without login out for Nvidia Optimus
+laptops.")
+ (license license-gnu:gpl3+)))
+
+(define-public nvidia-nvml
+ (package
+ (name "nvidia-nvml")
+ (version "352.79")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://developer.download.nvidia.com/compute/cuda/7.5/Prod/gdk/"
+ (format #f "gdk_linux_amd64_~a_release.run"
+ (string-replace-substring version "." "_"))))
+ (sha256
+ (base32
+ "1r2cwm0j9svaasky3qw46cpg2q6rrazwzrc880nxh6bismyd3a9z"))
+ (file-name (string-append "nvidia-nvml-" version "-checkout"))))
+ (build-system copy-build-system)
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (replace 'unpack
+ (lambda _
+ (invoke "sh" #$source "--tar" "xvf"))))
+ #:install-plan
+ ''(("payload/nvml/lib" "lib")
+ ("payload/nvml/include" "include/nvidia/gdk")
+ ("payload/nvml/example" "src/gdk/nvml/examples")
+ ("payload/nvml/doc/man" "share/man")
+ ("payload/nvml/README.txt" "README.txt")
+ ("payload/nvml/COPYRIGHT.txt" "COPYRIGHT.txt"))))
+ (home-page "https://www.nvidia.com")
+ (synopsis "The NVIDIA Management Library (NVML)")
+ (description "C-based programmatic interface for monitoring and managing various
+states within NVIDIA Tesla GPUs. It is intended to be a platform for
+building 3rd party applications, and is also the underlying library for the
+NVIDIA-supported nvidia-smi tool. NVML is thread-safe so it is safe to make
+simultaneous NVML calls from multiple threads.")
+ ;; Doesn't have any specific LICENSE file, but see COPYRIGHT.txt for details.
+ (license (license:nonfree "file://COPYRIGHT.txt"))))
+
+(define-public nvidia-libs
+ (deprecated-package "nvidia-libs" nvidia-driver))
+
+(define-public nvidia-module
+ (package
+ (name "nvidia-module")
+ (version nvidia-version)
+ (source nvidia-source)
(build-system linux-module-build-system)
(arguments
- (list #:linux linux
- #:source-directory "kernel-open"
- #:tests? #f
+ (list #:linux linux-lts
+ #:source-directory "kernel"
+ #:tests? #f
#:make-flags
- #~(list (string-append "CC=" #$(cc-for-target))
- (string-append "SYSSRC=" (assoc-ref %build-inputs
- "linux-module-builder")
- "/lib/modules/build"))
+ #~(list (string-append "CC=" #$(cc-for-target)))
#:phases
#~(modify-phases %standard-phases
- (add-after 'unpack 'fixpath
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* "kernel-open/Kbuild"
- (("/bin/sh") (string-append #$bash-minimal "/bin/sh")))))
+ (delete 'strip)
+ (add-before 'configure 'fixpath
+ (lambda* (#:key (source-directory ".") #:allow-other-keys)
+ (substitute* (string-append source-directory "/Kbuild")
+ (("/bin/sh") (which "sh")))))
(replace 'build
- (lambda* (#:key make-flags outputs #:allow-other-keys)
- (apply invoke
- `("make" "-j"
- ,@make-flags "modules")))))))
- (inputs (list bash-minimal))
- (home-page "https://github.com/NVIDIA/open-gpu-kernel-modules")
- (synopsis "Nvidia kernel module")
+ (lambda* (#:key (make-flags '()) (parallel-build? #t)
+ (source-directory ".")
+ inputs
+ #:allow-other-keys)
+ (apply invoke "make" "-C" (canonicalize-path source-directory)
+ (string-append "SYSSRC=" (search-input-directory
+ inputs "/lib/modules/build"))
+ `(,@(if parallel-build?
+ `("-j" ,(number->string
+ (parallel-job-count)))
+ '())
+ ,@make-flags)))))))
+ (home-page "https://www.nvidia.com")
+ (synopsis "Proprietary NVIDIA kernel modules")
(description
- "This package provides Nvidia open-gpu-kernel-modules. However,
-they are only for the latest GPU architectures Turing and Ampere. Also they
-still require firmware file @code{gsp.bin} to be loaded as well as closed
-source userspace tools from the corresponding driver release.")
- (license license-gnu:gpl2)))
+ "This package provides the evil NVIDIA proprietary kernel modules.")
+ (license
+ (license:nonfree
+ (format #f "file:///share/doc/nvidia-driver-~a/LICENSE" version)))))
+
+(define-public nvidia-module-open
+ (let ((base nvidia-module))
+ (package/inherit base
+ (name "nvidia-module-open")
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ;; NOTE: Kernels compiled with CONFIG_LTO_CLANG_THIN would cause an
+ ;; error here. See also:
+ ;; <https://github.com/NVIDIA/open-gpu-kernel-modules/issues/214>
+ ;; <https://github.com/llvm/llvm-project/issues/55820>
+ ((#:source-directory _) "kernel-open")))
+ (home-page "https://github.com/NVIDIA/open-gpu-kernel-modules")
+ (synopsis "NVIDIA kernel module")
+ (description
+ "This package provides NVIDIA open-gpu-kernel-modules. However, they
+are only for the latest GPU architectures Turing and Ampere. Also they still
+require firmware file @code{gsp.bin} to be loaded as well as closed source
+userspace tools from the corresponding driver release.")
+ (license license-gnu:gpl2))))
(define-public nvidia-settings
(package
@@ -465,7 +549,7 @@ source userspace tools from the corresponding driver release.")
(file-name (git-file-name name version))
(sha256
(base32
- "1lnj5hwmfkzs664fxlhljqy323394s1i7qzlpsjyrpm07sa93bky"))))
+ "1hplc42115c06cc555cjmw3c9371qn7ibwjpqjybcf6ixfd6lryq"))))
(build-system gnu-build-system)
(arguments
(list #:tests? #f ;no test suite
@@ -501,34 +585,79 @@ configuration, creating application profiles, gpu monitoring and more.")
(home-page "https://github.com/NVIDIA/nvidia-settings")
(license license-gnu:gpl2)))
+(define-public nvidia-system-monitor
+ (package
+ (name "nvidia-system-monitor")
+ (version "1.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/congard/nvidia-system-monitor-qt")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0aghdqljvjmc02g9jpc7sb3yhha738ywny51riska56hkxd3jg2l"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:tests? #f
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-nvidia-smi
+ (lambda _
+ (let ((nvidia-smi (string-append #$(this-package-input
+ "nvidia-driver")
+ "/bin/nvidia-smi")))
+ (substitute* "src/core/InfoProvider.cpp"
+ (("nvidia-smi")
+ nvidia-smi))
+ (substitute* "src/main.cpp"
+ (("which nvidia-smi")
+ (string-append "which " nvidia-smi))
+ (("exec..nvidia-smi")
+ (string-append "exec(\"" nvidia-smi))))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append #$output "/bin")))
+ (mkdir-p bin)
+ (install-file "qnvsm" bin)))))))
+ (inputs (list qtbase-5 qtdeclarative-5 nvidia-driver))
+ (home-page "https://github.com/congard/nvidia-system-monitor-qt")
+ (synopsis "Task manager for Nvidia graphics cards")
+ (description
+ "This package provides a task manager for Nvidia graphics cards.")
+ (license license-gnu:expat)))
+
;; nvda is used as a name because it has the same length as mesa which is
;; required for grafting
(define-public nvda
(package
- (inherit nvidia-libs)
+ (inherit nvidia-driver)
(name "nvda")
(source #f)
(build-system trivial-build-system)
(arguments
(list #:modules '((guix build union))
- #:builder #~(begin
- (use-modules (guix build union)
- (srfi srfi-1)
- (ice-9 regex))
- (union-build (assoc-ref %outputs "out")
- (list #$mesa #$nvidia-libs)
- #:resolve-collision (lambda (files) (let ((file
- (if (string-match "nvidia-libs" (first files))
- (first files)
- (last files))))
- (format #t "chosen ~a ~%" file)
- file))))))
- (description "These are the libraries of the evil Nvidia driver,
-packaged in such a way that you can use the transformation option
-@code{--with-graft=mesa=nvda} to use the nvidia driver with a package that requires mesa.")
- (inputs
- (list mesa
- nvidia-libs))
+ #:builder
+ #~(begin
+ (use-modules (guix build union)
+ (srfi srfi-1)
+ (ice-9 regex))
+ (union-build #$output
+ (list #$(this-package-input "mesa")
+ #$(this-package-input "nvidia-driver"))
+ #:resolve-collision
+ (lambda (files)
+ (let ((file (if (string-match "nvidia-driver"
+ (first files))
+ (first files)
+ (last files))))
+ (format #t "chosen ~a ~%" file)
+ file))))))
+ (description
+ "These are the libraries of the evil NVIDIA driver, packaged in such a
+way that you can use the transformation option @code{--with-graft=mesa=nvda}
+to use the NVIDIA driver with a package that requires mesa.")
+ (inputs (list mesa nvidia-driver))
(outputs '("out"))))
(define mesa/fake
diff --git a/nongnu/packages/patches/broadcom-sta-debian-fix-kernel-warnings.patch b/nongnu/packages/patches/broadcom-sta-debian-fix-kernel-warnings.patch
deleted file mode 100644
index e9bf66a..0000000
--- a/nongnu/packages/patches/broadcom-sta-debian-fix-kernel-warnings.patch
+++ /dev/null
@@ -1,161 +0,0 @@
---- a/src/wl/sys/wl_cfg80211_hybrid.c
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c
-@@ -1968,7 +1968,7 @@
-
- if (dtoh32(bi->length) > WL_BSS_INFO_MAX) {
- WL_DBG(("Beacon is larger than buffer. Discarding\n"));
-- return err;
-+ return -E2BIG;
- }
- notif_bss_info = kzalloc(sizeof(*notif_bss_info) + sizeof(*mgmt) - sizeof(u8) +
- WL_BSS_INFO_MAX, GFP_KERNEL);
-@@ -1992,9 +1992,15 @@
- beacon_proberesp->capab_info = cpu_to_le16(bi->capability);
- wl_rst_ie(wl);
-
-- wl_mrg_ie(wl, ((u8 *) bi) + bi->ie_offset, bi->ie_length);
-- wl_cp_ie(wl, beacon_proberesp->variable, WL_BSS_INFO_MAX -
-+ err = wl_mrg_ie(wl, ((u8 *) bi) + bi->ie_offset, bi->ie_length);
-+ if (err)
-+ goto inform_single_bss_out;
-+
-+ err = wl_cp_ie(wl, beacon_proberesp->variable, WL_BSS_INFO_MAX -
- offsetof(struct wl_cfg80211_bss_info, frame_buf));
-+ if (err)
-+ goto inform_single_bss_out;
-+
- notif_bss_info->frame_len = offsetof(struct ieee80211_mgmt, u.beacon.variable) +
- wl_get_ielen(wl);
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
-@@ -2006,14 +2012,14 @@
- #endif
- if (freq == 0) {
- WL_ERR(("Invalid channel, fail to chcnage channel to freq\n"));
-- kfree(notif_bss_info);
-- return -EINVAL;
-+ err = -EINVAL;
-+ goto inform_single_bss_out;
- }
- channel = ieee80211_get_channel(wiphy, freq);
- if (unlikely(!channel)) {
- WL_ERR(("ieee80211_get_channel error\n"));
-- kfree(notif_bss_info);
-- return -EINVAL;
-+ err = -EINVAL;
-+ goto inform_single_bss_out;
- }
-
- WL_DBG(("SSID : \"%s\", rssi %d, channel %d, capability : 0x04%x, bssid %pM\n",
-@@ -2021,28 +2027,37 @@
- mgmt->u.beacon.capab_info, &bi->BSSID));
-
- signal = notif_bss_info->rssi * 100;
-- cbss = cfg80211_inform_bss_frame(wiphy, channel, mgmt,
-- le16_to_cpu(notif_bss_info->frame_len), signal, GFP_KERNEL);
-- if (unlikely(!cbss)) {
-- WL_ERR(("cfg80211_inform_bss_frame error\n"));
-- kfree(notif_bss_info);
-- return -EINVAL;
-- }
-
-- notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset);
-- notify_ielen = le32_to_cpu(bi->ie_length);
-+ if (!wl->scan_request) {
-+ cbss = cfg80211_inform_bss_frame(wiphy, channel, mgmt,
-+ le16_to_cpu(notif_bss_info->frame_len), signal, GFP_KERNEL);
-+ if (unlikely(!cbss)) {
-+ WL_ERR(("cfg80211_inform_bss_frame error\n"));
-+ err = -ENOMEM;
-+ goto inform_single_bss_out;
-+ }
-+ } else {
-+ notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset);
-+ notify_ielen = le32_to_cpu(bi->ie_length);
- #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
-- cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet),
-- 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
-- (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
-+ cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet),
-+ 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
-+ (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
- #else
-- cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet),
-- 0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
-- (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
-+ cbss = cfg80211_inform_bss(wiphy, channel,
-+ wl->active_scan ?
-+ CFG80211_BSS_FTYPE_PRESP : CFG80211_BSS_FTYPE_BEACON,
-+ (const u8 *)(bi->BSSID.octet), 0,
-+ beacon_proberesp->capab_info,
-+ beacon_proberesp->beacon_int,
-+ (const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
- #endif
--
-- if (unlikely(!cbss))
-- return -ENOMEM;
-+ if (unlikely(!cbss)) {
-+ WL_ERR(("cfg80211_inform_bss error\n"));
-+ err = -ENOMEM;
-+ goto inform_single_bss_out;
-+ }
-+ }
-
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
- cfg80211_put_bss(wiphy, cbss);
-@@ -2050,6 +2065,7 @@
- cfg80211_put_bss(cbss);
- #endif
-
-+inform_single_bss_out:
- kfree(notif_bss_info);
-
- return err;
-@@ -2316,6 +2332,9 @@
- if (err)
- goto update_bss_info_out;
-
-+ bss = cfg80211_get_bss(wl_to_wiphy(wl), NULL, (s8 *)&wl->bssid,
-+ ssid->SSID, ssid->SSID_len, WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS);
-+
- ie = ((u8 *)bi) + bi->ie_offset;
- ie_len = bi->ie_length;
- } else {
-@@ -2328,11 +2347,18 @@
- ie_len = bss->len_information_elements;
- #endif
- wl->conf->channel = *bss->channel;
-+ }
-+
-+ if (bss) {
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
- cfg80211_put_bss(wiphy, bss);
- #else
- cfg80211_put_bss(bss);
- #endif
-+ } else {
-+ WL_DBG(("Could not update BSS\n"));
-+ err = -EINVAL;
-+ goto update_bss_info_out;
- }
-
- tim = bcm_parse_tlvs(ie, ie_len, WLAN_EID_TIM);
-@@ -2360,10 +2386,17 @@
- struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl);
- s32 err = 0;
-
-- wl_get_assoc_ies(wl);
-+ err = wl_get_assoc_ies(wl);
-+ if (err)
-+ return err;
-+
- memcpy(wl->profile->bssid, &e->addr, ETHER_ADDR_LEN);
- memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
-- wl_update_bss_info(wl);
-+
-+ err = wl_update_bss_info(wl);
-+ if (err)
-+ return err;
-+
- cfg80211_roamed(ndev,
- #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
- &wl->conf->channel,
diff --git a/nongnu/packages/patches/broadcom-sta-fix_mac_profile_discrepancy.patch b/nongnu/packages/patches/broadcom-sta-fix_mac_profile_discrepancy.patch
deleted file mode 100644
index 586bfcc..0000000
--- a/nongnu/packages/patches/broadcom-sta-fix_mac_profile_discrepancy.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-https://bugs.archlinux.org/task/61090
-
---- a/src/wl/sys/wl_cfg80211_hybrid.c 2015-09-19 00:47:30.000000000 +0200
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2018-11-14 14:06:03.313487995 +0100
-@@ -1444,11 +1444,10 @@
- s32 rate;
- s32 err = 0;
-
- if (memcmp(mac, wl->profile->bssid, ETHER_ADDR_LEN)) {
- WL_ERR(("Wrong Mac address, mac = %pM profile =%pM\n", mac, wl->profile->bssid));
-- return -ENOENT;
- }
-
- err = wl_dev_ioctl(dev, WLC_GET_RATE, &rate, sizeof(rate));
- if (err) {
- WL_DBG(("Could not get rate (%d)\n", err));
diff --git a/nongnu/packages/patches/broadcom-sta-gcc.patch b/nongnu/packages/patches/broadcom-sta-gcc.patch
deleted file mode 100644
index f93e3f1..0000000
--- a/nongnu/packages/patches/broadcom-sta-gcc.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/Makefile 2014-06-26 10:42:08.000000000 +0000
-+++ b/Makefile 2014-07-17 22:44:01.662297228 +0000
-@@ -126,6 +126,8 @@
- EXTRA_CFLAGS += -I$(src)/src/shared/bcmwifi/include
- #EXTRA_CFLAGS += -DBCMDBG_ASSERT -DBCMDBG_ERR
-
-+EXTRA_CFLAGS += -Wno-date-time
-+
- EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped
-
- KBASE ?= /lib/modules/`uname -r`
diff --git a/nongnu/packages/patches/broadcom-sta-license.patch b/nongnu/packages/patches/broadcom-sta-license.patch
deleted file mode 100644
index aebb463..0000000
--- a/nongnu/packages/patches/broadcom-sta-license.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -Naur hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c
---- hybrid-portsrc-x86_32-v5_10_91_9.orig/src/wl/sys/wl_linux.c 2009-04-23 02:48:59.000000000 +0900
-+++ hybrid-portsrc-x86_32-v5_10_91_9/src/wl/sys/wl_linux.c 2009-05-08 00:48:20.000000000 +0900
-@@ -171,6 +171,8 @@
- static void wl_free_if(wl_info_t *wl, wl_if_t *wlif);
- static void wl_get_driver_info(struct net_device *dev, struct ethtool_drvinfo *info);
-
-+MODULE_LICENSE("MIXED/Proprietary");
-+
- #if defined(WL_CONFIG_RFKILL)
- #include <linux/rfkill.h>
- static int wl_init_rfkill(wl_info_t *wl);
-
diff --git a/nongnu/packages/patches/broadcom-sta-linux-4.11.patch b/nongnu/packages/patches/broadcom-sta-linux-4.11.patch
deleted file mode 100644
index a779f8c..0000000
--- a/nongnu/packages/patches/broadcom-sta-linux-4.11.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
-index a9671e2..da36405 100644
---- a/src/wl/sys/wl_cfg80211_hybrid.c
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c
-@@ -30,6 +30,9 @@
- #include <linux/kthread.h>
- #include <linux/netdevice.h>
- #include <linux/ieee80211.h>
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
-+#include <linux/sched/signal.h>
-+#endif
- #include <net/cfg80211.h>
- #include <linux/nl80211.h>
- #include <net/rtnetlink.h>
-diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
-index 489c9f5..f8278ad 100644
---- a/src/wl/sys/wl_linux.c
-+++ b/src/wl/sys/wl_linux.c
-@@ -117,6 +117,9 @@ int wl_found = 0;
-
- typedef struct priv_link {
- wl_if_t *wlif;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
-+ unsigned long last_rx;
-+#endif
- } priv_link_t;
-
- #define WL_DEV_IF(dev) ((wl_if_t*)((priv_link_t*)DEV_PRIV(dev))->wlif)
-@@ -2450,6 +2453,9 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rxsts, void *p)
- {
- struct sk_buff *oskb = (struct sk_buff *)p;
- struct sk_buff *skb;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
-+ priv_link_t *priv_link;
-+#endif
- uchar *pdata;
- uint len;
-
-@@ -2916,7 +2922,13 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rxsts, void *p)
- if (skb == NULL) return;
-
- skb->dev = wl->monitor_dev;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
-+ priv_link = MALLOC(wl->osh, sizeof(priv_link_t));
-+ priv_link = netdev_priv(skb->dev);
-+ priv_link->last_rx = jiffies;
-+#else
- skb->dev->last_rx = jiffies;
-+#endif
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
- skb_reset_mac_header(skb);
- #else
diff --git a/nongnu/packages/patches/broadcom-sta-linux-4.12.patch b/nongnu/packages/patches/broadcom-sta-linux-4.12.patch
deleted file mode 100644
index 8abc73d..0000000
--- a/nongnu/packages/patches/broadcom-sta-linux-4.12.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
-index da36405..d3741eb 100644
---- a/src/wl/sys/wl_cfg80211_hybrid.c
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c
-@@ -53,7 +53,11 @@ u32 wl_dbg_level = WL_DBG_ERR;
- #endif
-
- static s32 wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev,
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
-+ enum nl80211_iftype type, struct vif_params *params);
-+#else
- enum nl80211_iftype type, u32 *flags, struct vif_params *params);
-+#endif
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
- static s32
- wl_cfg80211_scan(struct wiphy *wiphy,
-@@ -466,7 +470,11 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
-
- static s32
- wl_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev,
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
-+ enum nl80211_iftype type,
-+#else
- enum nl80211_iftype type, u32 *flags,
-+#endif
- struct vif_params *params)
- {
- struct wl_cfg80211_priv *wl = wiphy_to_wl(wiphy);
-@@ -2361,6 +2369,20 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev,
- const wl_event_msg_t *e, void *data)
- {
- struct wl_cfg80211_connect_info *conn_info = wl_to_conn(wl);
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
-+ struct cfg80211_bss *bss;
-+ struct wlc_ssid *ssid;
-+ ssid = &wl->profile->ssid;
-+ bss = cfg80211_get_bss(wl_to_wiphy(wl), NULL, (s8 *)&wl->bssid,
-+ ssid->SSID, ssid->SSID_len, WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS);
-+ struct cfg80211_roam_info roam_info = {
-+ .bss = bss,
-+ .req_ie = conn_info->req_ie,
-+ .req_ie_len = conn_info->req_ie_len,
-+ .resp_ie = conn_info->resp_ie,
-+ .resp_ie_len = conn_info->resp_ie_len,
-+ };
-+#endif
- s32 err = 0;
-
- wl_get_assoc_ies(wl);
-@@ -2368,12 +2390,17 @@ wl_bss_roaming_done(struct wl_cfg80211_priv *wl, struct net_device *ndev,
- memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
- wl_update_bss_info(wl);
- cfg80211_roamed(ndev,
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
-+ &roam_info,
-+#else
- #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
- &wl->conf->channel,
- #endif
- (u8 *)&wl->bssid,
- conn_info->req_ie, conn_info->req_ie_len,
-- conn_info->resp_ie, conn_info->resp_ie_len, GFP_KERNEL);
-+ conn_info->resp_ie, conn_info->resp_ie_len,
-+#endif
-+ GFP_KERNEL);
- WL_DBG(("Report roaming result\n"));
-
- set_bit(WL_STATUS_CONNECTED, &wl->status);
diff --git a/nongnu/packages/patches/broadcom-sta-linux-4.15.patch b/nongnu/packages/patches/broadcom-sta-linux-4.15.patch
deleted file mode 100644
index 523fa29..0000000
--- a/nongnu/packages/patches/broadcom-sta-linux-4.15.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-See: https://lkml.org/lkml/2017/11/25/90
-
-diff -urNZ a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
---- a/src/wl/sys/wl_linux.c 2015-09-18 22:47:30.000000000 +0000
-+++ b/src/wl/sys/wl_linux.c 2018-01-31 22:52:10.859856221 +0000
-@@ -93,7 +93,11 @@
-
- #include <wlc_wowl.h>
-
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
-+static void wl_timer(struct timer_list *tl);
-+#else
- static void wl_timer(ulong data);
-+#endif
- static void _wl_timer(wl_timer_t *t);
- static struct net_device *wl_alloc_linux_if(wl_if_t *wlif);
-
-@@ -2298,9 +2302,15 @@
- }
-
- static void
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
-+wl_timer(struct timer_list *tl)
-+{
-+ wl_timer_t *t = from_timer(t, tl, timer);
-+#else
- wl_timer(ulong data)
- {
- wl_timer_t *t = (wl_timer_t *)data;
-+#endif
-
- if (!WL_ALL_PASSIVE_ENAB(t->wl))
- _wl_timer(t);
-@@ -2352,9 +2362,13 @@
-
- bzero(t, sizeof(wl_timer_t));
-
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
-+ timer_setup(&t->timer, wl_timer, 0);
-+#else
- init_timer(&t->timer);
- t->timer.data = (ulong) t;
- t->timer.function = wl_timer;
-+#endif
- t->wl = wl;
- t->fn = fn;
- t->arg = arg;
diff --git a/nongnu/packages/patches/broadcom-sta-linux-4.7.patch b/nongnu/packages/patches/broadcom-sta-linux-4.7.patch
deleted file mode 100644
index 566680a..0000000
--- a/nongnu/packages/patches/broadcom-sta-linux-4.7.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-Since Linux 4.7, the enum ieee80211_band is no longer used
-
-This shall cause no problem's since both enums ieee80211_band
-and nl80211_band were added in the same commit:
-https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=13ae75b103e07304a34ab40c9136e9f53e06475c
-
-This patch refactors the references of IEEE80211_BAND_* to NL80211_BAND_*
-
-Reference:
-https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=57fbcce37be7c1d2622b56587c10ade00e96afa3
-
---- a/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:57:36.159340297 -0500
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2016-06-13 11:58:18.442323435 -0500
-@@ -236,7 +236,7 @@
- #endif
-
- #define CHAN2G(_channel, _freq, _flags) { \
-- .band = IEEE80211_BAND_2GHZ, \
-+ .band = NL80211_BAND_2GHZ, \
- .center_freq = (_freq), \
- .hw_value = (_channel), \
- .flags = (_flags), \
-@@ -245,7 +245,7 @@
- }
-
- #define CHAN5G(_channel, _flags) { \
-- .band = IEEE80211_BAND_5GHZ, \
-+ .band = NL80211_BAND_5GHZ, \
- .center_freq = 5000 + (5 * (_channel)), \
- .hw_value = (_channel), \
- .flags = (_flags), \
-@@ -379,7 +379,7 @@
- };
-
- static struct ieee80211_supported_band __wl_band_2ghz = {
-- .band = IEEE80211_BAND_2GHZ,
-+ .band = NL80211_BAND_2GHZ,
- .channels = __wl_2ghz_channels,
- .n_channels = ARRAY_SIZE(__wl_2ghz_channels),
- .bitrates = wl_g_rates,
-@@ -387,7 +387,7 @@
- };
-
- static struct ieee80211_supported_band __wl_band_5ghz_a = {
-- .band = IEEE80211_BAND_5GHZ,
-+ .band = NL80211_BAND_5GHZ,
- .channels = __wl_5ghz_a_channels,
- .n_channels = ARRAY_SIZE(__wl_5ghz_a_channels),
- .bitrates = wl_a_rates,
-@@ -395,7 +395,7 @@
- };
-
- static struct ieee80211_supported_band __wl_band_5ghz_n = {
-- .band = IEEE80211_BAND_5GHZ,
-+ .band = NL80211_BAND_5GHZ,
- .channels = __wl_5ghz_n_channels,
- .n_channels = ARRAY_SIZE(__wl_5ghz_n_channels),
- .bitrates = wl_a_rates,
-@@ -1876,8 +1876,8 @@
- wdev->wiphy->max_num_pmkids = WL_NUM_PMKIDS_MAX;
- #endif
- wdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC);
-- wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = &__wl_band_2ghz;
-- wdev->wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_a;
-+ wdev->wiphy->bands[NL80211_BAND_2GHZ] = &__wl_band_2ghz;
-+ wdev->wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_a;
- wdev->wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
- wdev->wiphy->cipher_suites = __wl_cipher_suites;
- wdev->wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites);
-@@ -2000,7 +2000,7 @@
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
- freq = ieee80211_channel_to_frequency(notif_bss_info->channel,
- (notif_bss_info->channel <= CH_MAX_2G_CHANNEL) ?
-- IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ);
-+ NL80211_BAND_2GHZ : NL80211_BAND_5GHZ);
- #else
- freq = ieee80211_channel_to_frequency(notif_bss_info->channel);
- #endif
-@@ -2116,7 +2116,7 @@
- return err;
- }
- chan = wf_chspec_ctlchan(chanspec);
-- band = (chan <= CH_MAX_2G_CHANNEL) ? IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ;
-+ band = (chan <= CH_MAX_2G_CHANNEL) ? NL80211_BAND_2GHZ : NL80211_BAND_5GHZ;
- freq = ieee80211_channel_to_frequency(chan, band);
- channel = ieee80211_get_channel(wiphy, freq);
- cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL);
-@@ -2250,10 +2250,10 @@
- join_params->params.chanspec_list[0] =
- ieee80211_frequency_to_channel(chan->center_freq);
-
-- if (chan->band == IEEE80211_BAND_2GHZ) {
-+ if (chan->band == NL80211_BAND_2GHZ) {
- chanspec |= WL_CHANSPEC_BAND_2G;
- }
-- else if (chan->band == IEEE80211_BAND_5GHZ) {
-+ else if (chan->band == NL80211_BAND_5GHZ) {
- chanspec |= WL_CHANSPEC_BAND_5G;
- }
- else {
-@@ -2885,7 +2885,7 @@
-
- if (phy == 'n' || phy == 'a' || phy == 'v') {
- wiphy = wl_to_wiphy(wl);
-- wiphy->bands[IEEE80211_BAND_5GHZ] = &__wl_band_5ghz_n;
-+ wiphy->bands[NL80211_BAND_5GHZ] = &__wl_band_5ghz_n;
- }
-
- return err;
diff --git a/nongnu/packages/patches/broadcom-sta-linux-4.8.patch b/nongnu/packages/patches/broadcom-sta-linux-4.8.patch
deleted file mode 100644
index 20e8a9a..0000000
--- a/nongnu/packages/patches/broadcom-sta-linux-4.8.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From d3f93542326a06d920c6eb89b703384290d37b8b Mon Sep 17 00:00:00 2001
-From: Alberto Milone <alberto.milone@canonical.com>
-Date: Fri, 2 Sep 2016 17:35:34 +0200
-Subject: [PATCH 1/1] Add support for Linux 4.8
-
-Orginal author: Krzysztof Kolasa
----
- src/wl/sys/wl_cfg80211_hybrid.c | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
-diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
-index 2fc71fe..ec5e472 100644
---- a/src/wl/sys/wl_cfg80211_hybrid.c
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c
-@@ -2388,8 +2388,16 @@ wl_bss_connect_done(struct wl_cfg80211_priv *wl, struct net_device *ndev,
- s32 err = 0;
-
- if (wl->scan_request) {
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
-+ struct cfg80211_scan_info info = {
-+ .aborted = true,
-+ };
-+ WL_DBG(("%s: Aborting scan\n", __FUNCTION__));
-+ cfg80211_scan_done(wl->scan_request, &info);
-+#else
- WL_DBG(("%s: Aborting scan\n", __FUNCTION__));
- cfg80211_scan_done(wl->scan_request, true);
-+#endif
- wl->scan_request = NULL;
- }
-
-@@ -2490,7 +2498,14 @@ wl_notify_scan_status(struct wl_cfg80211_priv *wl, struct net_device *ndev,
-
- scan_done_out:
- if (wl->scan_request) {
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
-+ struct cfg80211_scan_info info = {
-+ .aborted = false,
-+ };
-+ cfg80211_scan_done(wl->scan_request, &info);
-+#else
- cfg80211_scan_done(wl->scan_request, false);
-+#endif
- wl->scan_request = NULL;
- }
- rtnl_unlock();
-@@ -2909,7 +2924,14 @@ s32 wl_cfg80211_down(struct net_device *ndev)
- s32 err = 0;
-
- if (wl->scan_request) {
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
-+ struct cfg80211_scan_info info = {
-+ .aborted = true,
-+ };
-+ cfg80211_scan_done(wl->scan_request, &info);
-+#else
- cfg80211_scan_done(wl->scan_request, true);
-+#endif
- wl->scan_request = NULL;
- }
-
---
-2.7.4
-
diff --git a/nongnu/packages/patches/broadcom-sta-linux-5.1.patch b/nongnu/packages/patches/broadcom-sta-linux-5.1.patch
deleted file mode 100644
index 8f04a73..0000000
--- a/nongnu/packages/patches/broadcom-sta-linux-5.1.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-commit bcb06af629a36eb84f9a35ac599ec7e51e2d39fb
-Author: georgewhewell <georgerw@gmail.com>
-Date: Sat May 18 21:22:37 2019 +0100
-
- find src -type f -name \'*.c\' -exec sed -i "s/get_ds()/KERNEL_DS/g" {} \;
-
-diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
-index 7b606e0..51c81bc 100644
---- a/src/wl/sys/wl_cfg80211_hybrid.c
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c
-@@ -450,7 +450,7 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
- ifr.ifr_data = (caddr_t)&ioc;
-
- fs = get_fs();
-- set_fs(get_ds());
-+ set_fs(KERNEL_DS);
- #if defined(WL_USE_NETDEV_OPS)
- err = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
- #else
-diff --git a/src/wl/sys/wl_iw.c b/src/wl/sys/wl_iw.c
-index c4c610b..9c3c74e 100644
---- a/src/wl/sys/wl_iw.c
-+++ b/src/wl/sys/wl_iw.c
-@@ -117,7 +117,7 @@ dev_wlc_ioctl(
- ifr.ifr_data = (caddr_t) &ioc;
-
- fs = get_fs();
-- set_fs(get_ds());
-+ set_fs(KERNEL_DS);
- #if defined(WL_USE_NETDEV_OPS)
- ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
- #else
diff --git a/nongnu/packages/patches/broadcom-sta-linux-5.10.patch b/nongnu/packages/patches/broadcom-sta-linux-5.10.patch
deleted file mode 100644
index c77fdc5..0000000
--- a/nongnu/packages/patches/broadcom-sta-linux-5.10.patch
+++ /dev/null
@@ -1,211 +0,0 @@
-From f3d652840f8dd959395065a1cf67ca40b04ec69b Mon Sep 17 00:00:00 2001
-From: Joan Bruguera <joanbrugueram@gmail.com>
-Date: Tue, 13 Oct 2020 19:35:55 +0200
-Subject: [PATCH] Get rid of get_fs/set_fs calls in Broadcom WL driver.
-
-Tentative patch for broadcom-wl 6.30.223.271 driver for Linux 5.10 (tested -rc1 up to 5.10.1)
-
-Applies on top of all the patches applied to broadcom-wl-dkms 6.30.223.271-23 on Arch Linux.
-
-NB: Some checks in wlc_ioctl_internal are likely superfluous,
- but I'm not familiar enough with the driver to remove them with confidence.
-
-See also: https://lwn.net/Articles/722267/
- https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=47058bb54b57962b3958a936ddbc59355e4c5504
- https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5e6e9852d6f76e01b2e6803c74258afa5b432bc5
-
-Signed-off-by: Joan Bruguera <joanbrugueram@gmail.com>
----
- src/wl/sys/wl_cfg80211_hybrid.c | 25 ++-------------------
- src/wl/sys/wl_iw.c | 25 ++-------------------
- src/wl/sys/wl_linux.c | 40 ++++++++++++++++++++++++++++-----
- src/wl/sys/wl_linux.h | 2 ++
- src/wl/sys/wlc_pub.h | 1 +
- 5 files changed, 42 insertions(+), 51 deletions(-)
-
-diff --git a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
-index 73c4b82..2e6df32 100644
---- a/src/wl/sys/wl_cfg80211_hybrid.c
-+++ b/src/wl/sys/wl_cfg80211_hybrid.c
-@@ -38,6 +38,7 @@
- #include <wlioctl.h>
- #include <proto/802.11.h>
- #include <wl_cfg80211_hybrid.h>
-+#include <wl_linux.h>
-
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
- #include <linux/sched/signal.h>
-@@ -443,30 +444,8 @@ static void key_endian_to_host(struct wl_wsec_key *key)
- static s32
- wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
- {
-- struct ifreq ifr;
-- struct wl_ioctl ioc;
-- mm_segment_t fs;
-- s32 err = 0;
--
- BUG_ON(len < sizeof(int));
--
-- memset(&ioc, 0, sizeof(ioc));
-- ioc.cmd = cmd;
-- ioc.buf = arg;
-- ioc.len = len;
-- strcpy(ifr.ifr_name, dev->name);
-- ifr.ifr_data = (caddr_t)&ioc;
--
-- fs = get_fs();
-- set_fs(KERNEL_DS);
--#if defined(WL_USE_NETDEV_OPS)
-- err = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
--#else
-- err = dev->do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
--#endif
-- set_fs(fs);
--
-- return err;
-+ return wlc_ioctl_internal(dev, cmd, arg, len);
- }
-
- static s32
-diff --git a/src/wl/sys/wl_iw.c b/src/wl/sys/wl_iw.c
-index 9c3c74e..e346b15 100644
---- a/src/wl/sys/wl_iw.c
-+++ b/src/wl/sys/wl_iw.c
-@@ -37,6 +37,7 @@ typedef const struct si_pub si_t;
-
- #include <wl_dbg.h>
- #include <wl_iw.h>
-+#include <wl_linux.h>
-
- extern bool wl_iw_conn_status_str(uint32 event_type, uint32 status,
- uint32 reason, char* stringBuf, uint buflen);
-@@ -103,29 +104,7 @@ dev_wlc_ioctl(
- int len
- )
- {
-- struct ifreq ifr;
-- wl_ioctl_t ioc;
-- mm_segment_t fs;
-- int ret;
--
-- memset(&ioc, 0, sizeof(ioc));
-- ioc.cmd = cmd;
-- ioc.buf = arg;
-- ioc.len = len;
--
-- strcpy(ifr.ifr_name, dev->name);
-- ifr.ifr_data = (caddr_t) &ioc;
--
-- fs = get_fs();
-- set_fs(KERNEL_DS);
--#if defined(WL_USE_NETDEV_OPS)
-- ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
--#else
-- ret = dev->do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
--#endif
-- set_fs(fs);
--
-- return ret;
-+ return wlc_ioctl_internal(dev, cmd, arg, len);
- }
-
- static int
-diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
-index cca7ee1..e491df7 100644
---- a/src/wl/sys/wl_linux.c
-+++ b/src/wl/sys/wl_linux.c
-@@ -1647,10 +1647,7 @@ wl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
- goto done2;
- }
-
-- if (get_fs().seg == KERNEL_DS.seg)
-- buf = ioc.buf;
--
-- else if (ioc.buf) {
-+ if (ioc.buf) {
- if (!(buf = (void *) MALLOC(wl->osh, MAX(ioc.len, WLC_IOCTL_MAXLEN)))) {
- bcmerror = BCME_NORESOURCE;
- goto done2;
-@@ -1671,7 +1668,7 @@ wl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
- WL_UNLOCK(wl);
-
- done1:
-- if (ioc.buf && (ioc.buf != buf)) {
-+ if (ioc.buf) {
- if (copy_to_user(ioc.buf, buf, ioc.len))
- bcmerror = BCME_BADADDR;
- MFREE(wl->osh, buf, MAX(ioc.len, WLC_IOCTL_MAXLEN));
-@@ -1684,6 +1681,39 @@ done2:
- return (OSL_ERROR(bcmerror));
- }
-
-+int
-+wlc_ioctl_internal(struct net_device *dev, int cmd, void *buf, int len)
-+{
-+ wl_info_t *wl;
-+ wl_if_t *wlif;
-+ int bcmerror;
-+
-+ if (!dev)
-+ return -ENETDOWN;
-+
-+ wl = WL_INFO(dev);
-+ wlif = WL_DEV_IF(dev);
-+ if (wlif == NULL || wl == NULL || wl->dev == NULL)
-+ return -ENETDOWN;
-+
-+ bcmerror = 0;
-+
-+ WL_TRACE(("wl%d: wlc_ioctl_internal: cmd 0x%x\n", wl->pub->unit, cmd));
-+
-+ WL_LOCK(wl);
-+ if (!capable(CAP_NET_ADMIN)) {
-+ bcmerror = BCME_EPERM;
-+ } else {
-+ bcmerror = wlc_ioctl(wl->wlc, cmd, buf, len, wlif->wlcif);
-+ }
-+ WL_UNLOCK(wl);
-+
-+ ASSERT(VALID_BCMERROR(bcmerror));
-+ if (bcmerror != 0)
-+ wl->pub->bcmerror = bcmerror;
-+ return (OSL_ERROR(bcmerror));
-+}
-+
- static struct net_device_stats*
- wl_get_stats(struct net_device *dev)
- {
-diff --git a/src/wl/sys/wl_linux.h b/src/wl/sys/wl_linux.h
-index 5b1048e..c8c1f41 100644
---- a/src/wl/sys/wl_linux.h
-+++ b/src/wl/sys/wl_linux.h
-@@ -22,6 +22,7 @@
- #define _wl_linux_h_
-
- #include <wlc_types.h>
-+#include <wlc_pub.h>
-
- typedef struct wl_timer {
- struct timer_list timer;
-@@ -187,6 +188,7 @@ extern irqreturn_t wl_isr(int irq, void *dev_id, struct pt_regs *ptregs);
- extern int __devinit wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
- extern void wl_free(wl_info_t *wl);
- extern int wl_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
-+extern int wlc_ioctl_internal(struct net_device *dev, int cmd, void *buf, int len);
- extern struct net_device * wl_netdev_get(wl_info_t *wl);
-
- #endif
-diff --git a/src/wl/sys/wlc_pub.h b/src/wl/sys/wlc_pub.h
-index 53a98b8..2b5a029 100644
---- a/src/wl/sys/wlc_pub.h
-+++ b/src/wl/sys/wlc_pub.h
-@@ -24,6 +24,7 @@
-
- #include <wlc_types.h>
- #include <wlc_utils.h>
-+#include <siutils.h>
- #include "proto/802.11.h"
- #include "proto/bcmevent.h"
-
---
-2.28.0
diff --git a/nongnu/packages/patches/broadcom-sta-linux-5.6.patch b/nongnu/packages/patches/broadcom-sta-linux-5.6.patch
deleted file mode 100644
index df5af79..0000000
--- a/nongnu/packages/patches/broadcom-sta-linux-5.6.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From dd057e40a167f4febb1a7c77dd32b7d36056952c Mon Sep 17 00:00:00 2001
-From: Herman van Hazendonk <github.com@herrie.org>
-Date: Tue, 31 Mar 2020 17:09:55 +0200
-Subject: [PATCH] Add fixes for 5.6 kernel
-
-Use ioremap instead of ioremap_nocache and proc_ops instead of file_operations on Linux kernel 5.6 and above.
-
-Signed-off-by: Herman van Hazendonk <github.com@herrie.org>
----
- src/shared/linux_osl.c | 6 +++++-
- src/wl/sys/wl_linux.c | 21 ++++++++++++++++++++-
- 2 files changed, 25 insertions(+), 2 deletions(-)
-
-diff --git a/src/shared/linux_osl.c b/src/shared/linux_osl.c
-index 6157d18..dcfc075 100644
---- a/src/shared/linux_osl.c
-+++ b/src/shared/linux_osl.c
-@@ -942,7 +942,11 @@ osl_getcycles(void)
- void *
- osl_reg_map(uint32 pa, uint size)
- {
-- return (ioremap_nocache((unsigned long)pa, (unsigned long)size));
-+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
-+ return (ioremap((unsigned long)pa, (unsigned long)size));
-+ #else
-+ return (ioremap_nocache((unsigned long)pa, (unsigned long)size));
-+ #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) */
- }
-
- void
-diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
-index 0d05100..6d9dd0d 100644
---- a/src/wl/sys/wl_linux.c
-+++ b/src/wl/sys/wl_linux.c
-@@ -582,10 +582,17 @@ wl_attach(uint16 vendor, uint16 device, ulong regs,
- }
- wl->bcm_bustype = bustype;
-
-+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
-+ if ((wl->regsva = ioremap(dev->base_addr, PCI_BAR0_WINSZ)) == NULL) {
-+ WL_ERROR(("wl%d: ioremap() failed\n", unit));
-+ goto fail;
-+ }
-+ #else
- if ((wl->regsva = ioremap_nocache(dev->base_addr, PCI_BAR0_WINSZ)) == NULL) {
- WL_ERROR(("wl%d: ioremap() failed\n", unit));
- goto fail;
- }
-+ #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) */
-
- wl->bar1_addr = bar1_addr;
- wl->bar1_size = bar1_size;
-@@ -772,8 +779,13 @@ wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
- if ((val & 0x0000ff00) != 0)
- pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
- bar1_size = pci_resource_len(pdev, 2);
-+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
-+ bar1_addr = (uchar *)ioremap(pci_resource_start(pdev, 2),
-+ bar1_size);
-+ #else
- bar1_addr = (uchar *)ioremap_nocache(pci_resource_start(pdev, 2),
- bar1_size);
-+ #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) */
- wl = wl_attach(pdev->vendor, pdev->device, pci_resource_start(pdev, 0), PCI_BUS, pdev,
- pdev->irq, bar1_addr, bar1_size);
-
-@@ -3335,12 +3347,19 @@ wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t
- }
-
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
-+static const struct proc_ops wl_fops = {
-+ .proc_read = wl_proc_read,
-+ .proc_write = wl_proc_write,
-+};
-+#else
- static const struct file_operations wl_fops = {
- .owner = THIS_MODULE,
- .read = wl_proc_read,
- .write = wl_proc_write,
- };
--#endif
-+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) */
-+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) */
-
- static int
- wl_reg_proc_entry(wl_info_t *wl)
diff --git a/nongnu/packages/patches/broadcom-sta-linux-5.9.patch b/nongnu/packages/patches/broadcom-sta-linux-5.9.patch
deleted file mode 100644
index 56de11d..0000000
--- a/nongnu/packages/patches/broadcom-sta-linux-5.9.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -u -r a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
---- a/src/wl/sys/wl_linux.c 2020-10-12 21:19:15.256305165 +0000
-+++ b/src/wl/sys/wl_linux.c 2020-10-12 21:20:38.687530895 +0000
-@@ -1643,7 +1643,7 @@
- goto done2;
- }
-
-- if (segment_eq(get_fs(), KERNEL_DS))
-+ if (get_fs().seg == KERNEL_DS.seg)
- buf = ioc.buf;
-
- else if (ioc.buf) {
diff --git a/nongnu/packages/patches/broadcom-sta-null-pointer-fix.patch b/nongnu/packages/patches/broadcom-sta-null-pointer-fix.patch
deleted file mode 100644
index adef19f..0000000
--- a/nongnu/packages/patches/broadcom-sta-null-pointer-fix.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Description: Fixing null pointer crash
-
-Origin: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773713
-Bug-Ubuntu: https://launchpad.net/bugs/1415880
-Last-Update: 2015-08-18
-
----
- src/wl/sys/wl_linux.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
-index 860b935..295156f 100644
---- a/src/wl/sys/wl_linux.c
-+++ b/src/wl/sys/wl_linux.c
-@@ -2157,8 +2157,8 @@ wl_start(struct sk_buff *skb, struct net_device *dev)
- wlif = WL_DEV_IF(dev);
- wl = WL_INFO(dev);
-
-+ skb->prev = NULL;
- if (WL_ALL_PASSIVE_ENAB(wl) || (WL_RTR() && WL_CONFIG_SMP())) {
-- skb->prev = NULL;
-
- TXQ_LOCK(wl);
-
---
-1.9.1
-
diff --git a/nongnu/packages/patches/broadcom-sta-rdtscl.patch b/nongnu/packages/patches/broadcom-sta-rdtscl.patch
deleted file mode 100644
index 1b9862c..0000000
--- a/nongnu/packages/patches/broadcom-sta-rdtscl.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Since Linux 4.3, rdtscl() is no longer available and native_read_tsc()
-is renamed to rdtsc(). Move the macro contents in-line and call the
-new function. References:
-
-https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=fe47ae6e1a5005b2e82f7eab57b5c3820453293a
-https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=4ea1636b04dbd66536fa387bae2eea463efc705b
-
-diff -ru a/src/shared/linux_osl.c b/src/shared/linux_osl.c
---- a/src/shared/linux_osl.c 2015-09-19 01:47:15.000000000 +0300
-+++ b/src/shared/linux_osl.c 2015-11-21 15:20:30.585902518 +0200
-@@ -932,7 +932,11 @@
- uint cycles;
-
- #if defined(__i386__)
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
-+ cycles = (u32)rdtsc();
-+#else
- rdtscl(cycles);
-+#endif
- #else
- cycles = 0;
- #endif
diff --git a/nongnu/packages/playonlinux.scm b/nongnu/packages/playonlinux.scm
index 45f8340..8027c2d 100644
--- a/nongnu/packages/playonlinux.scm
+++ b/nongnu/packages/playonlinux.scm
@@ -1,20 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
-;;;
-;;; This file is not 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 (nongnu packages playonlinux)
#:use-module ((guix licenses) :prefix license:)
diff --git a/nongnu/packages/printers.scm b/nongnu/packages/printers.scm
index 6a10da2..77d5f98 100644
--- a/nongnu/packages/printers.scm
+++ b/nongnu/packages/printers.scm
@@ -1,26 +1,12 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2021 Kahka F
-;;; Copyright © 2021 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2021, 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (nongnu packages printers)
#:use-module (gnu packages)
#:use-module (gnu packages cups)
+ #:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
@@ -29,149 +15,147 @@
(define-public hplip-plugin
(package
- (inherit hplip)
- (name "hplip-plugin")
- (description "Hewlett-Packard printer drivers with nonfree plugin.")
- (source (origin (inherit (package-source hplip))
- (snippet
- (delete '(for-each
- delete-file
- (find-files "." (lambda
- (file stat)
- (elf-file? file))))
- (origin-snippet (package-source hplip))))))
- (inputs (alist-delete "python-pyqt" (package-inputs hplip)))
- (native-inputs
- (append
- `(("hplip-plugin"
- ,(origin
- (method url-fetch)
- (uri (string-append "https://developers.hp.com/sites/default/files/hplip-"
- (package-version hplip) "-plugin.run"))
- (sha256
- (base32
- "1ffqnmmghxqclv66qq14wypfha2xalcrbrjw0dqkmpvbnzwbn49g")))))
- (package-native-inputs hplip)))
- (arguments
- (substitute-keyword-arguments
- (package-arguments hplip)
- ((#:configure-flags cf)
- `(delete "--enable-qt5" ,cf))
- ((#:phases ph)
- `(modify-phases
- ,ph
- (replace
- 'fix-hard-coded-file-names
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- ;; FIXME: use merged ppds (I think actually only
- ;; drvs need to be merged).
- (cupsdir (assoc-ref inputs "cups-minimal")))
- (substitute* "base/g.py"
- (("'/usr/share;[^']*'")
- (string-append "'" cupsdir "/share'"))
- (("'/etc/hp/hplip.conf'")
- (string-append "'" out
- "/etc/hp/hplip.conf" "'"))
- (("/var/lib/hp")
- (string-append
- out
- "/var/lib/hp")))
+ (inherit hplip)
+ (name "hplip-plugin")
+ (description "Hewlett-Packard printer drivers with nonfree plugin.")
+ (source (origin
+ (inherit (package-source hplip))
+ (snippet
+ (delete '(for-each
+ delete-file
+ (find-files "." (lambda (file stat)
+ (elf-file? file))))
+ (origin-snippet (package-source hplip))))))
+ (inputs (alist-delete "python-pyqt" (package-inputs hplip)))
+ (native-inputs
+ (append
+ `(("hplip-plugin"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append "https://developers.hp.com/sites/default/files/hplip-"
+ (package-version hplip) "-plugin.run"))
+ ;; TODO: Since this needs to be updated on every update to Guix's
+ ;; hplip in order to build, might be better to decouple this
+ ;; package from hplip. In the meantime, update this hash when
+ ;; hplip is updated in Guix.
+ (sha256
+ (base32
+ "0zq66hm7ni6w1c3cxy1gxrxzvyvfn0lhjnia8p4azvz2r309j9s0")))))
+ (package-native-inputs hplip)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments hplip)
+ ((#:configure-flags cf)
+ #~(delete "--enable-qt5" #$cf))
+ ((#:phases ph)
+ #~(modify-phases #$ph
+ (replace 'fix-hard-coded-file-names
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ ;; FIXME: use merged ppds (I think actually only
+ ;; drvs need to be merged).
+ (cupsdir (assoc-ref inputs "cups-minimal")))
+ (substitute* "base/g.py"
+ (("'/usr/share;[^']*'")
+ (string-append "'" cupsdir "/share'"))
+ (("'/etc/hp/hplip.conf'")
+ (string-append "'" out
+ "/etc/hp/hplip.conf" "'"))
+ (("/var/lib/hp")
+ (string-append
+ out
+ "/var/lib/hp")))
- (substitute* "Makefile.in"
- (("[[:blank:]]check-plugin\\.py[[:blank:]]") " ")
- ;; FIXME Use beginning-of-word in regexp.
- (("[[:blank:]]plugin\\.py[[:blank:]]") " ")
- (("/usr/include/libusb-1.0")
- (string-append (assoc-ref inputs "libusb")
- "/include/libusb-1.0"))
- (("hplip_statedir =.*$")
- ;; Don't bail out while trying to create
- ;; /var/lib/hplip. We can safely change its value
- ;; here because it's hard-coded in the code anyway.
- "hplip_statedir = $(prefix)/var/lib/hp\n")
- (("hplip_confdir = /etc/hp")
- ;; This is only used for installing the default config.
- (string-append "hplip_confdir = " out
- "/etc/hp"))
- (("halpredir = /usr/share/hal/fdi/preprobe/10osvendor")
- ;; We don't use hal.
- (string-append "halpredir = " out
- "/share/hal/fdi/preprobe/10osvendor"))
- (("rulesdir = /etc/udev/rules.d")
- ;; udev rules will be merged by base service.
- (string-append "rulesdir = " out
- "/lib/udev/rules.d"))
- (("rulessystemdir = /usr/lib/systemd/system")
- ;; We don't use systemd.
- (string-append "rulessystemdir = " out
- "/lib/systemd/system"))
- (("/etc/sane.d")
- (string-append out "/etc/sane.d")))
+ (substitute* "Makefile.in"
+ (("[[:blank:]]check-plugin\\.py[[:blank:]]") " ")
+ ;; FIXME Use beginning-of-word in regexp.
+ (("[[:blank:]]plugin\\.py[[:blank:]]") " ")
+ (("/usr/include/libusb-1.0")
+ (string-append (assoc-ref inputs "libusb")
+ "/include/libusb-1.0"))
+ (("hplip_statedir =.*$")
+ ;; Don't bail out while trying to create
+ ;; /var/lib/hplip. We can safely change its value
+ ;; here because it's hard-coded in the code anyway.
+ "hplip_statedir = $(prefix)/var/lib/hp\n")
+ (("hplip_confdir = /etc/hp")
+ ;; This is only used for installing the default config.
+ (string-append "hplip_confdir = " out
+ "/etc/hp"))
+ (("halpredir = /usr/share/hal/fdi/preprobe/10osvendor")
+ ;; We don't use hal.
+ (string-append "halpredir = " out
+ "/share/hal/fdi/preprobe/10osvendor"))
+ (("rulesdir = /etc/udev/rules.d")
+ ;; udev rules will be merged by base service.
+ (string-append "rulesdir = " out
+ "/lib/udev/rules.d"))
+ (("rulessystemdir = /usr/lib/systemd/system")
+ ;; We don't use systemd.
+ (string-append "rulessystemdir = " out
+ "/lib/systemd/system"))
+ (("/etc/sane.d")
+ (string-append out "/etc/sane.d")))
- (substitute* "common/utils.h"
- (("/var/lib/hp")
- (string-append
- out
- "/var/lib/hp")))
- #t)))
- (add-after
- 'install-models-dat 'install-plugins
- (lambda* (#:key outputs system inputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (state-dir (string-append out "/var/lib/hp"))
- (hp-arch (assoc-ref
- '(("i686-linux" . "x86_32")
- ("x86_64-linux" . "x86_64")
- ("armhf-linux" . "arm32")
- ("aarch64-linux" . "aarch64"))
- system)))
- (unless hp-arch
- (error (string-append
- "HPLIP plugin not supported on "
- system)))
- (invoke "sh" (assoc-ref inputs "hplip-plugin")
- "--noexec" "--keep")
- (chdir "plugin_tmp")
- (install-file "plugin.spec"
- (string-append out "/share/hplip/"))
+ (substitute* "common/utils.h"
+ (("/var/lib/hp")
+ (string-append
+ out
+ "/var/lib/hp"))))))
+ (add-after 'install-models-dat 'install-plugins
+ (lambda* (#:key outputs system inputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (state-dir (string-append out "/var/lib/hp"))
+ (hp-arch (assoc-ref
+ '(("i686-linux" . "x86_32")
+ ("x86_64-linux" . "x86_64")
+ ("armhf-linux" . "arm32")
+ ("aarch64-linux" . "aarch64"))
+ system)))
+ (unless hp-arch
+ (error (string-append
+ "HPLIP plugin not supported on "
+ system)))
+ (invoke "sh" (assoc-ref inputs "hplip-plugin")
+ "--noexec" "--keep")
+ (chdir "plugin_tmp")
+ (install-file "plugin.spec"
+ (string-append out "/share/hplip/"))
- (for-each
- (lambda (file)
- (install-file
- file
- (string-append out "/share/hplip/data/firmware")))
- (find-files "." "\\.fw.gz$"))
+ (for-each
+ (lambda (file)
+ (install-file
+ file
+ (string-append out "/share/hplip/data/firmware")))
+ (find-files "." "\\.fw.gz$"))
- (install-file "license.txt"
- (string-append out "/share/hplip/data/plugins"))
- (mkdir-p
- (string-append out "/share/hplip/prnt/plugins"))
- (for-each
- (lambda (type plugins)
- (for-each
- (lambda (plugin)
- (let ((file (string-append plugin "-" hp-arch ".so"))
- (dir (string-append out "/share/hplip/"
- type "/plugins")))
- (install-file file dir)
- (chmod (string-append dir "/" file) #o755)
- (symlink (string-append dir "/" file)
- (string-append dir "/" plugin ".so"))))
- plugins))
- '("prnt" "scan")
- '(("lj" "hbpl1")
- ("bb_soap" "bb_marvell" "bb_soapht" "bb_escl")))
- (mkdir-p state-dir)
- (call-with-output-file
- (string-append state-dir "/hplip.state")
- (lambda (port)
- (simple-format port "[plugin]
+ (install-file "license.txt"
+ (string-append out "/share/hplip/data/plugins"))
+ (mkdir-p
+ (string-append out "/share/hplip/prnt/plugins"))
+ (for-each
+ (lambda (type plugins)
+ (for-each
+ (lambda (plugin)
+ (let ((file (string-append plugin "-" hp-arch ".so"))
+ (dir (string-append out "/share/hplip/"
+ type "/plugins")))
+ (install-file file dir)
+ (chmod (string-append dir "/" file) #o755)
+ (symlink (string-append dir "/" file)
+ (string-append dir "/" plugin ".so"))))
+ plugins))
+ '("prnt" "scan")
+ '(("lj" "hbpl1")
+ ("bb_soap" "bb_marvell" "bb_soapht" "bb_escl")))
+ (mkdir-p state-dir)
+ (call-with-output-file
+ (string-append state-dir "/hplip.state")
+ (lambda (port)
+ (simple-format port "[plugin]
installed=1
eula=1
version=~A
-" ,(package-version hplip))))
+" #$(package-version hplip))))
- (substitute* (string-append out "/etc/hp/hplip.conf")
- (("/usr") out))
- #t)))))))))
+ (substitute* (string-append out "/etc/hp/hplip.conf")
+ (("/usr") out)))))))))))
diff --git a/nongnu/packages/productivity.scm b/nongnu/packages/productivity.scm
new file mode 100644
index 0000000..5ccabb7
--- /dev/null
+++ b/nongnu/packages/productivity.scm
@@ -0,0 +1,107 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+
+(define-module (nongnu packages productivity)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages pciutils)
+ #:use-module (gnu packages photo)
+ #:use-module (gnu packages xiph)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages wget)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (nonguix build-system chromium-binary)
+ #:use-module ((nonguix licenses) #:prefix license:))
+
+(define-public anytype
+ (package
+ (name "anytype")
+ (version "0.38")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append "https://download.anytype.io?action=download"
+ "&key=desktop&id=148487107"))
+ (file-name (string-append "anytype-" version ".deb"))
+ (sha256
+ (base32
+ "1xc57ppk3l16mq2a53scf79m8hx43x21kac96ws66awlkz14swc7"))))
+ (build-system chromium-binary-build-system)
+ (arguments
+ (list
+ ;; almost 300MB
+ #:substitutable? #f
+ #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
+ #:wrapper-plan
+ #~(map (lambda (file)
+ (string-append "opt/Anytype/" file))
+ '("anytype"
+ "chrome-sandbox"
+ "chrome_crashpad_handler"
+ "libEGL.so"
+ "libffmpeg.so"
+ "libGLESv2.so"
+ "libvk_swiftshader.so"
+ "libvulkan.so.1"
+ "resources/app.asar.unpacked/node_modules/keytar/build/Release/keytar.node"))
+ #:install-plan
+ #~'(("opt/" "/share")
+ ("usr/share/" "/share"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'binary-unpack 'strip-python
+ (lambda _
+ (delete-file
+ (string-append "opt/Anytype/resources/app.asar.unpacked/"
+ "node_modules/keytar/build/node_gyp_bins/python3"))))
+ (add-before 'install 'patch-assets
+ (lambda _
+ (let* ((bin (string-append #$output "/bin"))
+ (usr/share "./usr/share")
+ (old-exe "/opt/Anytype/anytype")
+ (exe (string-append bin "/anytype")))
+ (substitute* (string-append usr/share "/applications/anytype.desktop")
+ (((string-append "^Exec=" old-exe)) (string-append "Exec=" exe))))))
+ (add-before 'install-wrapper 'symlink-entrypoint
+ (lambda _
+ (let* ((bin (string-append #$output "/bin"))
+ (exe (string-append bin "/anytype"))
+ (share (string-append #$output "/share/Anytype"))
+ (target (string-append share "/anytype")))
+ (mkdir-p bin)
+ (symlink target exe)
+ (wrap-program exe
+ `("LD_LIBRARY_PATH" = (,share)))))))))
+ (inputs
+ (list bzip2
+ flac
+ gdk-pixbuf
+ harfbuzz
+ libexif
+ libglvnd
+ libpng
+ libva
+ libxscrnsaver
+ opus
+ pciutils
+ snappy
+ util-linux
+ xdg-utils
+ wget))
+ (synopsis "Productivity and note-taking app")
+ (supported-systems '("x86_64-linux"))
+ (description "Anytype is an E2E encrypted, cross-platform, productivity and
+note taking app. It stores all the data locally and allows for peer-to-peer
+synchronization.")
+ (home-page "https://anytype.io")
+ (license (license:nonfree
+ "https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md"))))
diff --git a/nongnu/packages/radio.scm b/nongnu/packages/radio.scm
index d697bdc..a7ed2c3 100644
--- a/nongnu/packages/radio.scm
+++ b/nongnu/packages/radio.scm
@@ -1,17 +1,5 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
(define-module (nongnu packages radio)
#:use-module (gnu packages gcc)
@@ -97,25 +85,27 @@ package. E.g.: @code{(udev-rules-service 'sdrplay sdrplay)}")
"/license.txt")))))
(define-public soapysdrplay3
- (package
- (name "soapysdrplay3")
- (version "0.4.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pothosware/SoapySDRPlay3")
- (commit (string-append "soapy-sdrplay3-" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0kp5gz03c29kxclaqijpyqknaijlbldrhy04mn98vnli9g1h1isq"))))
- (build-system cmake-build-system)
- (inputs
- (list sdrplay soapysdr))
- (arguments
- `(#:tests? #f)) ; No test suite
- (home-page "https://github.com/pothosware/SoapySDRPlay3/wiki")
- (synopsis "SoapySDR SDRplay module")
- (description "This package provides SDRplay devices support to the
+ (let ((commit "9e5c80c45454db56b8b10bb997369f37e750631b")
+ (revision "1"))
+ (package
+ (name "soapysdrplay3")
+ (version (git-version "0.4.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pothosware/SoapySDRPlay3")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1sl3i1id0fily7qfm0yihxsaqy4f4gr85vl5ip05azhhbrnmnayx"))))
+ (build-system cmake-build-system)
+ (inputs
+ (list sdrplay soapysdr))
+ (arguments
+ `(#:tests? #f)) ; No test suite
+ (home-page "https://github.com/pothosware/SoapySDRPlay3/wiki")
+ (synopsis "SoapySDR SDRplay module")
+ (description "This package provides SDRplay devices support to the
SoapySDR library.")
- (license expat)))
+ (license expat))))
diff --git a/nongnu/packages/scanner.scm b/nongnu/packages/scanner.scm
index 9a8b3cf..ab4772f 100644
--- a/nongnu/packages/scanner.scm
+++ b/nongnu/packages/scanner.scm
@@ -1,20 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
-;;;
-;;; This file is not 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 (nongnu packages scanner)
#:use-module (ice-9 match)
diff --git a/nongnu/packages/version-control.scm b/nongnu/packages/version-control.scm
new file mode 100644
index 0000000..675bf88
--- /dev/null
+++ b/nongnu/packages/version-control.scm
@@ -0,0 +1,58 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2022 dan <i@dan.games>
+;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+
+(define-module (nongnu packages version-control)
+ #:use-module (gnu packages base)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (nonguix build-system binary)
+ #:use-module (nonguix licenses)
+ #:use-module (ice-9 match))
+
+(define-public helix-core
+ (package
+ (name "helix-core")
+ (version "r23.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://ftp.perforce.com/perforce/" version
+ "/bin.linux26"
+ (match (%current-system)
+ ("i686-linux" "x86")
+ (_ "x86_64"))
+ "/helix-core-server.tgz"))
+ (sha256
+ (base32
+ (match (%current-system)
+ ("i686-linux"
+ "0f5qs55rspw86axnmml3nxx551lwbxwz1cgi9kmy2f9g5rrplnkn")
+ (_
+ "1vqfkhgbx6ch7710w8mmm7hydl6jmd9qgzs0gfjg8gvd5gnh1csr"))))))
+ (build-system binary-build-system)
+ (arguments
+ `(#:strip-binaries? #f
+ #:phases (modify-phases %standard-phases
+ (add-before 'patchelf 'patchelf-writable
+ (lambda _
+ (for-each make-file-writable
+ (find-files ".")))))
+ #:patchelf-plan '(("p4" ("glibc"))
+ ("p4d" ("glibc"))
+ ("p4p" ("glibc"))
+ ("p4broker" ("glibc")))
+ #:install-plan '(("p4" "bin/")
+ ("p4d" "bin/")
+ ("p4p" "bin/")
+ ("p4broker" "bin/"))))
+ (inputs (list glibc))
+ (home-page "https://www.perforce.com/products/helix-core")
+ (synopsis
+ "A version control software for large scale development environments")
+ (description
+ "Helix Core is a version control software for large scale development
+environments. The Helix Version Control System manages a central database and
+a master repository of file versions.")
+ (supported-systems '("i686-linux" "x86_64-linux"))
+ (license (nonfree
+ "https://www.perforce.com/sites/default/files/pdfs/Helix_Core%20On%20Prem%20Software%20License%20Agmt%20ClickThru_FINAL%2006.28.2021.pdf"))))
diff --git a/nongnu/packages/video.scm b/nongnu/packages/video.scm
index b7f9b5b..b2cec1b 100644
--- a/nongnu/packages/video.scm
+++ b/nongnu/packages/video.scm
@@ -1,34 +1,21 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022 Jelle Licht <jlicht@fsfe.org>
-;;;
-;;; This file is not 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 (nongnu packages video)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages video)
#:use-module (guix build utils)
#:use-module (guix build-system cmake)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
+ #:use-module (guix utils)
#:use-module ((guix licenses) #:prefix license:))
(define-public gmmlib
(package
(name "gmmlib")
- (version "22.1.3")
+ (version "22.3.9")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -37,7 +24,7 @@
(file-name (git-file-name name version))
(sha256
(base32
- "10gk8bi8xa2bgiqmjbphb9acvbmvgwv9kg0z75cfxazlsx5k7jb1"))))
+ "0m88lxlqqs5wdk4icf2ahbigr0q87j1c0damq7q0r55h72pf6zyv"))))
(build-system cmake-build-system)
(arguments
;; Tests are run as part of the normal build step
@@ -53,7 +40,7 @@ for VAAPI.")
(define-public intel-media-driver
(package
(name "intel-media-driver")
- (version "22.2.2")
+ (version "23.3.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -62,16 +49,16 @@ for VAAPI.")
(file-name (git-file-name name version))
(sha256
(base32
- "1wvx3kvsdq7n5khl0pf7hf1ks4lwqnyjdq8sbjhd7irs3v3prj4j"))))
+ "1zh6zgfyp14zlnd6jvhqz9q5rlyk7cb3nam791slh0h7r5f0iimm"))))
(build-system cmake-build-system)
(inputs (list libva gmmlib))
(native-inputs (list pkg-config))
(arguments
- '(#:tests? #f ;Tests are run as part of the normal build step
- #:configure-flags
- (list "-DENABLE_NONFREE_KERNELS=OFF"
- (string-append "-DLIBVA_DRIVERS_PATH="
- (assoc-ref %outputs "out") "/lib/dri"))))
+ (list #:tests? #f ;Tests are run as part of the normal build step
+ #:configure-flags
+ #~(list "-DENABLE_NONFREE_KERNELS=OFF"
+ (string-append "-DLIBVA_DRIVERS_PATH="
+ #$output "/lib/dri"))))
;; XXX Because of <https://issues.guix.gnu.org/issue/22138>, we need to add
;; this to all VA-API back ends instead of once to libva.
(native-search-paths
@@ -86,3 +73,22 @@ for VAAPI.")
accelerated decoding, encoding, and video post processing for the GEN based
graphics hardware.")
(license (list license:expat license:bsd-3))))
+
+(define-public intel-media-driver/nonfree
+ (package
+ (inherit intel-media-driver)
+ (name "intel-media-driver-nonfree")
+ (arguments
+ (substitute-keyword-arguments (package-arguments intel-media-driver)
+ ((#:configure-flags flags #~'())
+ #~(cons "-DENABLE_NONFREE_KERNELS=ON"
+ (delete "-DENABLE_NONFREE_KERNELS=OFF" #$flags)))))
+ (synopsis
+ (string-append
+ (package-synopsis intel-media-driver)
+ " with nonfree kernels"))
+ (description
+ (string-append
+ (package-description intel-media-driver)
+ " This build of intel-media-driver includes nonfree blobs to fully enable the
+video decode capabilities of supported Intel GPUs."))))
diff --git a/nongnu/packages/vpn.scm b/nongnu/packages/vpn.scm
index 856a45b..c7be7e4 100644
--- a/nongnu/packages/vpn.scm
+++ b/nongnu/packages/vpn.scm
@@ -1,21 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2020 Alexey Abramov <levenson@mmer.org>
-;;;
-;;; This file is not 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 (nongnu packages vpn)
#:use-module (guix build utils)
diff --git a/nongnu/packages/wasm.scm b/nongnu/packages/wasm.scm
index 6aa8211..fa236d1 100644
--- a/nongnu/packages/wasm.scm
+++ b/nongnu/packages/wasm.scm
@@ -1,20 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2022 Pierre Langlois <pierre.langlois@gmx.com>
-;;;
-;;; This file is not 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/>.
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2022-2023 Pierre Langlois <pierre.langlois@gmx.com>
(define-module (nongnu packages wasm)
#:use-module (guix base32)
@@ -31,60 +16,62 @@
#:use-module (gnu packages python))
(define-public wasi-libc
- (let ((commit "ad5133410f66b93a2381db5b542aad5e0964db96")
- (revision "1"))
- (package
- (name "wasi-libc")
- (version (git-version "0.1-alpha" revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/WebAssembly/wasi-libc")
- (commit commit)
- (recursive? #t)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "146jamq2q24vxjfpcwlqj84wzc80cbpbg0ns2wimyvzbanah48j6"))))
- (build-system gnu-build-system)
- (native-inputs (list clang-13))
- (arguments
- (list #:tests? #f ;No test suite
- #:phases
- #~(modify-phases %standard-phases
- (delete 'configure)
- (add-before 'build 'set-sysroot-include
- (lambda _
- (setenv "C_INCLUDE_PATH"
- (string-append (getcwd) "/sysroot/include"))))
- (add-before 'install 'set-install-dir
- (lambda _
- (setenv "INSTALL_DIR"
- (string-append #$output "/wasm32-wasi")))))))
- (home-page "https://wasi.dev")
- (synopsis "WASI libc implementation for WebAssembly")
- (description
- "WASI Libc is a libc for WebAssembly programs built on top of WASI
+ (package
+ (name "wasi-libc")
+ (version "sdk-19")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/WebAssembly/wasi-libc")
+ (commit (string-append "wasi-" version))
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0bnpz8wk9wiic938296gxp4vz820bvpi1w41jksjzz5552hql169"))))
+ (build-system gnu-build-system)
+ (native-inputs (list clang-15))
+ (arguments
+ (list #:tests? #f ;No test suite
+ ;; Firefox uses wasm2c to compile WebAssembly to C code, and it
+ ;; does not support the memory.copy opcode.
+ ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1773200#c4
+ #:make-flags ''("BULK_MEMORY_SOURCES=")
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'build 'set-sysroot-include
+ (lambda _
+ (setenv "C_INCLUDE_PATH"
+ (string-append (getcwd) "/sysroot/include"))))
+ (add-before 'install 'set-install-dir
+ (lambda _
+ (setenv "INSTALL_DIR"
+ (string-append #$output "/wasm32-wasi")))))))
+ (home-page "https://wasi.dev")
+ (synopsis "WASI libc implementation for WebAssembly")
+ (description
+ "WASI Libc is a libc for WebAssembly programs built on top of WASI
system calls. It provides a wide array of POSIX-compatible C APIs, including
support for standard I/O, file I/O, filesystem manipulation, memory
management, time, string, environment variables, program startup, and many
other APIs.")
- (license (list
- ;; For wasi-libc, with LLVM exceptions
- license:asl2.0
- ;; For malloc.c.
- license:cc0
- ;; For cloudlibc.
- license:bsd-2
- ;; For wasi-libc and musl-libc.
- license:expat)))))
+ (license (list
+ ;; For wasi-libc, with LLVM exceptions
+ license:asl2.0
+ ;; For malloc.c.
+ license:cc0
+ ;; For cloudlibc.
+ license:bsd-2
+ ;; For wasi-libc and musl-libc.
+ license:expat))))
(define-public wasm32-wasi-clang-runtime
- (package (inherit clang-runtime-13)
+ (package (inherit clang-runtime-15)
(native-inputs
- (list clang-13
+ (list clang-15
wasi-libc))
- (inputs (list llvm-13))
+ (inputs (list llvm-15))
(arguments
(list
#:build-type "Release"
@@ -107,9 +94,7 @@ other APIs.")
;; WASM only needs libclang_rt.builtins-wasm32.a from
;; compiler-rt.
- (string-append "../compiler-rt-"
- #$(package-version clang-runtime-13)
- ".src/lib/builtins"))))))
+ "../source/compiler-rt/lib/builtins")))))
;; FIXME: Ideally we wouldn't need to build a separate compiler because clang
;; can support multiple targets at runtime. However Guix patches the default
@@ -117,12 +102,10 @@ other APIs.")
;; upstream Guix's support for cross-compiling with clang.
(define clang-from-llvm (@@ (gnu packages llvm) clang-from-llvm))
+(define llvm-monorepo (@@ (gnu packages llvm) llvm-monorepo))
(define-public wasm32-wasi-clang
- (let ((base (clang-from-llvm llvm-13 wasm32-wasi-clang-runtime
- (bytevector->nix-base32-string
- (content-hash-value
- (origin-hash (package-source clang-13)))))))
+ (let ((base (clang-from-llvm llvm-15 wasm32-wasi-clang-runtime)))
(package (inherit base)
(name "wasm32-wasi-clang")
(inputs
@@ -143,17 +126,8 @@ other APIs.")
(define-public wasm32-wasi-libcxx
(package
(name "wasm32-wasi-libcxx")
- (version "13.0.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/llvm/llvm-project")
- (commit (string-append "llvmorg-" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0cjl0vssi4y2g4nfr710fb6cdhxmn5r0vis15sf088zsc5zydfhw"))))
+ (version (package-version llvm-15))
+ (source (llvm-monorepo version))
(build-system cmake-build-system)
(arguments
(list
diff --git a/nongnu/packages/wine.scm b/nongnu/packages/wine.scm
index ff15e23..62e6106 100644
--- a/nongnu/packages/wine.scm
+++ b/nongnu/packages/wine.scm
@@ -1,20 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
-;;;
-;;; This file is not 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 (nongnu packages wine)
#:use-module (ice-9 match)
@@ -36,7 +21,7 @@
(define-public winetricks
(package
(name "winetricks")
- (version "20220411")
+ (version "20230212")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -45,7 +30,7 @@
(file-name (git-file-name name version))
(sha256
(base32
- "09bv6wsm3y9p6jhlcmnjlnczdyr996b2mvxg4fbvlqa3fv9gac8n"))))
+ "15glm6ws0zihcks93l39mli8wf5b5vkijb0vaid9cqra6x0zppd5"))))
(build-system gnu-build-system)
(inputs
`(("cabextract" ,cabextract)
@@ -157,7 +142,7 @@ Use @command{setup_dxvk} to install the required libraries to a Wine prefix.")
(define-public dxvk-next
(package
(name "dxvk")
- (version "1.10.1")
+ (version "2.0")
(home-page "https://github.com/doitsujin/dxvk/")
(source (origin
(method url-fetch)
@@ -166,7 +151,7 @@ Use @command{setup_dxvk} to install the required libraries to a Wine prefix.")
version "/dxvk-" version ".tar.gz") )
(sha256
(base32
- "1ah7nci49ipaj7z7zac4dqbrxq1ic3zyky42kkid8wqarf198d6w"))))
+ "0xr4lq4zdmqwxh5x19am2y4lvy6q6s6bl1nfr4ixfgy2l2sghliq"))))
(build-system copy-build-system)
(arguments
`(#:install-plan
@@ -211,3 +196,19 @@ allows running complex 3D applications with high performance using Wine.
Use @command{setup_dxvk} to install the required libraries to a Wine prefix.")
(supported-systems '("i686-linux" "x86_64-linux"))
(license license:zlib)))
+
+;; Keep 1.10 since it's backward-compatible with older hardware unlike 2.*
+;; See https://github.com/doitsujin/dxvk/releases/tag/v2.0
+(define-public dxvk-1.10
+ (package
+ (inherit dxvk-1.7)
+ (version "1.10.3")
+ (home-page "https://github.com/doitsujin/dxvk/")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/doitsujin/dxvk/releases/download/v"
+ version "/dxvk-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1ijkznb8asqg18blhs6f82g67xpncjp7i17rg7451d314y8kq6ld"))))))
diff --git a/nongnu/services/nvidia.scm b/nongnu/services/nvidia.scm
new file mode 100644
index 0000000..985e12b
--- /dev/null
+++ b/nongnu/services/nvidia.scm
@@ -0,0 +1,56 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
+
+(define-module (nongnu services nvidia)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu services)
+ #:use-module (gnu services base)
+ #:use-module (gnu services linux)
+ #:use-module (gnu services shepherd)
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:use-module (nongnu packages nvidia)
+ #:export (nvidia-configuration
+ nvidia-configuration?
+ nvidia-configuration-record?
+ nvidia-service-type))
+
+(define-record-type* <nvidia-configuration>
+ nvidia-configuration make-nvidia-configuration
+ nvidia-configuration?
+ (nvidia-driver nvidia-configuration-nvidia-driver
+ (default (list nvidia-driver))) ; list of file-like
+ (nvidia-firmware nvidia-configuration-nvidia-firmware
+ (default (list nvidia-firmware))) ; list of file-like
+ (nvidia-module nvidia-configuration-nvidia-module
+ (default (list nvidia-module))) ; list of file-like
+ (modules nvidia-configuration-modules
+ (default (list "nvidia-uvm")))) ; list of string
+
+(define (nvidia-shepherd-service config)
+ (list (shepherd-service
+ (documentation "Unload nvidia-uvm module on powering off.")
+ (provision '(nvidia))
+ (requirement '(user-processes))
+ (start #~(const #t))
+ (stop #~(lambda _
+ (let ((rmmod #$(file-append kmod "/bin/rmmod")))
+ (zero? (system* rmmod "nvidia-uvm"))))))))
+
+(define nvidia-service-type
+ (service-type
+ (name 'nvidia)
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ nvidia-shepherd-service)
+ (service-extension udev-service-type
+ nvidia-configuration-nvidia-driver)
+ (service-extension firmware-service-type
+ nvidia-configuration-nvidia-firmware)
+ (service-extension linux-loadable-module-service-type
+ nvidia-configuration-nvidia-module)
+ (service-extension kernel-module-loader-service-type
+ nvidia-configuration-modules)))
+ (default-value (nvidia-configuration))
+ (description "Load NVIDIA modules.")))
diff --git a/nongnu/services/vpn.scm b/nongnu/services/vpn.scm
index d9f0bcc..71a15dc 100644
--- a/nongnu/services/vpn.scm
+++ b/nongnu/services/vpn.scm
@@ -1,20 +1,5 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2020 Alexey Abramov <levenson@mmer.org>
-;;;
-;;; This file is not 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 (nongnu services vpn)
#:use-module (guix gexp)
diff --git a/nongnu/system/install.scm b/nongnu/system/install.scm
index 24bc6ec..100e278 100644
--- a/nongnu/system/install.scm
+++ b/nongnu/system/install.scm
@@ -1,19 +1,7 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
;; Generate a bootable image (e.g. for USB sticks, etc.) with:
;; $ guix system disk-image nongnu/system/install.scm
diff --git a/nongnu/system/linux-initrd.scm b/nongnu/system/linux-initrd.scm
index 5b29235..5f34e79 100644
--- a/nongnu/system/linux-initrd.scm
+++ b/nongnu/system/linux-initrd.scm
@@ -1,17 +1,5 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
(define-module (nongnu system linux-initrd)
#:use-module (gnu system linux-initrd)
@@ -79,7 +67,9 @@ MICROCODE-PACKAGES, in the format expected by the kernel."
"/initrd.cpio"))
(define (combined-initrd . initrds)
- "Return a combined initrd, the result of concatenating INITRDS."
+ "Return a combined initrd, the result of concatenating INITRDS. This relies
+on the kernel ability to detect and load multiple initrds archives from a
+single file."
(define builder
(with-imported-modules (source-module-closure
'((guix build utils)
@@ -87,13 +77,28 @@ MICROCODE-PACKAGES, in the format expected by the kernel."
#:select? import-nonguix-module?)
#~(begin
(use-modules (guix build utils)
- (nonguix build utils))
+ (nonguix build utils)
+ (srfi srfi-1))
;; Use .img suffix since the result is no longer easily inspected by
;; standard tools like cpio and gzip.
- (let ((initrd (string-append #$output "/initrd.img")))
+ ;;
+ ;; The initrds may contain "references" files to keep some items
+ ;; such as the static guile alive. Concatenate them in a single,
+ ;; top-level references file.
+ (let ((initrd (string-append #$output "/initrd.img"))
+ (references
+ (filter-map
+ (lambda (initrd)
+ (let ((ref (string-append (dirname initrd)
+ "/references")))
+ (and (file-exists? ref) ref)))
+ '#$initrds))
+ (new-references
+ (string-append #$output "/references")))
(mkdir-p #$output)
- (concatenate-files '#$initrds initrd)))))
+ (concatenate-files '#$initrds initrd)
+ (concatenate-files references new-references)))))
(file-append (computed-file "combined-initrd" builder)
"/initrd.img"))
diff --git a/nonguix/build-system/binary.scm b/nonguix/build-system/binary.scm
index 4fed623..121162d 100644
--- a/nonguix/build-system/binary.scm
+++ b/nonguix/build-system/binary.scm
@@ -1,21 +1,6 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2021 Josselin Poiret <dev@jpoiret.xyz>
-;;;
-;;; This file is not 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 (nonguix build-system binary)
#:use-module (guix store)
diff --git a/nonguix/build-system/chromium-binary.scm b/nonguix/build-system/chromium-binary.scm
new file mode 100644
index 0000000..931a6ef
--- /dev/null
+++ b/nonguix/build-system/chromium-binary.scm
@@ -0,0 +1,209 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+
+(define-module (nonguix build-system chromium-binary)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages databases)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages kerberos)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages nss)
+ #:use-module (gnu packages pulseaudio)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu packages xml)
+ #:use-module (guix store)
+ #:use-module (guix utils)
+ #:use-module (guix gexp)
+ #:use-module (guix monads)
+ #:use-module (guix derivations)
+ #:use-module (guix search-paths)
+ #:use-module (guix build-system)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix packages)
+ #:use-module (ice-9 match)
+ #:use-module (srfi srfi-1)
+ #:use-module (nonguix build-system binary)
+ #:use-module (nonguix utils)
+ #:export (%chromium-binary-build-system-modules
+ lower
+ chromium-binary-build
+ chromium-binary-build-system))
+
+;; Commentary:
+;;
+;; Standard build procedure for Chromium based binary packages. This is
+;; implemented as an extension of `binary-build-system'.
+;;
+;; Code:
+
+(define %chromium-binary-build-system-modules
+ ;; Build-side modules imported by default.
+ `((nonguix build chromium-binary-build-system)
+ (nonguix build utils)
+ ,@%binary-build-system-modules))
+
+(define (build-patchelf-plan wrapper-plan inputs)
+ #~(let ((patchelf-inputs
+ (list #$@(map car inputs))))
+ (map (lambda (file)
+ (cons file (list patchelf-inputs)))
+ #$wrapper-plan)))
+
+(define* (lower name
+ #:key source inputs native-inputs outputs system target
+ (patchelf (default-patchelf))
+ (glibc (default-glibc))
+ #:allow-other-keys
+ #:rest arguments)
+ "Return a bag for NAME."
+ (define private-keywords
+ '(#:target #:patchelf #:inputs #:native-inputs))
+ (define host-inputs
+ `(,@(if source
+ `(("source" ,source))
+ '())
+
+ ("alsa-lib" ,alsa-lib)
+ ("atk" ,atk)
+ ("at-spi2-atk" ,at-spi2-atk)
+ ("at-spi2-core" ,at-spi2-core)
+ ("bash-minimal" ,bash-minimal)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("dbus" ,dbus)
+ ("eudev" ,eudev)
+ ("expat" ,expat)
+ ("fontconfig" ,fontconfig)
+ ("freetype" ,freetype)
+ ("gcc:lib" ,gcc "lib")
+ ("glib" ,glib)
+ ("gtk+" ,gtk+)
+ ("libdrm" ,libdrm)
+ ("libnotify" ,libnotify)
+ ("librsvg" ,librsvg)
+ ("libsecret" ,libsecret)
+ ("libx11" ,libx11)
+ ("libxcb" ,libxcb)
+ ("libxcomposite" ,libxcomposite)
+ ("libxcursor" ,libxcursor)
+ ("libxdamage" ,libxdamage)
+ ("libxext" ,libxext)
+ ("libxfixes" ,libxfixes)
+ ("libxi" ,libxi)
+ ("libxkbcommon" ,libxkbcommon)
+ ("libxkbfile" ,libxkbfile)
+ ("libxrandr" ,libxrandr)
+ ("libxrender" ,libxrender)
+ ("libxshmfence" ,libxshmfence)
+ ("libxtst" ,libxtst)
+ ("mesa" ,mesa)
+ ("mit-krb5" ,mit-krb5)
+ ("nspr" ,nspr)
+ ("nss" ,nss)
+ ("pango" ,pango)
+ ("pulseaudio" ,pulseaudio)
+ ("sqlcipher" ,sqlcipher)
+ ("xcb-util" ,xcb-util)
+ ("xcb-util-image" ,xcb-util-image)
+ ("xcb-util-keysyms" ,xcb-util-keysyms)
+ ("xcb-util-renderutil" ,xcb-util-renderutil)
+ ("xcb-util-wm" ,xcb-util-wm)
+ ("zlib" ,zlib)
+
+ ,@inputs
+ ;; Keep the standard inputs of 'gnu-build-system'.
+ ,@(standard-packages)))
+
+ (and (not target) ;XXX: no cross-compilation
+ (bag
+ (name name)
+ (system system)
+ (host-inputs host-inputs)
+ (build-inputs `(("patchelf" ,patchelf)
+ ,@native-inputs
+ ;; If current system is i686, the *32 packages will be the
+ ;; same as the non-32, but that's OK.
+ ("libc32" ,(to32 glibc))))
+ (outputs outputs)
+ (build chromium-binary-build)
+ (arguments (append
+ (strip-keyword-arguments private-keywords arguments)
+ (list #:wrap-inputs host-inputs))))))
+
+(define* (chromium-binary-build name inputs
+ #:key
+ guile source wrap-inputs
+ (outputs '("out"))
+ (wrapper-plan ''())
+ (patchelf-plan ''())
+ (install-plan ''(("." "./")))
+ (search-paths '())
+ (out-of-source? #t)
+ (validate-runpath? #t)
+ (patch-shebangs? #t)
+ (strip-binaries? #t)
+ (strip-flags ''("--strip-debug"))
+ (strip-directories ''("lib" "lib64" "libexec"
+ "bin" "sbin"))
+ (phases '(@ (nonguix build chromium-binary-build-system)
+ %standard-phases))
+ (system (%current-system))
+ (imported-modules %chromium-binary-build-system-modules)
+ (modules '((nonguix build chromium-binary-build-system)
+ (guix build utils)
+ (nonguix build utils)))
+ (substitutable? #t)
+ allowed-references
+ disallowed-references)
+ "Build SOURCE using binary-build-system."
+ (define builder
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@modules)
+
+ #$(with-build-variables inputs outputs
+ #~(chromium-binary-build #:source #+source
+ #:system #$system
+ #:outputs %outputs
+ #:inputs %build-inputs
+ #:patchelf-plan
+ #$(if (equal? wrapper-plan ''())
+ patchelf-plan
+ (build-patchelf-plan wrapper-plan
+ wrap-inputs))
+ #:install-plan #$install-plan
+ #:search-paths '#$(map search-path-specification->sexp
+ search-paths)
+ #:phases #$phases
+ #:out-of-source? #$out-of-source?
+ #:validate-runpath? #$validate-runpath?
+ #:patch-shebangs? #$patch-shebangs?
+ #:strip-binaries? #$strip-binaries?
+ #:strip-flags #$strip-flags
+ #:strip-directories #$strip-directories)))))
+
+ (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
+ system #:graft? #f)))
+ (gexp->derivation name builder
+ #:system system
+ #:target #f
+ #:substitutable? substitutable?
+ #:allowed-references allowed-references
+ #:disallowed-references disallowed-references
+ #:guile-for-build guile)))
+
+(define chromium-binary-build-system
+ (build-system
+ (name 'chromium-binary)
+ (description "The Chromium based binary build system")
+ (lower lower)))
+
+;;; chromium-binary.scm ends here
diff --git a/nonguix/build/binary-build-system.scm b/nonguix/build/binary-build-system.scm
index 913ff44..e5bbc48 100644
--- a/nonguix/build/binary-build-system.scm
+++ b/nonguix/build/binary-build-system.scm
@@ -1,21 +1,7 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
(define-module (nonguix build binary-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
@@ -148,10 +134,39 @@ The inputs are optional when the file is an executable."
patchelf-plan)))
#t)
+(define (deb-file? binary-file)
+ (string-suffix? ".deb" binary-file))
+
+(define (unpack-deb deb-file)
+ (invoke "ar" "x" deb-file)
+ (invoke "tar" "xvf" "data.tar.xz")
+ (invoke "rm" "-rfv" "control.tar.gz"
+ "data.tar.xz"
+ deb-file
+ "debian-binary"))
+
+(define* (binary-unpack #:key source #:allow-other-keys)
+ (let* ((files (filter (lambda (f)
+ (not (string=? (basename f) "environment-variables")))
+ (find-files (getcwd))))
+ (binary-file (car files)))
+ (when (= 1 (length files))
+ (mkdir "binary")
+ (chdir "binary")
+ (match binary-file
+ ((? deb-file?) (unpack-deb binary-file))
+ (_
+ (begin
+ (format #t "Unknown file type: ~a~%" (basename binary-file))
+ ;; Cleanup after ourselves
+ (chdir "..")
+ (rmdir "binary")))))))
+
(define %standard-phases
- ;; Everything is as with the GNU Build System except for the `configure'
- ;; , `build', `check' and `install' phases.
+ ;; Everything is as with the GNU Build System except for the `binary-unpack',
+ ;; `configure', `build', `check' and `install' phases.
(modify-phases gnu:%standard-phases
+ (add-after 'unpack 'binary-unpack binary-unpack)
(delete 'bootstrap)
(delete 'configure)
(delete 'build)
diff --git a/nonguix/build/chromium-binary-build-system.scm b/nonguix/build/chromium-binary-build-system.scm
new file mode 100644
index 0000000..0fed9bf
--- /dev/null
+++ b/nonguix/build/chromium-binary-build-system.scm
@@ -0,0 +1,75 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+
+(define-module (nonguix build chromium-binary-build-system)
+ #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+ #:use-module ((nonguix build binary-build-system) #:prefix binary:)
+ #:use-module (nonguix build utils)
+ #:use-module (guix build utils)
+ #:use-module (ice-9 ftw)
+ #:use-module (ice-9 match)
+ #:export (%standard-phases
+ chromium-binary-build))
+
+;; Commentary:
+;;
+;; Builder-side code of the Chromium binary build procedure.
+;;
+;; Code:
+
+(define* (install-wrapper #:key inputs outputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out"))
+ (bin (string-append output "/bin"))
+ (fontconfig-minimal (assoc-ref inputs "fontconfig"))
+ (nss (assoc-ref inputs "nss"))
+ (wrap-inputs (map cdr inputs))
+ (lib-directories
+ (build-paths-from-inputs '("lib") wrap-inputs))
+ (bin-directories
+ (build-paths-from-inputs
+ '("bin" "sbin" "libexec")
+ wrap-inputs)))
+ (for-each
+ (lambda (exe)
+ (display (string-append "Wrapping " exe "\n"))
+ (wrap-program exe
+ `("FONTCONFIG_PATH" ":" prefix
+ (,(string-join
+ (list
+ (string-append fontconfig-minimal "/etc/fonts")
+ output)
+ ":")))
+ `("PATH" ":" prefix
+ (,(string-join
+ (append
+ bin-directories
+ (list
+ bin))
+ ":")))
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-join
+ (append
+ lib-directories
+ (list
+ (string-append nss "/lib/nss")
+ output))
+ ":")))))
+ (map
+ (lambda (exe) (string-append bin "/" exe))
+ (filter
+ (lambda (exe) (not (string-prefix? "." exe)))
+ (scandir bin))))
+ #t))
+
+(define %standard-phases
+ ;; Everything is as with the binary-build-system except for the
+ ;; `install-wrapper' phase.
+ (modify-phases binary:%standard-phases
+ (add-after 'install 'install-wrapper install-wrapper)))
+
+(define* (chromium-binary-build #:key inputs (phases %standard-phases)
+ #:allow-other-keys #:rest args)
+ "Build the given package, applying all of PHASES in order."
+ (apply gnu:gnu-build #:inputs inputs #:phases phases args))
+
+;;; chromium-binary-build-system.scm ends here
diff --git a/nonguix/build/utils.scm b/nonguix/build/utils.scm
index ab437f2..e7d6966 100644
--- a/nonguix/build/utils.scm
+++ b/nonguix/build/utils.scm
@@ -1,30 +1,18 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
(define-module (nonguix build utils)
#:use-module (ice-9 match)
#:use-module (ice-9 binary-ports)
#:use-module (guix build utils)
+ #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (64-bit?
make-wrapper
- concatenate-files))
+ concatenate-files
+ build-paths-from-inputs))
(define (64-bit? file)
"Return true if ELF file is in 64-bit format, false otherwise.
@@ -109,3 +97,23 @@ contents:
(call-with-output-file result
(lambda (port)
(for-each (cut dump <> port) files))))
+
+(define build-paths-for-input
+ (lambda (dirs input)
+ (filter-map
+ (lambda (sub-directory)
+ (let ((directory
+ (string-append
+ input "/" sub-directory)))
+ (and
+ (directory-exists? directory)
+ directory)))
+ dirs)))
+
+(define build-paths-from-inputs
+ (lambda (dirs inputs)
+ (reduce append '()
+ (map
+ (lambda (input)
+ (build-paths-for-input dirs input))
+ inputs))))
diff --git a/nonguix/download.scm b/nonguix/download.scm
index 11087ff..0eb661a 100644
--- a/nonguix/download.scm
+++ b/nonguix/download.scm
@@ -1,17 +1,5 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
(define-module (nonguix download)
#:use-module (guix derivations)
diff --git a/nonguix/licenses.scm b/nonguix/licenses.scm
index 84d2346..a09452a 100644
--- a/nonguix/licenses.scm
+++ b/nonguix/licenses.scm
@@ -1,17 +1,5 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
(define-module (nonguix licenses)
#:use-module (guix licenses)
diff --git a/nonguix/modules.scm b/nonguix/modules.scm
index 24d4267..cd07d44 100644
--- a/nonguix/modules.scm
+++ b/nonguix/modules.scm
@@ -1,17 +1,5 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
-;;;
-;;; This program 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.
-;;;
-;;; This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
(define-module (nonguix modules)
#:use-module (ice-9 match)
diff --git a/nongnu/packages/steam-client.scm b/nonguix/multiarch-container.scm
index d9a83be..3d040c2 100644
--- a/nongnu/packages/steam-client.scm
+++ b/nonguix/multiarch-container.scm
@@ -1,34 +1,23 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2020 pkill-9
;;; Copyright © 2020, 2021 ison <ison@airmail.cc>
;;; Copyright © 2021 pineapples
;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
;;; Copyright © 2021 Kozo <kozodev@runbox.com>
;;; Copyright © 2021, 2022 John Kehayias <john.kehayias@protonmail.com>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2023 Attila Lendvai <attila@lendvai.name>
+;;; Copyright © 2023 Elijah Malaby
+;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
-;;; The steam script provided by this package may optionally be started as
-;;; a shell instead of automatically launching Steam by setting the
-;;; environment variable DEBUG=1. If the sandbox is started this way then
-;;; Steam should subsequently be launched via fhs-internal.
+;;; The script provided by this package may optionally be started as
+;;; a shell instead of automatically launching the wrapped entrypoint by setting
+;;; the environment variable DEBUG=1. If the sandbox is started this way then
+;;; the package should subsequently be launched via fhs-internal.
;;; The sandbox shell aids in debugging missing container elements. For
-;;; example a missing symlink may be created manually before launching Steam
-;;; to verify that the fix works before filing a bug report.
+;;; example a missing symlink may be created manually before launching the
+;;; package to verify that the fix works before filing a bug report.
;;; A container wrapper creates the following store items:
;;; * Main container package [nonguix-container->package] (basically a dummy
@@ -43,61 +32,59 @@
;;; (script run in-container which performs additional setup before
;;; launching the desired application)
;;; References:
-;;; -> Wrapped package {inside container} (in this case Steam).
+;;; -> Wrapped package {inside container}.
;;; Note: The extra container-internal package is necessary because there is no
;;; way to add the container package's own store path to its own manifest unless
;;; the manifest is printed inside the build phases. However, the (guix gexp)
;;; module is apparently disallowed inside build phases.
-(define-module (nongnu packages steam-client)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module ((nonguix licenses) #:prefix license:)
- #:use-module (guix gexp)
- #:use-module (guix git-download)
- #:use-module (guix utils)
- #:use-module (guix packages)
- #:use-module (guix records)
- #:use-module (guix download)
- #:use-module (guix build-system gnu)
- #:use-module (guix build-system python)
- #:use-module (guix build-system trivial)
- #:use-module (guix transformations)
+(define-module (nonguix multiarch-container)
#:use-module (gnu packages)
- #:use-module (gnu packages audio)
#:use-module (gnu packages base)
- #:use-module (gnu packages bash)
- #:use-module (gnu packages certs)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages elf)
- #:use-module (gnu packages file)
- #:use-module (gnu packages fonts)
- #:use-module (gnu packages fontutils)
- #:use-module (gnu packages freedesktop)
- #:use-module (gnu packages gawk)
- #:use-module (gnu packages gcc)
- #:use-module (gnu packages gl)
- #:use-module (gnu packages glib)
- #:use-module (gnu packages gnome)
- #:use-module (gnu packages graphics)
- #:use-module (gnu packages libbsd)
- #:use-module (gnu packages libusb)
- #:use-module (gnu packages linux)
- #:use-module (gnu packages llvm)
- #:use-module (gnu packages logging)
- #:use-module (nongnu packages nvidia)
- #:use-module (gnu packages pciutils)
#:use-module (gnu packages pulseaudio)
- #:use-module (gnu packages python)
- #:use-module (gnu packages python-web)
- #:use-module (gnu packages python-xyz)
- #:use-module (gnu packages toolkits)
- #:use-module (nonguix utils))
+ #:use-module (guix build-system trivial)
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:use-module (guix packages)
+
+ #:export (nonguix-container
+ nonguix-container?
+ ngc-name
+ ngc-binary-name
+ ngc-version
+ ngc-wrap-package
+ ngc-run
+ ngc-wrapper-name
+ ngc-manifest-name
+ ngc-internal-name
+ ngc-sandbox-home
+ ngc-ld.so.conf
+ ngc-ld.so.cache
+ ngc-union64
+ ngc-union32
+ ngc-preserved-env
+ ngc-exposed
+ ngc-shared
+ ngc-modules
+ ngc-packages
+ ngc-link-files
+ ngc-home-page
+ ngc-synopsis
+ ngc-description
+ ngc-license
+
+ fhs-min-libs
+ fhs-union
+ ld.so.conf->ld.so.cache
+ packages->ld.so.conf
+ nonguix-container->package))
(define-record-type* <nonguix-container>
nonguix-container make-nonguix-container
nonguix-container? this-nonguix-container
(name ngc-name)
+ (binary-name ngc-binary-name (default (ngc-name this-nonguix-container)) (thunked))
(version ngc-version (default #f))
(wrap-package ngc-wrap-package)
(run ngc-run)
@@ -105,6 +92,8 @@
(manifest-name ngc-manifest-name (default "nonguix-container-manifest.scm"))
(internal-name ngc-internal-name (default "fhs-internal"))
(sandbox-home ngc-sandbox-home (default ".local/share/guix-sandbox-home"))
+ (ld.so.conf ngc-ld.so.conf)
+ (ld.so.cache ngc-ld.so.cache)
(union64 ngc-union64 (default '()))
(union32 ngc-union32 (default '()))
(preserved-env ngc-preserved-env (default '()))
@@ -118,134 +107,10 @@
(description ngc-description (default #f))
(license ngc-license (default #f)))
-(define steam-client
- (package
- (name "steam-client")
- (version "1.0.0.74")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "http://repo.steampowered.com/steam/archive/precise/steam_"
- version ".tar.gz"))
- (sha256
- (base32
- "0d52n6ifsc3ix3w1qw02yg6w0vddhnfmi2wdnvdfhhgmg21kpvdh"))
- (file-name (string-append name "-" version ".tar.gz"))))
- (build-system gnu-build-system)
- (arguments
- `(#:tests? #f ; There are no tests.
- #:validate-runpath? #f ; Looks for bin/steam which doesn't exist.
- #:make-flags
- (list "PREFIX=" (string-append "DESTDIR=" (assoc-ref %outputs "out")))
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- ;; Patch Makefile so it creates links to the store rather than /lib.
- (add-after 'unpack 'patch-makefile
- (lambda _
- (substitute* "Makefile"
- (("-fns ")
- "-fns $(DESTDIR)"))))
- (delete 'patch-dot-desktop-files)
- (add-after 'unpack 'patch-startscript
- (lambda _
- (substitute* "bin_steam.sh"
- (("/usr") (assoc-ref %outputs "out")))))
- (add-after 'patch-dot-desktop-files 'patch-desktop-file
- (lambda _
- (let ((path (string-append (assoc-ref %outputs "out")
- "/share/applications/")))
- (substitute* (string-append path "steam.desktop")
- (("Exec=.*/steam") "Exec=steam"))
- (copy-file (string-append path "steam.desktop")
- (string-append path "steam-asound32.desktop"))
- (substitute* (string-append path "steam-asound32.desktop")
- (("Exec=steam %U") "Exec=steam %U -- --asound32")
- (("Name=Steam") "Name=Steam (32-bit ALSA)")))))
- ;; Steamdeps installs missing packages, which doesn't work with Guix.
- (add-after 'install-binaries 'post-install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref %outputs "out")))
- (delete-file (string-append out "/lib/steam/bin_steamdeps.py"))
- (delete-file (string-append out "/bin/steamdeps"))))))))
- (home-page "https://store.steampowered.com")
- (synopsis "Digital distribution platform for managing and playing games")
- (description "Steam is a digital software distribution platform created by Valve.")
- (license (license:nonfree "file:///share/doc/steam/steam_subscriber_agreement.txt"))))
-
-(define glibc-for-fhs
- (package
- (inherit glibc)
- (name "glibc-for-fhs")
- (source (origin (inherit (package-source glibc))
- ;; Remove Guix's patch to read ld.so.cache from /gnu/store
- ;; directories, re-enabling the default /etc/ld.so.cache
- ;; behavior.
- (patches (delete (car (search-patches "glibc-dl-cache.patch"))
- (origin-patches (package-source glibc))))))))
-
-;; After guix commit to add a replacement for expat (security fixes),
-;; https://git.savannah.gnu.org/cgit/guix.git/commit/?id=2045852b096131a714409aa0cc4fe17938f60b15
-;; a profile collision happens with the propagated expat (now grafted) from
-;; fontconfig. See upstream report https://issues.guix.gnu.org/53406
-;; So we define a fontconfig variation that explicitly does the expat replacement
-;; which works around this bug for now, at the cost of building fontconfig.
-;; TODO: remove once upstream bug is fixed
-(define fontconfig-fixed
- (package
- (inherit fontconfig)
- (propagated-inputs
- (modify-inputs (package-propagated-inputs fontconfig)
- (replace "expat" (@@ (gnu packages xml) expat/fixed))))))
-
(define fhs-min-libs
- `(("glibc" ,glibc-for-fhs)
+ `(("glibc" ,(@@ (gnu packages base) glibc-for-fhs))
("glibc-locales" ,glibc-locales)))
-(define steam-client-libs
- `(("bash" ,bash) ; Required for steam startup.
- ("coreutils" ,coreutils)
- ("diffutils" ,diffutils)
- ("dbus-glib" ,dbus-glib) ; Required for steam browser.
- ("elfutils" ,elfutils) ; Required for capturing library dependencies in pv.
- ("eudev" ,eudev) ; Required for steamwebhelper/heavy runtime.
- ;; TODO: set back to ,fontconfig once https://issues.guix.gnu.org/53406 is fixed
- ("fontconfig" ,fontconfig-fixed) ; Required for steam client.
- ("file" ,file) ; Used for steam installation.
- ("find" ,findutils) ; Required at least for some logging.
- ("freetype" ,freetype) ; Required for steam login.
- ("gawk" ,gawk)
- ("gcc:lib" ,gcc "lib") ; Required for steam startup.
- ("grep" ,grep)
- ("libbsd" ,libbsd)
- ("libcap" ,libcap) ; Required for SteamVR, but needs pkexec too.
- ("libusb" ,libusb) ; Required for SteamVR.
- ("llvm" ,llvm-11) ; Required for mesa.
- ("mesa" ,mesa) ; Required for steam startup.
- ("nss-certs" ,nss-certs) ; Required for steam login.
- ("pciutils" ,pciutils) ; Tries to run lspci at steam startup.
- ("procps" ,procps)
- ("sed" ,sed)
- ("tar" ,tar)
- ("usbutils" ,usbutils) ; Required for SteamVR.
- ("util-linux" ,util-linux) ; Required for steam login.
- ("wayland" ,wayland) ; Required for mesa vulkan (e.g. libvulkan_radeon).
- ("xdg-utils" ,xdg-utils)
- ("xz" ,xz)
- ("zenity" ,zenity))) ; Required for progress dialogs.
-
-(define steam-gameruntime-libs
- `(("alsa-lib" ,alsa-lib) ; Required for audio in most games.
- ("alsa-plugins:pulseaudio" ,alsa-plugins "pulseaudio") ; Required for audio in most games.
- ("font-dejavu" ,font-dejavu)
- ("font-liberation" ,font-liberation)
- ("imgui" ,imgui-1.86) ; Required for MangoHud.
- ("mangohud" ,mangohud)
- ("openal" ,openal) ; Prevents corrupt audio in Crypt of the Necrodancer.
- ("pulseaudio" ,pulseaudio) ; Prevents corrupt audio in Sven Coop.
- ("python" ,python) ; Required for KillingFloor2 and Wreckfest.
- ("spdlog" ,spdlog))) ; Required for MangoHud.
-
(define* (fhs-union inputs #:key (name "fhs-union") (version "0.0") (system "x86_64-linux"))
"Create a package housing the union of inputs."
(package
@@ -290,45 +155,25 @@
in the Guix store"
(computed-file
"ld.so.conf"
- (with-imported-modules
- `((guix build union)
- (guix build utils))
- #~(begin
- (use-modules (guix build union)
- (guix build utils))
- ;; Need to quote "#$packages" as #$packages tries to "apply" the first item to the rest, like a procedure.
- (let* ((packages '#$packages)
- ;; Add "/lib" to each package.
- ;; TODO Make this more general for other needed directories.
- (dirs-lib
- (lambda (packages)
- (map (lambda (package)
- (string-append package "/lib"))
- packages)))
- (fhs-lib-dirs
- (dirs-lib packages)))
- (call-with-output-file #$output
- (lambda (port)
- (for-each (lambda (directory)
- (display directory port)
- (newline port))
- fhs-lib-dirs)))
- #$output)))))
-
-(define steam-ld.so.conf
- (packages->ld.so.conf
- (list (fhs-union `(,@steam-client-libs
- ,@steam-gameruntime-libs
- ,@fhs-min-libs)
- #:name "fhs-union-64")
- (fhs-union `(,@steam-client-libs
- ,@steam-gameruntime-libs
- ,@fhs-min-libs)
- #:name "fhs-union-32"
- #:system "i686-linux"))))
-
-(define steam-ld.so.cache
- (ld.so.conf->ld.so.cache steam-ld.so.conf))
+ #~(begin
+ ;; Need to quote "#$packages" as #$packages tries to "apply" the first item to the rest, like a procedure.
+ (let* ((packages '#$packages)
+ ;; Add "/lib" to each package.
+ ;; TODO Make this more general for other needed directories.
+ (dirs-lib
+ (lambda (packages)
+ (map (lambda (package)
+ (string-append package "/lib"))
+ packages)))
+ (fhs-lib-dirs
+ (dirs-lib packages)))
+ (call-with-output-file #$output
+ (lambda (port)
+ (for-each (lambda (directory)
+ (display directory port)
+ (newline port))
+ fhs-lib-dirs)))
+ #$output))))
(define (nonguix-container->package container)
"Return a package with wrapper script to launch the supplied container object
@@ -365,7 +210,7 @@ in a sandboxed FHS environment."
(manifest-target (assoc-ref %build-inputs "fhs-manifest"))
(manifest-dest (string-append out "/etc/" ,(ngc-manifest-name container)))
(wrapper-target (assoc-ref %build-inputs "fhs-wrapper"))
- (wrapper-dest (string-append out "/bin/" ,(ngc-name container)))
+ (wrapper-dest (string-append out "/bin/" ,(ngc-binary-name container)))
(link-files ',(ngc-link-files container)))
(mkdir-p (string-append out "/sbin"))
(mkdir-p (string-append out "/etc"))
@@ -394,8 +239,7 @@ in a sandboxed FHS environment."
in a sandboxed FHS environment."
(program-file
(ngc-wrapper-name container)
- (with-imported-modules
- `((guix build utils))
+ (with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
(define (preserve-var var)
@@ -419,16 +263,39 @@ in a sandboxed FHS environment."
(preserved-env '("^DBUS_"
"^DISPLAY$"
"^DRI_PRIME$"
+ "^GDK_SCALE$" ; For UI scaling.
+ "^GUIX_LOCPATH$" ; For pressure-vessel locales.
+ ;; For startup of added non-Steam games as it
+ ;; seems they start in an early environment
+ ;; before our additional settings. (Likely
+ ;; this can be removed when rewritten to use
+ ;; --emulate-fhs from upstream.) Note that
+ ;; this is explicitly set below. We could
+ ;; preserve what is set before launching the
+ ;; container, but any such directories would
+ ;; need to be shared with the container as
+ ;; well; this is not needed currently.
+ "^LD_LIBRARY_PATH$"
+ "^MANGOHUD" ; For MangoHud configuration.
"^PRESSURE_VESSEL_" ; For pressure vessel options.
"_PROXY$"
"_proxy$"
+ ;; To allow workaround for upstream bug
+ ;; <https://github.com/ValveSoftware/steam-for-linux/issues/9306>
+ ;; and tracked on our end as
+ ;; <https://gitlab.com/nonguix/nonguix/-/issues/267>.
+ ;; TODO: Remove once upstream fixes this bug.
+ "^QT_X11_NO_MITSHM$"
"^SDL_"
"^STEAM_"
+ "^SSL_" ; SSL certificate environment, needed by curl for Heroic.
+ "^VDPAU_DRIVER_PATH$" ; For VDPAU drivers.
"^XAUTHORITY$"
;; Matching all ^XDG_ vars causes issues
;; discussed in 80decf05.
"^XDG_DATA_HOME$"
"^XDG_RUNTIME_DIR$"
+ #$@(ngc-preserved-env container) ; Environment from container.
;; The following are useful for debugging.
"^CAPSULE_DEBUG$"
"^G_MESSAGES_DEBUG$"
@@ -447,10 +314,12 @@ in a sandboxed FHS environment."
"/sys/class/hwmon" ; Needed for hw monitoring like MangoHud.
"/sys/class/hidraw" ; Needed for devices like the Valve Index.
"/sys/class/input" ; Needed for controller input.
+ ,@(exists-> "/sys/class/power_supply") ; Needed for power monitoring like MangoHud.
,@(exists-> "/sys/class/powercap") ; Needed for power monitoring like MangoHud.
"/sys/dev"
"/sys/devices"
- ,@(exists-> "/var/run/dbus")))
+ ,@(exists-> "/var/run/dbus")
+ #$@(ngc-exposed container)))
;; /dev/hidraw is needed for SteamVR to access the HMD, although here we
;; share all hidraw devices. Instead we could filter to only share specific
;; device. See, for example, this script:
@@ -464,16 +333,24 @@ in a sandboxed FHS environment."
,@(exists-> (string-append home "/.config/pulse"))
,@(exists-> (string-append xdg-runtime "/pulse"))
,@(exists-> (string-append xdg-runtime "/bus"))
- ,@(exists-> (getenv "XAUTHORITY"))))
+ ,@(exists-> (getenv "XAUTHORITY"))
+ #$@(ngc-shared container)))
(DEBUG (equal? (getenv "DEBUG") "1"))
+ (extra-shares (if (getenv "GUIX_SANDBOX_EXTRA_SHARES")
+ (string-split (getenv "GUIX_SANDBOX_EXTRA_SHARES") #\:)
+ #f))
(args (cdr (command-line)))
(command (if DEBUG '()
`("--" ,run ,@args))))
- ;; TODO: Remove once upstream change is merged and in stable pressure-vessel
- ;; (although may want to hold off for anyone using older pressure-vessel versions
- ;; for whatever reason), see:
- ;; https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/merge_requests/406
- (setenv "PRESSURE_VESSEL_FILESYSTEMS_RO" "/gnu/store")
+ ;; Set this so Steam's pressure-vessel container does not need to
+ ;; generate locales, improving startup time. This needs to be set to
+ ;; the "usual" path, probably so they are included in the
+ ;; pressure-vessel container.
+ (setenv "GUIX_LOCPATH" "/usr/lib/locale")
+ ;; By default VDPAU drivers are searched for in libvdpau's store
+ ;; path, so set this path to where the drivers will actually be
+ ;; located in the container.
+ (setenv "VDPAU_DRIVER_PATH" "/lib64/vdpau")
(format #t "\n* Launching ~a in sandbox: ~a.\n\n"
#$(package-name (ngc-wrap-package container)) sandbox-home)
(when DEBUG
@@ -490,7 +367,9 @@ in a sandboxed FHS environment."
,@(map add-path expose)
,@(map (lambda (item)
(add-path item #:writable? #t))
- share)
+ (if extra-shares
+ (append share extra-shares)
+ share))
"-m" ,manifest-file
,@command)))))))
@@ -539,7 +418,8 @@ the exact path for the fhs-internal package."
(version (or (ngc-version container)
(package-version (ngc-wrap-package container))))
(source #f)
- (inputs `(("fhs-internal-script" ,(make-internal-script container))))
+ (inputs `(("fhs-internal-script"
+ ,(make-internal-script container))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
@@ -565,8 +445,8 @@ application."
;; contains are directly to /gnu/store/. Instead, it could be generated with
;; a generic ld.so.conf and result in paths more typical in an FHS distro,
;; like /lib within the container. This may be useful for future compatibility.
- (let* ((ld.so.conf steam-ld.so.conf)
- (ld.so.cache steam-ld.so.cache)
+ (let* ((ld.so.conf (ngc-ld.so.conf container))
+ (ld.so.cache (ngc-ld.so.cache container))
(pkg (ngc-wrap-package container))
(run (ngc-run container)))
(program-file
@@ -597,9 +477,9 @@ application."
(ld.so.cache #$(file-append ld.so.cache))
(all-args (cdr (command-line)))
(fhs-args (member "--" all-args))
- (steam-args (if fhs-args
- (reverse (cdr (member "--" (reverse all-args))))
- all-args)))
+ (package-args (if fhs-args
+ (reverse (cdr (member "--" (reverse all-args))))
+ all-args)))
(delete-file "/bin/sh")
(rmdir "/bin")
(for-each
@@ -607,12 +487,15 @@ application."
'("/run/current-system/profile/etc"
"/run/current-system/profile/share"
"/sbin"
- "/usr/share/vulkan/icd.d"
- "/usr/share/vulkan/implicit_layer.d")) ; Implicit layers like MangoHud
+ "/usr/lib"
+ "/usr/share/vulkan/icd.d"))
(for-each
new-symlink
`((,ld.so.cache . "/etc/ld.so.cache")
(,ld.so.conf . "/etc/ld.so.conf") ;; needed?
+ ;; For MangoHud implicit layers.
+ ((,guix-env "share/vulkan/implicit_layer.d") .
+ "/usr/share/vulkan/implicit_layer.d")
((,guix-env "etc/ssl") . "/etc/ssl")
((,guix-env "etc/ssl") . "/run/current-system/profile/etc/ssl")
((,union32 "lib") . "/lib")
@@ -622,18 +505,17 @@ application."
((,union64 "lib") . "/lib64")
((,union64 "lib") . "/run/current-system/profile/lib64")
((,union64 "lib/locale") . "/run/current-system/locale")
+ ;; Despite using GUIX_LOCPATH, stil need locales in their
+ ;; expected location for pressure-vessel to use them.
+ ((,union64 "lib/locale") . "/usr/lib/locale")
((,union64 "sbin/ldconfig") . "/sbin/ldconfig")
+ ((,union64 "share/mime") . "/usr/share/mime") ; Steam tray icon.
+ ((,union64 "share/glib-2.0") . "/usr/share/glib-2.0") ; Heroic interface.
((,union64 "share/drirc.d") . "/usr/share/drirc.d")
((,union64 "share/fonts") . "/run/current-system/profile/share/fonts")
((,union64 "etc/fonts") . "/etc/fonts")
((,union64 "share/vulkan/explicit_layer.d") .
- "/usr/share/vulkan/explicit_layer.d")
- ;; The MangoHud layer has the same file name for 64- and 32-bit,
- ;; so create links with different names.
- ((,union64 "share/vulkan/implicit_layer.d/MangoHud.json") .
- "/usr/share/vulkan/implicit_layer.d/MangoHud.json")
- ((,union32 "share/vulkan/implicit_layer.d/MangoHud.json") .
- "/usr/share/vulkan/implicit_layer.d/MangoHud.x86.json")))
+ "/usr/share/vulkan/explicit_layer.d")))
(for-each
icd-symlink
;; Use stat to follow links from packages like MangoHud.
@@ -641,11 +523,21 @@ application."
#:directories? #t #:stat stat)
,@(find-files (string-append union64 "/share/vulkan/icd.d")
#:directories? #t #:stat stat)))
- ;; TODO: Is this the right place for this?
+ ;; TODO: This is not the right place for this.
;; Newer versions of Steam won't startup if they can't copy to here
;; (previous would output this error but continue).
(if (file-exists? ".steam/root/bootstrap.tar.xz")
(chmod ".steam/root/bootstrap.tar.xz" #o644))
+ ;; TODO: Should other environment setup also happen inside the
+ ;; container rather than before container is launched?
+ ;;
+ ;; Set this so that e.g. non-Steam games added to Steam will
+ ;; launch properly. It seems otherwise they don't make it to
+ ;; launching Steam's pressure-vessel container (for Proton
+ ;; games). Wait to set this inside the container to not cause
+ ;; issues on foreign distros, see
+ ;; <https://gitlab.com/nonguix/nonguix/-/issues/303>
+ (setenv "LD_LIBRARY_PATH" "/lib64:/lib")
;; Process FHS-specific command line options.
(let* ((options (getopt-long (or fhs-args '("")) fhs-option-spec))
@@ -653,9 +545,13 @@ application."
(asound-lib (if asound32-opt "lib" "lib64")))
(if asound32-opt
(display "\n\n/etc/asound.conf configured for 32-bit.\n\n\n")
- (display "\n\n/etc/asound.conf configured for 64-bit.\nLaunch steam with \"steam -- --asound32\" to use 32-bit instead.\n\n\n"))
+ (display (string-append "\n\n/etc/asound.conf configured for 64-bit.\nLaunch "
+ #$(ngc-binary-name container)
+ " with \""
+ (basename #$(ngc-run container))
+ " -- --asound32\" to use 32-bit instead.\n\n\n")))
(with-output-to-file "/etc/asound.conf"
- (lambda _ (format (current-output-port) "# Generated by steam-client
+ (lambda _ (format (current-output-port) "# Generated by nonguix's internal script
# Use PulseAudio by default
pcm_type.pulse {
@@ -680,78 +576,4 @@ ctl.!default {
fallback \"sysdefault\"
}\n\n" asound-lib asound-lib))))
- (apply system* `(#$(file-append pkg run) ,@steam-args))))))))
-
-(define-public steam
- (nonguix-container->package
- (nonguix-container
- (name "steam")
- (wrap-package steam-client)
- (run "/bin/steam")
- (union64
- (fhs-union `(,@steam-client-libs
- ,@steam-gameruntime-libs
- ,@fhs-min-libs)
- #:name "fhs-union-64"))
- (union32
- (fhs-union `(,@steam-client-libs
- ,@steam-gameruntime-libs
- ,@fhs-min-libs)
- #:name "fhs-union-32"
- #:system "i686-linux"))
- (link-files '("share/applications/steam.desktop"
- "share/applications/steam-asound32.desktop"))
- (description "Steam is a digital software distribution platform created by
-Valve. This package provides a script for launching Steam in a Guix container
-which will use the directory @file{$HOME/.local/share/guix-sandbox-home} where
-all games will be installed."))))
-
-(define-public steam-nvidia
- (nonguix-container->package
- (nonguix-container
- (name "steam-nvidia")
- (wrap-package steam-client)
- (run "/bin/steam")
- (union64
- (replace-mesa
- (fhs-union `(,@steam-client-libs
- ,@steam-gameruntime-libs
- ,@fhs-min-libs)
- #:name "fhs-union-64")))
- (union32
- (replace-mesa
- (fhs-union `(,@steam-client-libs
- ,@steam-gameruntime-libs
- ,@fhs-min-libs)
- #:name "fhs-union-32"
- #:system "i686-linux")))
- (link-files '("share/applications/steam.desktop"
- "share/applications/steam-asound32.desktop"))
- (description "Steam is a digital software distribution platform created by
-Valve. This package provides a script for launching Steam in a Guix container
-which will use the directory @file{$HOME/.local/share/guix-sandbox-home} where
-all games will be installed."))))
-
-(define-public protonup-ng
- (package
- (name "protonup-ng")
- (version "0.2.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/cloudishBenne/protonup-ng")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0yd2mhhqxzarqxk85zf42s931jzc94f1cssn1hblsqghr79laa45"))))
- (build-system python-build-system)
- (arguments
- (list #:tests? #f)) ; there are no tests
- (inputs
- (list python-configparser python-requests))
- (home-page "https://github.com/cloudishBenne/protonup-ng")
- (synopsis "Manage Proton-GE Installations")
- (description "ProtonUp-ng is a CLI program and API to automate the installation
-and update of GloriousEggroll's Proton-GE.")
- (license license:gpl3)))
+ (apply system* `(#$(file-append pkg run) ,@package-args))))))))
diff --git a/nonguix/utils.scm b/nonguix/utils.scm
index 7611a47..6703f4a 100644
--- a/nonguix/utils.scm
+++ b/nonguix/utils.scm
@@ -1,20 +1,6 @@
-;;; GNU Guix --- Functional package management for GNU
+;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
-;;;
-;;; This file is not 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/>.
+;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (nonguix utils)
#:use-module (srfi srfi-26)