Compare commits

..

1 Commits

Author SHA1 Message Date
Jonathan Brielmaier
843e2d7d8d
Add git hook for checking commit signing.
This is analogue to what upstream Guix does in order to prevent invalid
signed commits being pushed.

* Makefile: New file.
* etc/git/pre-push: New file.

Co-authored-by: Wolf <wolf@wolfsden.cz>
2024-03-03 22:03:21 +01:00
48 changed files with 1252 additions and 3702 deletions

View File

@ -9,9 +9,6 @@
(name "ajgrf")) (name "ajgrf"))
("50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F" ("50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F"
(name "ambrevar")) (name "ambrevar"))
(;; primary: "220F 98D9 5E86 204C 0036 DA7B 6DEC 4360 408B 4185"
"F4C2 D1DF 3FDE EA63 D1D3 0776 ACC6 6D09 CA52 8292"
(name "hako"))
("5DA3 74E1 EADB DC7C 772D 5E65 5E76 B1AD 0FC2 2F93" ("5DA3 74E1 EADB DC7C 772D 5E65 5E76 B1AD 0FC2 2F93"
(name "ison")) (name "ison"))
(;; primary: "1BA4 08C5 8BF2 0EA7 3179 635A 865D C0A3 DED9 B5D0" (;; primary: "1BA4 08C5 8BF2 0EA7 3179 635A 865D C0A3 DED9 B5D0"
@ -21,8 +18,7 @@
(name "jonsger")) (name "jonsger"))
("D319 C7A9 8F2C 3A11 D9C0 0E30 F369 0CBE 3152 EF58" ("D319 C7A9 8F2C 3A11 D9C0 0E30 F369 0CBE 3152 EF58"
(name "pineapples")) (name "pineapples"))
(;; primary: "7E9F 5BF6 1680 4367 127B 7A87 F9E6 9FB8 5A75 54F1" ("A420 7B56 C255 109F 2CB3 157E 4990 97AE 5EA8 15D9"
"A420 7B56 C255 109F 2CB3 157E 4990 97AE 5EA8 15D9"
(name "podiki")) (name "podiki"))
("1EFB 0909 1F17 D28C CBF9 B13A 53D4 57B2 D636 EE82" ("1EFB 0909 1F17 D28C CBF9 B13A 53D4 57B2 D636 EE82"
(name "roptat")))) (name "roptat"))))

14
Makefile Normal file
View File

@ -0,0 +1,14 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright © 2022 Giacomo Leidi <goodoldpaul@autistici.org>
# Copyright © 2024 Jonathan Brielmaier <jonathan.brielmaier@web.de>
# Copyright © 2024 Wolf <wolf@wolfsden.cz>
# nonguix channel
channel_intro_commit = 897c1a470da759236cc11798f4e0a5f7d4d59fbc
channel_intro_signer = 2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5
authenticate:
echo "Authenticating Git checkout..." ; \
guix git authenticate \
--cache-key=channels/nonguix --stats \
"$(channel_intro_commit)" "$(channel_intro_signer)"

View File

@ -96,18 +96,20 @@ your configuration.
For some hardware the official Guix installation image won't do For some hardware the official Guix installation image won't do
(e.g. unsupported wifi). You can find a pre-generated installation image (e.g. unsupported wifi). You can find a pre-generated installation image
(time and version in line with upstream Guix), running the nonfree Linux (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]] (see below for important kernel and nonfree firmware, on the [[https://gitlab.com/nonguix/nonguix/-/releases][Releases page]]. Or, you can generate an
note if you use the 1.4.0 release or those created prior to April 2024). Or, installation image from a local checkout of this repository, at a more recent
you can generate an installation image from a local checkout of this commit, with the following command:
repository, at a more recent commit, with the following command:
#+begin_src sh #+begin_src sh
guix system image --image-type=iso9660 /path/to/this/channel/nongnu/system/install.scm guix system image --image-type=iso9660 /path/to/this/channel/nongnu/system/install.scm
#+end_src #+end_src
Like the official Guix installation image, this will produce a read-only image Like the official Guix installation image, this will produce a read-only image
with any changes made stored in memory. Alternatively, a writable image can with any changes made stored in memory. As indicated below, you will need to
be created with the following command: run ~guix pull~ to download the Nonguix package descriptions, so will need
enough memory to hold the cached channel code which can be several hundred
megabytes. As an alternative, you can create a writable image with the
following command:
#+begin_src sh #+begin_src sh
guix system image --image-size=7.2GiB /path/to/this/channel/nongnu/system/install.scm guix system image --image-size=7.2GiB /path/to/this/channel/nongnu/system/install.scm
@ -124,14 +126,11 @@ Either type of image can be written to a USB thumbdrive with:
dd if=/path/to/disk-image of=/dev/sdb bs=4M status=progress oflag=sync dd if=/path/to/disk-image of=/dev/sdb bs=4M status=progress oflag=sync
#+END_SRC #+END_SRC
*** Important note for 1.4.0 The installation media produced by the above method does not automatically
The installation media for 1.4.0 or those produced manually before commit configure your channels specification. You need to add Nonguix "manually"
[[https://gitlab.com/nonguix/nonguix/-/commit/80b273e86a19ceaee6d9b6650ed56e853409a799#note_2075084624][80b273e8]] (April 2024) do not automatically configure your channels into ~/etc/guix/channels.scm~ and then run ~guix pull~ to make Guix aware of
specification. You need to add Nonguix "manually" into ~/etc/guix/channels.scm~ Nonguix scheme libraries. Below is Guile scheme code to include Nonguix in the
and then run ~guix pull~ to make Guix aware of Nonguix scheme libraries. This channel specification.
will require enough memory to hold the cached channel code which can be
several hundred megabytes. Below is Guile scheme code to include Nonguix in
the channel specification.
#+BEGIN_SRC scheme #+BEGIN_SRC scheme
(use-modules (ice-9 pretty-print)) (use-modules (ice-9 pretty-print))
@ -221,75 +220,6 @@ firmware, and blacklisting of conflicting modules:
...)) ...))
...) ...)
#+END_SRC #+END_SRC
** NVIDIA graphics card
NVIDIA graphics card support in Nonguix consists of a system service =nvidia-service-type= and a package =nvda= for application setup.
The following code serves as an example for system setup:
#+BEGIN_SRC scheme
(use-modules (gnu services gnome)
(gnu services xorg)
(nongnu packages nvidia)
(nongnu services nvidia))
(operating-system
(kernel-arguments '("modprobe.blacklist=nouveau"
;; Set this if the card is not used for displaying or
;; you're using Wayland:
"nvidia_drm.modeset=1"))
(services
(cons* (service nvidia-service-type)
;; Configure desktop environment, GNOME for example.
(service gnome-desktop-service-type
;; Enable NVIDIA support, only do this when the card is
;; used for displaying.
(gnome-desktop-configuration
(gnome (replace-mesa gnome))))
;; Configure Xorg server, only do this when the card is used for
;; displaying.
(set-xorg-configuration
(xorg-configuration
(modules (cons nvda %default-xorg-modules))
(drivers '("nvidia"))))
...))
...)
#+END_SRC
For application setup, =mesa= has to be replaced with =nvda= for every individual package that requires the NVIDIA driver, this can be done with grafting (which doesn't rebuild packages) or rewriting inputs (which rebuilds packages) (see [[https://guix.gnu.org/manual/devel/en/guix.html#Package-Transformation-Options][Package Transformation Options]] in GNU Guix Reference Manual). For example:
#+BEGIN_SRC shell
guix build mesa-utils --with-graft=mesa=nvda
guix build mesa-utils --with-input=mesa=nvda
#+END_SRC
The above transformation can be used within an one-off software environment spawned by =guix shell= as well, for correct environment variables, the =nvda= package may be added into the environment:
#+BEGIN_SRC shell
guix shell mesa-utils nvda --with-graft=mesa=nvda \
-- glxinfo
#+END_SRC
To graft mesa with nvda programmatically, use =replace-mesa= defined in =(nongnu packages nvidia)=:
#+BEGIN_SRC scheme
(use-modules (nongnu packages nvidia))
;; Replace mesa with nvda for a single package.
(replace-mesa <some-package>)
;; Replace mesa with nvda for a package list.
(map replace-mesa (list <some-package> ...))
;; A package with mesa replaced is still a package, it can be part of a
;; package list.
(list (replace-mesa <some-package>)
...)
#+END_SRC
When the card is not used for displaying, environment variables =__GLX_VENDOR_LIBRARY_NAME=nvidia= and =__NV_PRIME_RENDER_OFFLOAD=1= may be set.
** Substitutes for nonguix ** Substitutes for nonguix
A Nonguix substitute server is available at [[https://substitutes.nonguix.org]]. A Nonguix substitute server is available at [[https://substitutes.nonguix.org]].
@ -329,9 +259,6 @@ sudo guix archive --authorize < signing-key.pub
sudo guix system reconfigure /etc/config.scm --substitute-urls='https://ci.guix.gnu.org https://bordeaux.guix.gnu.org https://substitutes.nonguix.org' sudo guix system reconfigure /etc/config.scm --substitute-urls='https://ci.guix.gnu.org https://bordeaux.guix.gnu.org https://substitutes.nonguix.org'
#+END_SRC #+END_SRC
The [[https://cuirass.nonguix.org/][Nonguix Cuirass instance]] can be useful when investigating substitution
failures.
Check out the [[https://guix.gnu.org/manual/en/html_node/Substitutes.html][chapter on substitutes]] Check out the [[https://guix.gnu.org/manual/en/html_node/Substitutes.html][chapter on substitutes]]
in the Guix manual for more details. in the Guix manual for more details.

48
etc/git/pre-push Executable file
View File

@ -0,0 +1,48 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright © 2024 Jonathan Brielmaier <jonathan.brielmaier@web.de>
# Copyright © 2024 Wolf <wolf@wolfsden.cz>
# This hook script prevents the user from pushing to GitLab if any of the new
# commits' OpenPGP signatures cannot be verified, or if a commit is signed
# with an unauthorized key.
# Called by "git push" after it has checked the remote status, but before
# anything has been pushed. If this script exits with a non-zero status nothing
# will be pushed.
#
# This hook is called with the following parameters:
#
# $1 -- Name of the remote to which the push is being done
# $2 -- URL to which the push is being done
#
# If pushing without using a named remote those arguments will be equal.
#
# Information about the commits which are being pushed is supplied as lines to
# the standard input in the form:
#
# <local ref> <local sha1> <remote ref> <remote sha1>
# This is the "empty hash" used by Git when pushing a branch deletion.
z40=0000000000000000000000000000000000000000
while read local_ref local_hash remote_ref remote_hash
do
# When deleting a remote branch, no commits are pushed to the remote, and
# thus there are no signatures to be verified.
if [ "$local_hash" != $z40 ]
then
# Only use the hook when pushing to the nonguix project on GitLab.
case "$2" in
*gitlab.com[:/]nonguix/*)
exec make authenticate
exit 127
;;
*)
exit 0
;;
esac
fi
done
exit 0

View File

@ -1,121 +0,0 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;; This file is not part of GNU Guix but requires this naming scheme
;;; so that the %nvidia-updater is properly read when using
;;; `guix refresh -L$(pwd) nvidia-driver' in nonguix root.
(define-module (guix import nvidia)
#:use-module (web client)
#:use-module (sxml match)
#:use-module (sxml simple)
#:use-module (guix memoization)
#:use-module (guix packages)
#:use-module (guix upstream)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-71)
#:export (%nvidia-updater))
(define nvidia-latest-url "https://www.nvidia.com/en-us/drivers/unix/")
(define (archive->guix-arch system)
(match system
("https://www.nvidia.com/object/linux-amd64-display-archive.html"
"x86_64-linux")
("https://www.nvidia.com/en-us/drivers/unix/linux-aarch64-archive/"
"aarch64-linux")
(_ #f)))
(define (archive? cand)
(or (string= cand (string-append nvidia-latest-url "linux-aarch64-archive/"))
(and (string-prefix? "https://www.nvidia.com/object/" cand)
(string-suffix? "-archive.html" cand))))
(define nvidia-versions
(memoize
(lambda _
(let* ((response content (http-get nvidia-latest-url))
(match-str (string-match "<div id=\"rightContent\".*</div>"
content))
(greedy-right-content (match:substring match-str))
(match-str (string-match "</div>" greedy-right-content))
(right-content
(string-append (match:prefix match-str) "</div>"))
;; xml->sxml is not flexible enough for html.
;; For instance, <br> tags don't have closing </br>.
;; This trick preprocesses html to extract all <a> tags in
;; a <body> wrapper, which sxml-match can handle well.
(xml (xml->sxml
(string-append
"<body><"
(string-join
(filter (cute string-prefix? "a " <>)
(string-split right-content #\<))
"</a><")
"</a></body>")
#:trim-whitespace? #t))
(link-alist
(sxml-match
xml
((*TOP*
(body
(a (@ (href ,url)) ,version) ...))
(fold acons
'()
(list (or (string= version "Archive")
(string-trim version))
...)
(list (if (archive? url)
(archive->guix-arch url)
url)
...)))))
(system #f)
(versions
(fold
(lambda (el rest)
(match el
(`(#t . ,s)
(set! system s)
rest)
(`(,version . ,address)
;; aarch64 seems to follow the same driver versions than x86_64
;; KISS: use only an alist of versions
;; go for an alist of alists insted if they diverge
(if (and (string? system) (string= system "x86_64-linux"))
(cons version rest)
rest))
(_ rest)))
'()
link-alist)))
(fold acons '() (list "main" "latest" "beta") (take versions 3))))))
(define* (latest-release package #:key (version #f))
"Return an <upstream-source> for the latest-release of PACKAGE."
(let* ((name (package-name package))
(kind (match name
("nvidia-driver" "main")
("nvidia-driver-beta" "beta")))
(version (or version (assoc-ref (nvidia-versions) kind))))
(upstream-source
(package name)
(version version)
(urls (list (string-append
"https://us.download.nvidia.com/XFree86/Linux-x86_64/"
version "/NVIDIA-Linux-x86_64-" version ".run"))))))
(define (nvidia-package? package)
"Return true if PACKAGE is Nvidia."
(member (package-name package)
(list "nvidia-driver" "nvidia-driver-beta")))
(define %nvidia-updater
(upstream-updater
(name 'nvidia)
(description "Updater for Nvidia packages")
(pred nvidia-package?)
(import latest-release)))
;; nvidia.scm ends here.

View File

@ -9,16 +9,6 @@
(channel-news (channel-news
(version 0) (version 0)
(entry (commit "be61a1829a19724299e46d6e3c1038229039c3ee")
(title
(en "Nvidia driver package/service updates and changes"))
(body
(en "In addition to the Nvidia driver package being updated to 550.67,
the service, procedures, and configuration has changed. Please see the new
directions in the Nonguix README.org for how to use the Nvidia driver in your
system configuration, and of course report any issues with these changes or
improvements for the documentation.")))
(entry (commit "8078757b887a7691644b119913c3f7b41661775d") (entry (commit "8078757b887a7691644b119913c3f7b41661775d")
(title (title
(en "New @code{GUIX_SANDBOX_EXTRA_SHARES} variable for nonguix containers (Steam)")) (en "New @code{GUIX_SANDBOX_EXTRA_SHARES} variable for nonguix containers (Steam)"))

View File

@ -1,66 +0,0 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2015, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
(define-module (nongnu packages)
#:use-module (gnu packages)
#:use-module (guix diagnostics)
#:use-module (guix i18n)
#:use-module (ice-9 match)
#:use-module (srfi srfi-34)
#:replace (%patch-path
search-patch)
#:export (nongnu-patches))
;;; Commentary:
;;;
;;; This module refines the default value of some parameters from (gnu
;;; packages) and the syntax/procedures using those. This allows
;;; 'search-paths' and friends to work without any user intervention.
;;;
;;; Code:
(define %nongnu-root-directory
;; This is like %distro-root-directory from (gnu packages), with adjusted
;; paths.
(letrec-syntax ((dirname* (syntax-rules ()
((_ file)
(dirname file))
((_ file head tail ...)
(dirname (dirname* file tail ...)))))
(try (syntax-rules ()
((_ (file things ...) rest ...)
(match (search-path %load-path file)
(#f
(try rest ...))
(absolute
(dirname* absolute things ...))))
((_)
#f))))
(try ("nongnu/packages/firmware.scm" nongnu/ packages/)
("nongnu/ci.scm" nongnu/))))
(define %patch-path
;; Define it after '%package-module-path' so that '%load-path' contains user
;; directories, allowing patches in $GUIX_PACKAGE_PATH to be found.
(make-parameter
(map (lambda (directory)
(if (string=? directory %nongnu-root-directory)
(string-append directory "/nongnu/packages/patches")
directory))
%load-path)))
;;; XXX: The following must be redefined to make use of the overridden
;;; %patch-path parameter above.
(define (search-patch file-name)
"Search the patch FILE-NAME. Raise an error if not found."
(or (search-path (%patch-path) file-name)
(raise (formatted-message (G_ "~a: patch not found")
file-name))))
;;; XXX: `search-patches' being syntax, it can't be overridden by the module
;;; system, or so it seems, so we simply rename it.
(define-syntax-rule (nongnu-patches file-name ...)
"Return the list of absolute file names corresponding to each
FILE-NAME found in %PATCH-PATH."
(list (search-patch file-name) ...))

View File

@ -21,20 +21,20 @@
(define-public anydesk (define-public anydesk
(package (package
(name "anydesk") (name "anydesk")
(version "6.3.2-1") (version "6.3.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.anydesk.com/linux/anydesk_" (uri (string-append "https://download.anydesk.com/linux/anydesk-"
version "_amd64.deb")) version "-amd64.tar.gz"))
(sha256 (sha256
(base32 (base32
"13b5ab4a889vz39d36f45mhv3mlaxb305wsh3plk3dbjcrkkkirb")))) "0lp4zvbdriwbzfnvblbbpzxsrs0l425rha9qjs9sy6ff6myk7qxi"))))
(build-system binary-build-system) (build-system binary-build-system)
(arguments (arguments
`(#:validate-runpath? #f `(#:validate-runpath? #f
#:strip-binaries? #f ;; For some reason it breaks the program #:strip-binaries? #f ;; For some reason it breaks the program
#:patchelf-plan #:patchelf-plan
`(("usr/bin/anydesk" ("atk" `(("anydesk" ("atk"
"cairo" "cairo"
"fontconfig" "fontconfig"
"freetype" "freetype"
@ -66,29 +66,17 @@
"polkit-gnome" "polkit-gnome"
"pulseaudio"))) "pulseaudio")))
#:install-plan #:install-plan
`(("usr/bin/anydesk" "/bin/") `(("anydesk" "/bin/")
("usr/share/polkit-1/actions/com.anydesk.anydesk.policy" "/etc/polkit-1/actions/") ("polkit-1/com.anydesk.anydesk.policy" "/etc/polkit-1/actions/")
("usr/share/icons" "/share/icons/")) ("icons/" "/share/icons/"))
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(replace 'binary-unpack (replace 'unpack
(lambda* (#:key source #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(let* ((files (filter (lambda (f) (invoke "tar" "-xvzf" (assoc-ref inputs "source") "--strip-components" "1")))
(not (string=? (basename f) "environment-variables")))
(find-files (getcwd))))
(binary-file (car files)))
(when (= 1 (length files))
(mkdir "binary")
(chdir "binary")
(invoke "ar" "x" binary-file)
(invoke "tar" "xvf" "data.tar.gz")
(invoke "rm" "-rfv" "control.tar.gz"
"data.tar.gz"
binary-file
"debian-binary")))))
(add-after 'wrap-program 'install-desktop-entry (add-after 'wrap-program 'install-desktop-entry
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((desktop-file "usr/share/applications/anydesk.desktop") (let* ((desktop-file "anydesk.desktop")
(out (assoc-ref outputs "out")) (out (assoc-ref outputs "out"))
(applications (string-append out "/share/applications"))) (applications (string-append out "/share/applications")))
(substitute* desktop-file (substitute* desktop-file

View File

@ -146,7 +146,7 @@
openlibm openlibm
pulseaudio pulseaudio
qtbase-5 qtbase-5
qtserialport-5 qtserialport
qtmultimedia-5 qtmultimedia-5
zlib)) zlib))
(synopsis "Layout, editing, and control software for your laser cutter") (synopsis "Layout, editing, and control software for your laser cutter")

View File

@ -121,7 +121,6 @@
flac flac
font-liberation font-liberation
gdk-pixbuf gdk-pixbuf
gtk
harfbuzz harfbuzz
libexif libexif
libglvnd libglvnd
@ -144,10 +143,10 @@
(license (nonfree "https://www.google.com/intl/en/chrome/terms/"))))) (license (nonfree "https://www.google.com/intl/en/chrome/terms/")))))
(define-public google-chrome-stable (define-public google-chrome-stable
(make-google-chrome "stable" "131.0.6778.108" "0b8a3dmn7n4kyjzyirxcy6xihnasmp3rcy2ly4zh7vp7r5l6lkqd")) (make-google-chrome "stable" "121.0.6167.139" "1b08wqflp1j5yqpw2g9z2s239gs8bzqbxigcxk93aqwf5c21ijkh"))
(define-public google-chrome-beta (define-public google-chrome-beta
(make-google-chrome "beta" "132.0.6834.32" "0ncjyg3vxsjspb0i1nsflcry9sfsffnqiwa2y7cgh46xamdq6f2c")) (make-google-chrome "beta" "122.0.6261.6" "1b12bjcg99f6bjfhm311hdx9s1a4i13mcgxbvf1gpzq8989c1g96"))
(define-public google-chrome-unstable (define-public google-chrome-unstable
(make-google-chrome "unstable" "133.0.6847.2" "1z15maqs1g8lhi7dm9hn4r272nl0g967a11igmw2sj14zl3n9j6g")) (make-google-chrome "unstable" "123.0.6262.5" "04mf9nysdn77371fxa3z0wbvy2k09vw49s3lrcynlwgiwrz89a3m"))

View File

@ -87,7 +87,7 @@ lets you focus on your code.")
(define-public clj-kondo (define-public clj-kondo
(package (package
(name "clj-kondo") (name "clj-kondo")
(version "2025.01.16") (version "2023.10.20")
(source (origin (source (origin
(method url-fetch/zipbomb) (method url-fetch/zipbomb)
(uri (string-append (uri (string-append
@ -95,11 +95,11 @@ lets you focus on your code.")
version "/clj-kondo-" version "-linux-amd64.zip")) version "/clj-kondo-" version "-linux-amd64.zip"))
(sha256 (sha256
(base32 (base32
"0w9a2lz9xr5446bav2fp70jfinlm9zrl0iv9s0h0b6jczqx2f977")))) "1zb4bkmhv5mh18z8h82qa1a0m95pd5dwdxg31pqgs6lnlca3vsph"))))
(build-system binary-build-system) (build-system binary-build-system)
(arguments (arguments
(list #:patchelf-plan `'(("clj-kondo" ("gcc" "zlib"))) (list #:patchelf-plan `'(("clj-kondo" ("gcc" "zlib")))
#:install-plan `'(("./clj-kondo" "/bin/")) #:install-plan `'(("clj-kondo" "/bin/"))
#:phases #~(modify-phases %standard-phases #:phases #~(modify-phases %standard-phases
(add-after 'unpack 'chmod (add-after 'unpack 'chmod
(lambda _ (lambda _
@ -115,67 +115,3 @@ lets you focus on your code.")
(description "Clj-kondo performs static analysis on Clojure, ClojureScript (description "Clj-kondo performs static analysis on Clojure, ClojureScript
and EDN, without the need of a running REPL.") and EDN, without the need of a running REPL.")
(license license:epl1.0))) (license license:epl1.0)))
(define-public clojure-lsp
(package
(name "clojure-lsp")
(version "2024.03.13-13.11.00")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append "https://github.com/clojure-lsp/clojure-lsp"
"/releases/download/" version
"/clojure-lsp-native-static-linux-amd64.zip"))
(sha256
(base32
"1l6w55aragyf8rzy087iqw97xnpih5syjwhf0jwbgrqps2k44ms5"))))
(build-system binary-build-system)
(arguments
`(#:install-plan
'(("./clojure-lsp" "/bin/"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chmod
(lambda _
(chmod "./clojure-lsp" #o755))))))
(inputs (list `(,gcc "lib") zlib))
(supported-systems '("x86_64-linux"))
(home-page "https://github.com/clojure-lsp/clojure-lsp")
(synopsis "Clojure & ClojureScript Language Server (LSP) implementation")
(description "This package provides a Language Server for Clojure and ClojureScript
languages. The goal of this project is to bring great editing tools for
Clojure/Clojurescript to all editors and programatically via its CLI and API.
It aims to work alongside you to help you navigate, identify and fix errors,
perform refactors and more.")
(license license:expat)))
(define-public babashka
(package
(name "babashka")
(version "1.3.189")
(source (origin
(method url-fetch/tarbomb)
(uri (string-append "https://github.com/babashka/babashka"
"/releases/download/v" version "/babashka-"
version "-linux-amd64.tar.gz"))
(sha256
(base32
"1gzra3y5iljjqi4rj1qxr3yniqla3qnhv881gkzrp788fwsvlmwv"))))
(build-system binary-build-system)
(arguments
`(#:patchelf-plan
'(("bb" ("gcc" "zlib")))
#:install-plan
'(("./bb" "/bin/"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chmod
(lambda _
(chmod "bb" #o755))))))
(inputs (list `(,gcc "lib") zlib))
(supported-systems '("x86_64-linux"))
(home-page "https://github.com/babashka/babashka")
(synopsis "Native, fast starting Clojure interpreter for scripting")
(description "Babashka is a native Clojure interpreter for scripting with
fast startup. Its main goal is to leverage Clojure in places where you would
be using bash otherwise.")
(license license:epl1.0)))

View File

@ -10,14 +10,14 @@
(define-public unrar (define-public unrar
(package (package
(name "unrar") (name "unrar")
(version "7.0.9") (version "6.2.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://www.rarlab.com/rar/unrarsrc-" (uri (string-append "https://www.rarlab.com/rar/unrarsrc-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"09l336li4q7yrpjq22q6da2vrynpqbyb4a9fdxa02k65wkwi6p2h")))) "1mbw20lh300r541dz4m84rvq7b542mnb70yc29afrjj6waknqza7"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:tests? #f ; No tests. '(#:tests? #f ; No tests.

View File

@ -15,7 +15,7 @@
(define-public compcert (define-public compcert
(package (package
(name "compcert") (name "compcert")
(version "3.14") (version "3.12")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -24,11 +24,15 @@
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"030fsg0qr9aasmwk0ahp78sw8rbjmf6pl1w9ws5ghs61kyk4qwj1")))) "0pcrkz1as37iz2wcp8j226fjn672lrj0cip2s0wpkiy097qi0yc5"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'configure 'allow-newer-coq-version
(lambda _
(substitute* "configure"
(("8.15.2") "8.16.1"))))
(replace 'configure (replace 'configure
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let ((system ,(match (or (%current-target-system) (%current-system)) (let ((system ,(match (or (%current-target-system) (%current-system))

View File

@ -67,25 +67,25 @@ various IDEs and plugins.")
(license license:expat))) (license license:expat)))
(define-public dotnet (define-public dotnet
(let ((dotnet-sdk-version "8.0.8")) (let ((dotnet-sdk-version "6.0.9"))
(package (package
(name "dotnet") (name "dotnet")
(version "8.0.401") (version "6.0.401")
(source (source
(origin (origin
(method url-fetch/tarbomb) (method url-fetch/tarbomb)
(uri (uri
(string-append "https://download.visualstudio.microsoft.com/" (string-append "https://download.visualstudio.microsoft.com/download/pr/8159607a-e686-4ead-ac99-b4c97290a5fd/ec6070b1b2cc0651ebe57cf1bd411315/dotnet-sdk-"
"download/pr/db901b0a-3144-4d07-b8ab-6e7a43e7a791/" version
"4d9d1b39b879ad969c6c0ceb6d052381/dotnet-sdk-" "-linux-x64.tar.gz"))
version "-linux-x64.tar.gz"))
(sha256 (sha256
(base32 "1ygr563apl2776yjabn0plsvx5fcmb5wb0fnldrqwb9b5n8d6cb2")))) (base32
"05yr64ffcaf48ripxzcv9nwlzp7r83cy9hz17dm5c0317lhksqch"))))
(build-system binary-build-system) (build-system binary-build-system)
(arguments (arguments
`(#:patchelf-plan `(#:patchelf-plan
;; TODO: Make this a more compact procedure. `(("dotnet"
`(("dotnet" ("gcc:lib" "zlib")) ("gcc:lib" "zlib"))
(,,(string-append "shared/Microsoft.NETCore.App/" (,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version dotnet-sdk-version
"/libSystem.Net.Security.Native.so") "/libSystem.Net.Security.Native.so")
@ -94,18 +94,6 @@ various IDEs and plugins.")
dotnet-sdk-version dotnet-sdk-version
"/libSystem.Security.Cryptography.Native.OpenSsl.so") "/libSystem.Security.Cryptography.Native.OpenSsl.so")
("openssl")) ("openssl"))
(,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version
"/libSystem.Native.so")
("gcc:lib"))
(,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version
"/libSystem.Globalization.Native.so")
("gcc:lib"))
(,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version
"/libSystem.Net.Security.Native.so")
("gcc:lib"))
(,,(string-append "shared/Microsoft.NETCore.App/" (,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version dotnet-sdk-version
"/libSystem.IO.Compression.Native.so") "/libSystem.IO.Compression.Native.so")
@ -120,12 +108,12 @@ various IDEs and plugins.")
(,,(string-append "shared/Microsoft.NETCore.App/" (,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version "/libclrjit.so") dotnet-sdk-version "/libclrjit.so")
("gcc:lib")) ("gcc:lib"))
(,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version "/libclrgc.so")
("gcc:lib"))
(,,(string-append "shared/Microsoft.NETCore.App/" (,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version "/libcoreclr.so") dotnet-sdk-version "/libcoreclr.so")
("gcc:lib" "icu4c")) ("gcc:lib" "icu4c"))
(,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version "/libdbgshim.so")
("gcc:lib"))
(,,(string-append "shared/Microsoft.NETCore.App/" (,,(string-append "shared/Microsoft.NETCore.App/"
dotnet-sdk-version "/libhostpolicy.so") dotnet-sdk-version "/libhostpolicy.so")
("gcc:lib")) ("gcc:lib"))

View File

@ -83,7 +83,7 @@
((guix elf) #:select (elf-segments parse-elf PT_INTERP)) ((guix elf) #:select (elf-segments parse-elf PT_INTERP))
((ice-9 binary-ports) #:select (get-bytevector-n)) ((ice-9 binary-ports) #:select (get-bytevector-n))
((srfi srfi-1) #:select (last)) ((srfi srfi-1) #:select (last))
,@%default-gnu-imported-modules) ,@%gnu-build-system-modules)
#:tests? #f #:tests? #f
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases

View File

@ -1,5 +1,5 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2023, 2024 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
(define-module (nongnu packages editors) (define-module (nongnu packages editors)
#:use-module (gnu packages base) #:use-module (gnu packages base)
@ -14,39 +14,32 @@
(define-public vscodium (define-public vscodium
(package (package
(name "vscodium") (name "vscodium")
(version "1.92.1.24225") (version "1.87.0.24060")
(source (source
(let ((arch (match (or (%current-target-system) (%current-system))
("aarch64-linux" "arm64")
("armhf-linux" "armhf")
(_ "x64")))
(hash (match (or (%current-target-system) (%current-system))
("aarch64-linux"
"0m5x9v577h8n16ypzb1y2066alc59v5bw7jiqp2xr7g20s9kb0vy")
("armhf-linux"
"047gz12gx8pa5aglykd0785l6i9ivsn4kkgfhi5l0y4jh8hjys8c")
(_
"1w1rhbbk177yz85csck3sax51qnvgaip9w238dmzb4a50ikfnp23"))))
(origin (origin
(method url-fetch) (method url-fetch)
(uri (uri
(let ((arch (match (or (%current-target-system) (%current-system))
("aarch64-linux" "arm64")
("armhf-linux" "armhf")
(_ "x64"))))
(string-append (string-append
"https://github.com/VSCodium/vscodium/releases/download/" version "https://github.com/VSCodium/vscodium/releases/download/" version
"/VSCodium-linux-" arch "-" version ".tar.gz")) "/VSCodium-linux-" arch "-" version ".tar.gz")))
(sha256 (sha256
(base32 hash))))) (base32 "1lw7j8h0i96mg8si8dmi55ldbz5j63zb93qf1g59siavx84f1zpd"))))
(build-system chromium-binary-build-system) (build-system chromium-binary-build-system)
(arguments (arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:substitutable? #f #:substitutable? #f
#:wrapper-plan #:wrapper-plan
#~'(("opt/vscodium/codium" (("out" "/opt/vscodium")))) #~'("opt/vscodium/codium")
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
(lambda* (#:key source #:allow-other-keys) (lambda _
(mkdir-p "opt/vscodium") (mkdir-p "opt/vscodium")
(invoke "tar" "-xvf" source "-C" "opt/vscodium"))) (invoke "tar" "-xvf" #$source "-C" "opt/vscodium")))
(add-before 'install-wrapper 'install-entrypoint (add-before 'install-wrapper 'install-entrypoint
(lambda _ (lambda _
(let* ((bin (string-append #$output "/bin"))) (let* ((bin (string-append #$output "/bin")))
@ -72,7 +65,7 @@
(string-append apps "/" #$name ".desktop") (string-append apps "/" #$name ".desktop")
#:name "VSCodium" #:name "VSCodium"
#:generic-name "Text Editor" #:generic-name "Text Editor"
#:exec (string-append #$output "/bin/codium --ozone-platform-hint=auto") #:exec (string-append #$output "/bin/codium")
#:icon "code" #:icon "code"
#:type "Application" #:type "Application"
#:actions '("new-empty-window") #:actions '("new-empty-window")
@ -83,7 +76,15 @@
#:startup-w-m-class "Code" #:startup-w-m-class "Code"
#:comment #:comment
'(("en" "Code Editing. Redefined.") '(("en" "Code Editing. Redefined.")
(#f "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")) (supported-systems '("armhf-linux" "aarch64-linux" "x86_64-linux"))
(native-inputs (native-inputs
(list tar)) (list tar))

View File

@ -1,8 +1,6 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2023 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2023 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2024 Andre A. Gomes <andremegafone@gmail.com>
;;; Copyright © 2024 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (nongnu packages electron) (define-module (nongnu packages electron)
#:use-module (nonguix build-system chromium-binary) #:use-module (nonguix build-system chromium-binary)
@ -15,8 +13,11 @@
#:use-module (gnu packages gtk) #:use-module (gnu packages gtk)
#:use-module (gnu packages video)) #:use-module (gnu packages video))
(define (electron-source version hash) (define-public electron
(origin (package
(name "electron")
(version "27.1.0")
(source (origin
(method url-fetch/zipbomb) (method url-fetch/zipbomb)
(uri (uri
(string-append (string-append
@ -26,18 +27,9 @@
("x86_64-linux" "linux-x64") ("x86_64-linux" "linux-x64")
("i686-linux" "linux-ia32") ("i686-linux" "linux-ia32")
("aarch64-linux" "linux-arm64") ("aarch64-linux" "linux-arm64")
("armhf-linux" "linux-armv7l") ("armhf-linux" "linux-armv7l"))
;; We need a default case
(_ "unsupported"))
".zip")) ".zip"))
(sha256 (base32 hash)))) (sha256 (base32 "08illknzcikzzsb6i7z1p2xgb20jjc5cx9hynll25f44q9pg48b6"))))
(define-public electron-27
(package
(name "electron")
(version "27.3.6")
(source (electron-source version
"12hjn1bfk8c25f54kk561mkjl7hsk8b16rj7a7gczswjdpx6fpi0"))
(build-system chromium-binary-build-system) (build-system chromium-binary-build-system)
(arguments (arguments
`(#:wrapper-plan `(#:wrapper-plan
@ -89,18 +81,3 @@ Chromium and is used by the Atom editor and many other apps.")
(license (license:nonfree (license (license:nonfree
(string-append "https://github.com/electron/electron/blob/v" (string-append "https://github.com/electron/electron/blob/v"
version "/LICENSE"))))) version "/LICENSE")))))
(define-public electron electron-27)
(define-public electron-28
(package
(inherit electron-27)
(version "28.2.7")
(source (electron-source version
"0sw8nn1jr9x0p4s2g5yp5lrpy8mzq0sjd099x7axbg6cm1c80iff"))))
(define-public electron-29
(package
(inherit electron-27)
(version "29.1.4")
(source (electron-source version
"1d96nhx9j9mzc3q3ald1imqdxdgq9by1qm4q703sjy3knq1p38w3"))))

View File

@ -2,7 +2,6 @@
;;; Copyright © 2022-2023 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2022-2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2023 Krzysztof Baranowski <pharcosyle@gmail.com> ;;; Copyright © 2023 Krzysztof Baranowski <pharcosyle@gmail.com>
;;; Copyright © 2024 Efraim Flashner <efraim@flashner.co.il>
(define-module (nongnu packages firmware) (define-module (nongnu packages firmware)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
@ -135,18 +134,16 @@ HDMI to USB Type-C Bridge in the PinePhone.")
(build-system copy-build-system) (build-system copy-build-system)
(arguments (arguments
`(#:substitutable? #f `(#:substitutable? #f
#:install-plan '(;;Bluetooth firmware #:install-plan '( ;Bluetooth firmware
("BCM4345C5.hcd" "/lib/firmware/brcm/") ("BCM4345C5.hcd" "usr/lib/firmware/brcm/")
;; WiFi firmware ;; WiFi firmware
("fw_bcm43456c5_ag.bin" "/lib/firmware/brcm/") ("fw_bcm43456c5_ag.bin" "usr/lib/firmware/brcm/")
("fw_bcm43456c5_ag.bin"
"/lib/firmware/brcm/brcmfmac43456-sdio.bin")
("brcmfmac43456-sdio.clm_blob" ("brcmfmac43456-sdio.clm_blob"
"/lib/firmware/brcm/") "usr/lib/firmware/brcm/")
("brcmfmac43456-sdio.AP6256.txt" ("brcmfmac43456-sdio.AP6256.txt"
"/lib/firmware/brcm/") "usr/lib/firmware/brcm/")
("brcmfmac43456-sdio.AP6256.txt" ("brcmfmac43456-sdio.AP6256.txt"
"/lib/firmware/brcm/brcmfmac43456-sdio.pine64,pinebook-pro.txt")))) "usr/lib/firmware/brcm/brcmfmac43456-sdio.pine64,pinebook-pro.txt"))))
(synopsis "Firmware for the wifi/bt module AP6256") (synopsis "Firmware for the wifi/bt module AP6256")
(description (description
"This package provides Firmware for the wifi/bt module AP6256, "This package provides Firmware for the wifi/bt module AP6256,

View File

@ -213,10 +213,10 @@ Included fonts:
(define-public font-apple-sf-pro (define-public font-apple-sf-pro
(apple-font (apple-font
#:font-name "SF Pro" #:font-name "SF Pro"
#:archive-timestamp "20240527221252" #:archive-timestamp "20230710073336"
#:file "SF-Pro" #:file "SF-Pro"
#:version "20.0d8e1" #:version "19.0d6e1"
#:hash "153k3q8h5mpd358b1lsa8ha32qxv7vc2q661k20j4nnf3ndjkv9j" #:hash "19qa6fs6x5614sqw9a6idlizzsssw8256crz1ps2p2n6gwp2fvaq"
#:description "This neutral, flexible, sans-serif typeface is the system #:description "This neutral, flexible, sans-serif typeface is the system
font for iOS, iPad OS, macOS and tvOS. SF Pro features nine weights, variable 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 optical sizes for optimal legibility, four widths, and includes a rounded
@ -226,10 +226,10 @@ scripts."))
(define-public font-apple-sf-compact (define-public font-apple-sf-compact
(apple-font (apple-font
#:font-name "SF Compact" #:font-name "SF Compact"
#:archive-timestamp "20240527221317" #:archive-timestamp "20230710073418"
#:file "SF-Compact" #:file "SF-Compact"
#:version "20.0d8e1" #:version "19.0d6e1"
#:hash "01j7k95rnmg667hyhj88fxqrgsah2mnk2ws7fmclif92mqcgwirj" #:hash "02127drlqvwscq6vaphmvsp85cn8j4zfhi0kb9a3fzc0z8b95hdq"
#:description "Sharing many features with SF Pro, SF Compact features an #:description "Sharing many features with SF Pro, SF Compact features an
efficient, compact design that is optimized for small sizes and narrow columns. 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.")) SF Compact is the system font for watchOS and includes a rounded variant."))
@ -237,10 +237,10 @@ SF Compact is the system font for watchOS and includes a rounded variant."))
(define-public font-apple-sf-mono (define-public font-apple-sf-mono
(apple-font (apple-font
#:font-name "SF Mono" #:font-name "SF Mono"
#:archive-timestamp "20240527221346" #:archive-timestamp "20230710073457"
#:file "SF-Mono" #:file "SF-Mono"
#:version "20.0d8e1" #:version "19.0d6e1"
#:hash "0cxj1wk6nbz1ysi0cg1w79b7ja48n00dypxkrsc3mvrn1vmdb4dm" #:hash "0vjdpl3xyxl2rmfrnjsxpxdizpdr4canqa1nm63s5d3djs01iad6"
#:description "This monospaced variant of San Francisco enables alignment #:description "This monospaced variant of San Francisco enables alignment
between rows and columns of text, and is used in coding environments like Xcode. 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.")) SF Mono features six weights and supports Latin, Greek, and Cyrillic scripts."))
@ -248,10 +248,10 @@ SF Mono features six weights and supports Latin, Greek, and Cyrillic scripts."))
(define-public font-apple-sf-arabic (define-public font-apple-sf-arabic
(apple-font (apple-font
#:font-name "SF Arabic" #:font-name "SF Arabic"
#:archive-timestamp "20240527221359" #:archive-timestamp "20230710073501"
#:file "SF-Arabic" #:file "SF-Arabic"
#:version "20.0d8e1" #:version "19.0d6e1"
#:hash "0sm7w5i19n3jdj6d04344nxizqacg264rladjiwhxhwa3ksfbxsn" #:hash "0phl3wi0lq7djcg8nqg1ml1f73bsfjzmvd2n8hkl6dbprmw614jp"
#:description "A contemporary interpretation of the Naskh style with a #:description "A contemporary interpretation of the Naskh style with a
rational and flexible design, this extension of San Francisco is the Arabic rational and flexible design, this extension of San Francisco is the Arabic
system font on Apple platforms. Like San Francisco, SF Arabic features nine system font on Apple platforms. Like San Francisco, SF Arabic features nine
@ -261,10 +261,10 @@ based on the point size, and includes a rounded variant."))
(define-public font-apple-new-york (define-public font-apple-new-york
(apple-font (apple-font
#:font-name "New York" #:font-name "New York"
#:archive-timestamp "20240527221356" #:archive-timestamp "20230710073506"
#:file "NY" #:file "NY"
#:version "17.0d5e1" #:version "17.0d5e1"
#:hash "06d8pnfp4z5nb82mh7g7pnz5m4njph3zy17ww1m8x0m34hn50zdn" #:hash "1hgxyizpgam7y1xh36fsypd3a1nn417wdnnfk1zahq9vhxrrds2w"
#:description "A companion to San Francisco, this serif typeface is based on #:description "A companion to San Francisco, this serif typeface is based on
essential aspects of historical type styles. New York features six weights, essential aspects of historical type styles. New York features six weights,
supports Latin, Greek and Cyrillic scripts, and features variable optical sizes supports Latin, Greek and Cyrillic scripts, and features variable optical sizes
@ -278,10 +278,10 @@ graphic display face at larger sizes."))
(define-public font-apple-sf-symbols (define-public font-apple-sf-symbols
(apple-font (apple-font
#:font-name "SF Symbols" #:font-name "SF Symbols"
#:archive-timestamp "20240701100406" #:archive-timestamp "20230710073513"
#:file "SF-Symbols-6" #:file "SF-Symbols-5"
#:version "6" #:version "5"
#:hash "1hyghp03zpsiks2p6kmghnmg28kkjj3qqk2hgwva855kly6r4hv8" #:hash "1bwlq1nf75bv0x36qdk371r2pd5slf3jlv50wgsl0kpj1dds22sf"
#:description "With over 5,000 symbols, SF Symbols is a library of #:description "With over 5,000 symbols, SF Symbols is a library of
iconography designed to integrate seamlessly with San Francisco, the system iconography designed to integrate seamlessly with San Francisco, the system
font for Apple platforms. Symbols come in nine weights and three scales, and font for Apple platforms. Symbols come in nine weights and three scales, and

View File

@ -58,7 +58,7 @@
(define heroic-client (define heroic-client
(package (package
(name "heroic-client") (name "heroic-client")
(version "2.15.2") (version "2.12.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -67,12 +67,19 @@
version "/heroic_" version "_amd64.deb")) version "/heroic_" version "_amd64.deb"))
(sha256 (sha256
(base32 (base32
"1bzdb9nqmr9w092c22n57ldykm00n98d78rhqzypf430lrl0kzcj")))) "0ikb9r72n7xknns81mibipfwqh0r9hqnm5a3k4xsk8my1gajc60c"))))
(build-system chromium-binary-build-system) (build-system chromium-binary-build-system)
(arguments (arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan #:wrapper-plan
#~'(("lib/Heroic/heroic" (("out" "/lib/Heroic")))) #~'("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 #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd (add-after 'binary-unpack 'setup-cwd
@ -81,23 +88,26 @@
;; Use the more standard lib directory for everything. ;; Use the more standard lib directory for everything.
(rename-file "opt/" "lib") (rename-file "opt/" "lib")
;; Remove unneeded files. ;; Remove unneeded files.
(delete-file-recursively "usr"))) (delete-file-recursively "usr")
;; Fix the .desktop file "Exec" line to just be "heroic" in ;; Fix the .desktop file binary location.
;; order for this desktop file to be useful to launch heroic in (substitute* '("share/applications/heroic.desktop")
;; the container (heroic package) as well. (("/opt/Heroic/")
(add-after 'patch-dot-desktop-files 'fix-desktop-file (string-append #$output "/bin/")))))
(lambda _
(substitute*
(string-append #$output "/share/applications/heroic.desktop")
(("Exec=.*/heroic") "Exec=heroic"))))
(delete 'patch-dot-desktop-files)
(add-after 'install 'symlink-binary-file (add-after 'install 'symlink-binary-file
(lambda _ (lambda _
(mkdir-p (string-append #$output "/bin")) (mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Heroic/heroic") (symlink (string-append #$output "/lib/Heroic/heroic")
(string-append #$output "/bin/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") (home-page "https://heroicgameslauncher.com")
(synopsis "Native GOG, Amazon and Epic Games Launcher") (synopsis "A Native GOG, Amazon and Epic Games Launcher")
(description "Heroic is an Open Source Game Launcher. Right now it supports launching (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 games from the Epic Games Store using Legendary, GOG Games using our custom
implementation with gogdl and Amazon Games using Nile.") implementation with gogdl and Amazon Games using Nile.")
@ -131,6 +141,7 @@ implementation with gogdl and Amazon Games using Nile.")
(substitute* "Makefile" (substitute* "Makefile"
(("-fns ") (("-fns ")
"-fns $(DESTDIR)")))) "-fns $(DESTDIR)"))))
(delete 'patch-dot-desktop-files)
(add-after 'unpack 'patch-startscript (add-after 'unpack 'patch-startscript
(lambda _ (lambda _
(substitute* "bin_steam.sh" (substitute* "bin_steam.sh"
@ -146,9 +157,8 @@ implementation with gogdl and Amazon Games using Nile.")
(substitute* (string-append path "steam-asound32.desktop") (substitute* (string-append path "steam-asound32.desktop")
(("Exec=steam %U") "Exec=steam %U -- --asound32") (("Exec=steam %U") "Exec=steam %U -- --asound32")
(("Name=Steam") "Name=Steam (32-bit ALSA)"))))) (("Name=Steam") "Name=Steam (32-bit ALSA)")))))
(delete 'patch-dot-desktop-files)
;; Steamdeps installs missing packages, which doesn't work with Guix. ;; Steamdeps installs missing packages, which doesn't work with Guix.
(add-after 'install 'post-install (add-after 'install-binaries 'post-install
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref %outputs "out"))) (let ((out (assoc-ref %outputs "out")))
(delete-file (string-append out "/lib/steam/bin_steamdeps.py")) (delete-file (string-append out "/lib/steam/bin_steamdeps.py"))
@ -169,18 +179,10 @@ implementation with gogdl and Amazon Games using Nile.")
("fontconfig" ,fontconfig) ; Required for steam client. ("fontconfig" ,fontconfig) ; Required for steam client.
("file" ,file) ; Used for steam installation. ("file" ,file) ; Used for steam installation.
("find" ,findutils) ; Required at least for some logging. ("find" ,findutils) ; Required at least for some logging.
("font-google-noto" ,font-google-noto) ; Not required but to match following fonts.
;; These next three fonts are to cover emoji and Chinese/Japanese/Korean
;; and related scripts.
("font-google-noto-emoji" ,font-google-noto-emoji)
("font-google-noto-sans-cjk" ,font-google-noto-sans-cjk)
("font-google-noto-serif-cjk" ,font-google-noto-serif-cjk)
("freetype" ,freetype) ; Required for steam login. ("freetype" ,freetype) ; Required for steam login.
("gawk" ,gawk) ("gawk" ,gawk)
("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon. ("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon.
;; Required for steam startup; use newer version for better compatibility ("gcc:lib" ,gcc "lib") ; Required for steam startup.
;; with some games like Dwarf Fortress.
("gcc:lib" ,gcc-14 "lib")
("grep" ,grep) ("grep" ,grep)
("libbsd" ,libbsd) ("libbsd" ,libbsd)
("libcap" ,libcap) ; Required for SteamVR, but needs pkexec too. ("libcap" ,libcap) ; Required for SteamVR, but needs pkexec too.
@ -216,15 +218,6 @@ implementation with gogdl and Amazon Games using Nile.")
("python" ,python) ; Required for KillingFloor2 and Wreckfest. ("python" ,python) ; Required for KillingFloor2 and Wreckfest.
("spdlog" ,spdlog))) ; Required for MangoHud. ("spdlog" ,spdlog))) ; Required for MangoHud.
(define steam-container-libs
(append steam-client-libs
steam-gameruntime-libs
fhs-min-libs))
(define steam-nvidia-container-libs
(modify-inputs steam-container-libs
(replace "mesa" nvda)))
(define heroic-extra-client-libs (define heroic-extra-client-libs
`(("curl" ,curl) ; Required for Heroic to download e.g. Wine. `(("curl" ,curl) ; Required for Heroic to download e.g. Wine.
("which" ,which) ; Heroic complains about trying to use which (though works). ("which" ,which) ; Heroic complains about trying to use which (though works).
@ -232,26 +225,19 @@ implementation with gogdl and Amazon Games using Nile.")
(define steam-ld.so.conf (define steam-ld.so.conf
(packages->ld.so.conf (packages->ld.so.conf
(list (fhs-union steam-container-libs (list (fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-64") #:name "fhs-union-64")
(fhs-union steam-container-libs (fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-32" #:name "fhs-union-32"
#:system "i686-linux")))) #:system "i686-linux"))))
(define steam-ld.so.cache (define steam-ld.so.cache
(ld.so.conf->ld.so.cache steam-ld.so.conf)) (ld.so.conf->ld.so.cache steam-ld.so.conf))
(define steam-nvidia-ld.so.conf
(packages->ld.so.conf
(list (fhs-union steam-nvidia-container-libs
#:name "fhs-union-64")
(fhs-union steam-nvidia-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))))
(define steam-nvidia-ld.so.cache
(ld.so.conf->ld.so.cache steam-nvidia-ld.so.conf))
(define-public steam-container (define-public steam-container
(nonguix-container (nonguix-container
(name "steam") (name "steam")
@ -260,10 +246,14 @@ implementation with gogdl and Amazon Games using Nile.")
(ld.so.conf steam-ld.so.conf) (ld.so.conf steam-ld.so.conf)
(ld.so.cache steam-ld.so.cache) (ld.so.cache steam-ld.so.cache)
(union64 (union64
(fhs-union steam-container-libs (fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-64")) #:name "fhs-union-64"))
(union32 (union32
(fhs-union steam-container-libs (fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-32" #:name "fhs-union-32"
#:system "i686-linux")) #:system "i686-linux"))
(link-files '("share")) (link-files '("share"))
@ -278,16 +268,8 @@ all games will be installed.")))
(name "steam-nvidia") (name "steam-nvidia")
;; Steam's .desktop files expect a "steam" executable, so provide that. ;; Steam's .desktop files expect a "steam" executable, so provide that.
(binary-name "steam") (binary-name "steam")
(ld.so.conf steam-nvidia-ld.so.conf) (union64 (replace-mesa (ngc-union64 steam-container)))
(ld.so.cache steam-nvidia-ld.so.cache) (union32 (replace-mesa (ngc-union32 steam-container)))))
(union64
(fhs-union steam-nvidia-container-libs
#:name "fhs-union-64"))
(union32
(fhs-union steam-nvidia-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))
(preserved-env %nvidia-environment-variable-regexps)))
(define-public steam (nonguix-container->package steam-container)) (define-public steam (nonguix-container->package steam-container))
(define-public steam-nvidia (nonguix-container->package steam-nvidia-container)) (define-public steam-nvidia (nonguix-container->package steam-nvidia-container))
@ -307,11 +289,15 @@ all games will be installed.")))
;; this is easier and works. ;; this is easier and works.
(union64 (union64
(fhs-union `(,@heroic-extra-client-libs (fhs-union `(,@heroic-extra-client-libs
,@steam-container-libs) ,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-64")) #:name "fhs-union-64"))
;; Don't include heroic-client-libs as they are not needed in 32-bit. ;; Don't include heroic-client-libs as they are not needed in 32-bit.
(union32 (union32
(fhs-union steam-container-libs (fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-32" #:name "fhs-union-32"
#:system "i686-linux")) #:system "i686-linux"))
(link-files '("share")) (link-files '("share"))
@ -326,17 +312,8 @@ installed.")))
(nonguix-container (nonguix-container
(inherit heroic-container) (inherit heroic-container)
(name "heroic-nvidia") (name "heroic-nvidia")
(ld.so.conf steam-nvidia-ld.so.conf) (union64 (replace-mesa (ngc-union64 heroic-container)))
(ld.so.cache steam-nvidia-ld.so.cache) (union32 (replace-mesa (ngc-union32 heroic-container)))))
(union64
(fhs-union `(,@heroic-extra-client-libs
,@steam-nvidia-container-libs)
#:name "fhs-union-64"))
(union32
(fhs-union steam-nvidia-container-libs
#:name "fhs-union-32"
#:system "i686-linux"))
(preserved-env %nvidia-environment-variable-regexps)))
(define-public heroic (nonguix-container->package heroic-container)) (define-public heroic (nonguix-container->package heroic-container))
(define-public heroic-nvidia (nonguix-container->package heroic-nvidia-container)) (define-public heroic-nvidia (nonguix-container->package heroic-nvidia-container))

View File

@ -1,20 +1,16 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name> ;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
;;; Copyright © 2024 Timotej Lazar <timotej.lazar@araneo.si>
(define-module (nongnu packages game-development) (define-module (nongnu packages game-development)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module ((nonguix licenses) :prefix license:) #:use-module ((nonguix licenses) :prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (nonguix build-system binary) #:use-module (nonguix build-system binary)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module ((guix licenses) :prefix license:)
#:use-module (gnu packages audio) #:use-module (gnu packages audio)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
@ -163,95 +159,128 @@ development should opt for GLSL rather than Cg.")
"https://raw.githubusercontent.com/ValveSoftware/source-sdk-2013/master/LICENSE")))) "https://raw.githubusercontent.com/ValveSoftware/source-sdk-2013/master/LICENSE"))))
(define-public eduke32 (define-public eduke32
;; There are no official releases.
(let ((commit "188e14622cfe5c6f63b04b989b350bf2a29a893c")
(revision "1")
(duke-nukem-3d-directory "share/dukenukem3d"))
(package (package
(name "eduke32") (name "eduke32")
(version "20240316-10564-0bc78c53d") (version (git-version "0" revision commit))
(source (source
(origin (origin
(method url-fetch) (method git-fetch)
(uri (string-append "https://dukeworld.com/eduke32/synthesis/" (uri (git-reference
version "/eduke32_src_" version ".tar.xz")) (url "https://voidpoint.io/terminx/eduke32.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256 (sha256
(base32 "1a9fw1kfriyrybjxl72b2434w3yiz2nxg6541lnyhzbdka2cp2lf")) (base32 "0wy4bppiw4q2hn0v38msrjyvj2hzfvigakc23c2wqfnbl7rm0hrz"))
;; Unbundle libxmp.
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
;; Remove bundled libxmp and platform-specific stuff. '(begin (delete-file-recursively "source/libxmp-lite") #t))))
#~(for-each delete-file-recursively '("platform" "source/libxmp-lite")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
(list #:license-file-regexp "buildlic.txt" `(#:tests? #f
#:tests? #f ;; Add glu to rpath so that SDL can dlopen it.
#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %build-inputs "glu") "/lib"))
#:phases #:phases
#~(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'link-license
(lambda _
;; Ensure the install-license-files phase can find it.
(link "package/common/buildlic.txt" "buildlic.txt")))
(add-after 'unpack 'unbundle-libxmp (add-after 'unpack 'unbundle-libxmp
(lambda _ (lambda _
(substitute* "Common.mak" (substitute* "GNUmakefile"
(("^LIBS :=" match) (string-append match " -lxmp"))) (("-I\\$\\(libxmplite_inc\\)")
(string-append "-I" (assoc-ref %build-inputs "libxmp") "/include"))
(("^ *audiolib_deps \\+= libxmplite.*$") "")
(("-logg") "-logg -lxmp"))
(with-directory-excursion "source/audiolib/src" (with-directory-excursion "source/audiolib/src"
(for-each (lambda (file) (substitute* file (("libxmp-lite/") ""))) (for-each (lambda (file) (substitute* file (("libxmp-lite/") "")))
'("multivoc.cpp" "xmp.cpp"))))) '("multivoc.cpp" "xmp.cpp")))
(add-after 'unpack 'fix-share-path #t))
(lambda _
(substitute* "source/duke3d/src/common.cpp"
(("/usr/local/share/games") (string-append #$output "/share")))))
(delete 'configure) (delete 'configure)
(replace 'install (replace 'install
(lambda _ (lambda* (#:key inputs outputs #:allow-other-keys)
(let ((bin (string-append #$output "/bin"))) (let* ((out (assoc-ref outputs "out"))
(install-file "eduke32" bin) (glu (assoc-ref inputs "glu"))
(install-file "mapster32" bin) (eduke (string-append out "/bin/eduke32"))
(install-file "package/sdk/m32help.hlp" (eduke-real (string-append out "/bin/.eduke32-real")))
(string-append #$output "/share/eduke32")))))))) ;; TODO: Install custom .desktop file? Need icon.
(inputs (list alsa-lib ;; See https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=eduke32.
flac (install-file "eduke32" (string-append out "/bin"))
glu (install-file "mapster32" (string-append out "/bin"))
gtk+-2 (install-file "package/common/buildlic.txt"
libvorbis (string-append out "/share/licenses"))
libvpx ;; Wrap program:
libxmp ;; - Make sure current directory is writable, else eduke32 will segfault.
sdl2 ;; - Add ../share/dukenukem3d to the dir search list.
sdl2-mixer)) ;; TODO: Skip store duke3d.grp When ~/.config/eduke32/duke3d.grp is found.
(rename-file eduke eduke-real)
(call-with-output-file eduke
(lambda (p)
(format p "\
#!~a
mkdir -p ~~/.config/eduke32
cd ~~/.config/eduke32
exec -a \"$0\" ~a\
-g \"${0%/*}\"/../~a/*.grp\
-g \"${0%/*}\"/../~a/*.zip\
-g \"${0%/*}\"/../~a/*.map\
-g \"${0%/*}\"/../~a/*.con\
-g \"${0%/*}\"/../~a/*.def\
\"$@\"~%"
(which "bash") eduke-real
,duke-nukem-3d-directory
,duke-nukem-3d-directory
,duke-nukem-3d-directory
,duke-nukem-3d-directory
,duke-nukem-3d-directory)))
(chmod eduke #o755)))))))
(native-inputs (native-inputs
(list gdk-pixbuf pkg-config)) `(("pkg-config" ,pkg-config)))
(inputs
`(("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer)))
("alsa-lib" ,alsa-lib)
("glu" ,glu)
("libvorbis" ,libvorbis)
("libvpx" ,libvpx)
("libxmp" ,libxmp)
("flac" ,flac)
("gtk+" ,gtk+-2)))
(synopsis "Engine of the classic PC first person shooter Duke Nukem 3D") (synopsis "Engine of the classic PC first person shooter Duke Nukem 3D")
(description "EDuke32 is a free homebrew game engine and source port of (description "EDuke32 is a free homebrew game engine and source port of the
the classic PC first person shooter Duke Nukem 3DDuke3D for short. A classic PC first person shooter Duke Nukem 3DDuke3D for short. A thousands
thousands of features and upgrades were added for regular players and of features and upgrades were added for regular players and additional editing
additional editing capabilities and scripting extensions for homebrew capabilities and scripting extensions for homebrew developers and mod
developers and mod creators. EDuke32 is open source but non-free software. creators. EDuke32 is open source but non-free software.
This package does not contain any game file. You can either install packages This package does not contain any game file. You can either install packages
with game files or or put @file{.grp} game files manually in with game files or or put @file{.grp} game files manually in
@file{~/.config/eduke32/}.") @file{~/.config/eduke32/}.")
(home-page "https://eduke32.com") (home-page "https://eduke32.com/")
(license (license (license:nonfree
(list license:gpl2 "https://eduke32.com/buildlic.txt")))))
(license:nonfree "file://package/common/buildlic.txt")))))
(define-public fury (define-public fury
(package/inherit eduke32 (package
(inherit eduke32)
(name "fury") (name "fury")
(arguments (arguments
(substitute-keyword-arguments (package-arguments eduke32) (substitute-keyword-arguments (package-arguments eduke32)
((#:make-flags flags #~'()) ((#:make-flags flags ''()) `(cons* "FURY=1" ,flags))
#~(cons* "FURY=1" #$flags)) ((#:phases phases '%standard-phases)
((#:phases phases #~%standard-phases) `(modify-phases ,phases
#~(modify-phases #$phases
(add-after 'unpack 'disable-sdl-static
(lambda _
(substitute* "GNUmakefile"
(("SDL_STATIC := 1") ""))))
(replace 'install (replace 'install
(lambda _ (lambda _
(install-file "fury" (string-append #$output "/bin")))))))) (let* ((out (assoc-ref %outputs "out")))
(inputs (install-file "fury" (string-append out "/bin"))
(alist-delete "libvpx" (package-inputs eduke32))) (install-file "mapster32" (string-append out "/bin"))
(install-file "package/common/buildlic.txt"
(string-append out "/share/licenses")))
#t))))))
(synopsis "Game engine for the first-person shooter Ion Fury") (synopsis "Game engine for the first-person shooter Ion Fury")
(description (description
(string-append
"This is the @code{eduke32} engine built with support for the Ion Fury "This is the @code{eduke32} engine built with support for the Ion Fury
game. Game data is not provided. Run @command{fury} with the option game. Game data is not provided. Run @command{fury} with the option
@option{-j} to specify the directory containing @file{fury.grp}."))) @option{-j} to specify the directory containing @file{fury.grp}."))))

View File

@ -22,7 +22,7 @@
(define-public lgogdownloader (define-public lgogdownloader
(package (package
(name "lgogdownloader") (name "lgogdownloader")
(version "3.15") (version "3.12")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -31,7 +31,7 @@
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0bjjn2wam4f2lzmk0hkdxxc7k0wk3f0lyszl0birsr9h3jjpjqw7")))) (base32 "0kmz5zsbci7iilbqdvql9c1vk2b1q2flsdr6psnkln07xp664di2"))))
(build-system qt-build-system) (build-system qt-build-system)
(arguments (arguments
`(#:configure-flags '("-DUSE_QT_GUI=ON") `(#:configure-flags '("-DUSE_QT_GUI=ON")
@ -39,11 +39,15 @@
(inputs (inputs
(list boost (list boost
curl curl
htmlcxx
jsoncpp jsoncpp
qtwebengine liboauth
qtbase-5
qtdeclarative-5
qtwebchannel-5
qtwebengine-5
rhash rhash
tinyxml2 tinyxml2
tidy-html
zlib)) zlib))
(native-inputs (native-inputs
(list help2man (list help2man

View File

@ -1,47 +0,0 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2024 Romain Garbage <romain.garbage@inria.fr>
(define-module (nongnu packages hugo)
#:use-module (nonguix build-system binary)
#:use-module (guix download)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils))
(define-public hugo
(package
(name "hugo")
(version "0.140.2")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/gohugoio/hugo/releases/download/v" version
"/" name "_" version "_linux-" (cond ((target-aarch64?)
"arm64")
((target-arm32?)
"arm")
((target-x86-64?)
"amd64")) ".tar.gz"))
(sha256
(base32 (cond ((target-aarch64?)
"1dv2k9j3i3294bl94jhwi645pf5r2143hizxd3xpc3fz8w8cfyy8")
((target-arm32?)
"0f3mirqn3x2lrj7gzjyqklj081y7jfyxww2zkccg9f6jq0vcfcxd")
((target-x86-64?)
"0hs4b3nrr1qajrh7f64ibwjrfipqllvifp526kf2gfxnhpkr67l8"))))))
(build-system binary-build-system)
(arguments
(list
#:install-plan ''(("hugo" "/bin/hugo"))))
(supported-systems (list "aarch64-linux"
"armhf-linux"
"x86_64-linux"))
(home-page "https://gohugo.io/")
(synopsis "Static site generator written in Go")
(description
"Hugo is a static site generator written in Go, optimized for speed and
designed for flexibility. With its advanced templating system and fast asset
pipelines, Hugo renders a complete site in seconds, often less.")
(license license:asl2.0)))

View File

@ -11,7 +11,7 @@
(define-public k9s (define-public k9s
(package (package
(name "k9s") (name "k9s")
(version "0.32.5") (version "0.27.4")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -19,7 +19,7 @@
version "/k9s_Linux_amd64.tar.gz")) version "/k9s_Linux_amd64.tar.gz"))
(sha256 (sha256
(base32 (base32
"18yf4vr4pgdl5ssijmpf45amdasjrd3mbgnsp1cjnadszvsiphrk")))) "14j37kl8pbmbid4np48cfv5k8vic6ngnc4pjh01qr6szplg861z5"))))
(build-system copy-build-system) (build-system copy-build-system)
(arguments (arguments
(list (list
@ -29,8 +29,8 @@
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
(lambda* (#:key source #:allow-other-keys) (lambda _
(invoke "tar" "-xvf" source)))))) (invoke "tar" "-xvf" #$source))))))
(home-page "https://k9scli.io") (home-page "https://k9scli.io")
(supported-systems '("x86_64-linux")) (supported-systems '("x86_64-linux"))
(synopsis "Kubernetes CLI To Manage Your Clusters In Style") (synopsis "Kubernetes CLI To Manage Your Clusters In Style")
@ -62,8 +62,8 @@ offers subsequent commands to interact with your observed resources.")
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
(lambda* (#:key source #:allow-other-keys) (lambda _
(copy-file source "./katenary") (copy-file #$source "./katenary")
(chmod "katenary" #o644))) (chmod "katenary" #o644)))
(add-before 'install 'chmod (add-before 'install 'chmod
(lambda _ (lambda _
@ -79,14 +79,14 @@ Helm Chart for Kubernetes.")
(define-public kubectl (define-public kubectl
(package (package
(name "kubectl") (name "kubectl")
(version "1.31.0") (version "1.28.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://dl.k8s.io/release/v" version "/bin/linux/amd64/kubectl")) "https://dl.k8s.io/release/v" version "/bin/linux/amd64/kubectl"))
(sha256 (sha256
(base32 (base32
"0dr40ckdj65ka6ndp8knyprh1k0nx6vg8yyg7p6c1lc49b3as9vw")))) "1qbl4a2xv795apvbwahdb9kzcm2wys0am1c72as3iavgs3wxd9z7"))))
(build-system copy-build-system) (build-system copy-build-system)
(arguments (arguments
(list (list
@ -96,8 +96,8 @@ Helm Chart for Kubernetes.")
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
(lambda* (#:key source #:allow-other-keys) (lambda _
(copy-file source "./kubectl") (copy-file #$source "./kubectl")
(chmod "kubectl" #o644))) (chmod "kubectl" #o644)))
(add-before 'install 'chmod (add-before 'install 'chmod
(lambda _ (lambda _
@ -114,7 +114,7 @@ view logs.")
(define-public kompose (define-public kompose
(package (package
(name "kompose") (name "kompose")
(version "1.34.0") (version "1.30.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -122,7 +122,7 @@ view logs.")
version "/kompose-linux-amd64")) version "/kompose-linux-amd64"))
(sha256 (sha256
(base32 (base32
"0wg1ks3flb5rbpazich7v052s3zm8fwja044r67sky3bxxihx3f5")))) "0sy3ci7s2dkjigasyv01nm1vg30wwhmdc0cmglzb23ws8bfrfjlh"))))
(build-system copy-build-system) (build-system copy-build-system)
(arguments (arguments
(list (list
@ -132,8 +132,8 @@ view logs.")
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
(lambda* (#:key source #:allow-other-keys) (lambda _
(copy-file source "./kompose"))) (copy-file #$source "./kompose")))
(add-before 'install 'chmod (add-before 'install 'chmod
(lambda _ (lambda _
(chmod "kompose" #o555)))))) (chmod "kompose" #o555))))))
@ -148,14 +148,14 @@ such as Kubernetes (or OpenShift).")
(define-public helm-kubernetes (define-public helm-kubernetes
(package (package
(name "helm-kubernetes") (name "helm-kubernetes")
(version "3.15.4") (version "3.12.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://get.helm.sh/helm-v" version "-linux-amd64.tar.gz")) "https://get.helm.sh/helm-v" version "-linux-amd64.tar.gz"))
(sha256 (sha256
(base32 (base32
"1afgf08z6hgy07kjk8fj7xkr8ma4qk2f1r33901nzz87zkn0yh0i")))) "1d99c506shnz5cr9xhkrla5r82nan7v3hz631jqflicd376i68qv"))))
(build-system copy-build-system) (build-system copy-build-system)
(arguments (arguments
(list (list
@ -165,8 +165,8 @@ such as Kubernetes (or OpenShift).")
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
(lambda* (#:key source #:allow-other-keys) (lambda _
(invoke "tar" "-xvf" source))) (invoke "tar" "-xvf" #$source)))
(add-before 'install 'chmod (add-before 'install 'chmod
(lambda _ (lambda _
(chmod "linux-amd64/helm" #o555)))))) (chmod "linux-amd64/helm" #o555))))))
@ -181,13 +181,13 @@ define, install, and upgrade Kubernetes applications.")
(define-public kind (define-public kind
(package (package
(name "kind") (name "kind")
(version "0.24.0") (version "0.20.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://kind.sigs.k8s.io/dl/v" version "/kind-linux-amd64")) (uri (string-append "https://kind.sigs.k8s.io/dl/v" version "/kind-linux-amd64"))
(sha256 (sha256
(base32 (base32
"03b0idcb11knqyx2ryakvlkqk1cdyavkar6izjihsqlxlfjsv6mq")))) "1v9x953a5n0l3kz78wm29yh11vz56nmlvhi7xzcjscyksq9p4fji"))))
(build-system copy-build-system) (build-system copy-build-system)
(arguments (arguments
(list (list
@ -197,8 +197,8 @@ define, install, and upgrade Kubernetes applications.")
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
(lambda* (#:key source #:allow-other-keys) (lambda _
(copy-file source "./kind") (copy-file #$source "./kind")
(chmod "kind" #o644))) (chmod "kind" #o644)))
(add-before 'install 'chmod (add-before 'install 'chmod
(lambda _ (lambda _

View File

@ -4,7 +4,7 @@
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
;;; Copyright © 2020, 2021 James Smith <jsubuntuxp@disroot.org> ;;; Copyright © 2020, 2021 James Smith <jsubuntuxp@disroot.org>
;;; Copyright © 2020-2025 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, 2022 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020, 2021, 2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020, 2021, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020, 2021, 2022 Zhu Zihao <all_but_last@163.com> ;;; Copyright © 2020, 2021, 2022 Zhu Zihao <all_but_last@163.com>
@ -13,7 +13,7 @@
;;; Copyright © 2021 Risto Stevcev <me@risto.codes> ;;; Copyright © 2021 Risto Stevcev <me@risto.codes>
;;; Copyright © 2021 aerique <aerique@xs4all.nl> ;;; Copyright © 2021 aerique <aerique@xs4all.nl>
;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz> ;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz>
;;; Copyright © 2022, 2023, 2024, 2025 John Kehayias <john.kehayias@protonmail.com> ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net> ;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net>
;;; Copyright © 2022 Simen Endsjø <simendsjo@gmail.com> ;;; Copyright © 2022 Simen Endsjø <simendsjo@gmail.com>
@ -26,17 +26,13 @@
;;; Copyright © 2023 Ada Stevenson <adanskana@gmail.com> ;;; Copyright © 2023 Ada Stevenson <adanskana@gmail.com>
;;; Copyright © 2023 Tomas Volf <~@wolfsden.cz> ;;; Copyright © 2023 Tomas Volf <~@wolfsden.cz>
;;; Copyright © 2023 PRESFIL <presfil@protonmail.com> ;;; Copyright © 2023 PRESFIL <presfil@protonmail.com>
;;; Copyright © 2024, 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
(define-module (nongnu packages linux) (define-module (nongnu packages linux)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (nongnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages cpio) #:use-module (gnu packages cpio)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages parallel)
#:use-module (guix licenses) #:use-module (guix licenses)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix utils) #:use-module (guix utils)
@ -136,11 +132,8 @@ some freedo package or an output of package-version procedure."
"The unmodified Linux kernel, including nonfree blobs, for running Guix System "The unmodified Linux kernel, including nonfree blobs, for running Guix System
on hardware which requires nonfree software to function.")))) on hardware which requires nonfree software to function."))))
(define-public linux-6.13 (define-public linux-6.7
(corrupt-linux linux-libre-6.13)) (corrupt-linux linux-libre-6.7))
(define-public linux-6.12
(corrupt-linux linux-libre-6.12))
(define-public linux-6.6 (define-public linux-6.6
(corrupt-linux linux-libre-6.6)) (corrupt-linux linux-libre-6.6))
@ -157,9 +150,12 @@ on hardware which requires nonfree software to function."))))
(define-public linux-5.4 (define-public linux-5.4
(corrupt-linux linux-libre-5.4)) (corrupt-linux linux-libre-5.4))
(define-public linux linux-6.12) (define-public linux-4.19
(corrupt-linux linux-libre-4.19))
(define-public linux linux-6.6)
;; linux-lts points to the *newest* released long-term support version. ;; linux-lts points to the *newest* released long-term support version.
(define-public linux-lts linux-6.12) (define-public linux-lts linux-6.1)
(define-public linux-arm64-generic-5.10 (define-public linux-arm64-generic-5.10
(corrupt-linux linux-libre-arm64-generic-5.10 #:name "linux-arm64-generic")) (corrupt-linux linux-libre-arm64-generic-5.10 #:name "linux-arm64-generic"))
@ -219,7 +215,7 @@ on hardware which requires nonfree software to function."))))
(xanmod-defconfig "config_x86-64-v1")) (xanmod-defconfig "config_x86-64-v1"))
(define %default-extra-linux-options (define %default-extra-linux-options
((@@ (gnu packages linux) default-extra-linux-options) version)) (@@ (gnu packages linux) %default-extra-linux-options))
(define config->string (define config->string
(@@ (gnu packages linux) config->string)) (@@ (gnu packages linux) config->string))
@ -258,7 +254,9 @@ on hardware which requires nonfree software to function."))))
(append %default-extra-linux-options (append %default-extra-linux-options
;; NOTE: These are configs expected by Guix ;; NOTE: These are configs expected by Guix
;; but missing from XanMod defconfig. ;; but missing from XanMod defconfig.
'(("CONFIG_BLK_DEV_NVME" . #t)))))) '(("CONFIG_BLK_DEV_NVME" . #t)
("CONFIG_CRYPTO_XTS" . m)
("CONFIG_VIRTIO_CONSOLE" . m))))))
(display extra-configuration port) (display extra-configuration port)
(close-port port)) (close-port port))
(invoke "make" "oldconfig") (invoke "make" "oldconfig")
@ -279,17 +277,17 @@ distribution with custom settings and new features. It's built to provide a
stable, responsive and smooth desktop experience."))) stable, responsive and smooth desktop experience.")))
;; Linux-XanMod sources ;; Linux-XanMod sources
(define-public linux-xanmod-version "6.12.13") (define-public linux-xanmod-version "6.7.6")
(define-public linux-xanmod-revision "xanmod1") (define-public linux-xanmod-revision "xanmod1")
(define-public linux-xanmod-source (define-public linux-xanmod-source
(make-linux-xanmod-source (make-linux-xanmod-source
linux-xanmod-version linux-xanmod-version
linux-xanmod-revision linux-xanmod-revision
#:xanmod-branch "main" #:xanmod-branch "main"
#:kernel-hash (base32 "1sr58vsh39hdwk0z27lg14isqwn4g8m4r7a8z2rsyhkfwlmmd8mi") #:kernel-hash (base32 "0s8hbcsg7fdvspqam8kzcxygjsznr4zfi60nqgc81l3n4m518cgg")
#:xanmod-hash (base32 "18a7hbm7gvf6b7wr84rszmpl1yb3mdgj2plv5627mv09dn87lvz2"))) #:xanmod-hash (base32 "0hv76dj9z17w6zcy25v1ndlmdw593wlbmnw5x903vidb3c6a1dfi")))
(define-public linux-xanmod-lts-version "6.6.72") (define-public linux-xanmod-lts-version "6.6.18")
(define-public linux-xanmod-lts-revision "xanmod1") (define-public linux-xanmod-lts-revision "xanmod1")
(define-public linux-xanmod-lts-source (define-public linux-xanmod-lts-source
(make-linux-xanmod-source (make-linux-xanmod-source
@ -297,7 +295,7 @@ stable, responsive and smooth desktop experience.")))
linux-xanmod-lts-revision linux-xanmod-lts-revision
#:xanmod-branch "lts" #:xanmod-branch "lts"
#:kernel-hash (base32 "1l2nisx9lf2vdgkq910n5ldbi8z25ky1zvl67zgwg2nxcdna09nr") #:kernel-hash (base32 "1l2nisx9lf2vdgkq910n5ldbi8z25ky1zvl67zgwg2nxcdna09nr")
#:xanmod-hash (base32 "119jvwmxpjfpifg7mhqirjc1g1q769584hv2xc8wyg2iklhhs653"))) #:xanmod-hash (base32 "1q33bd4a65l46333l2m7vjn46b0xhdbz508bq7q0bphbmy0bf35m")))
;; Linux-XanMod packages ;; Linux-XanMod packages
(define-public linux-xanmod (define-public linux-xanmod
@ -318,44 +316,24 @@ stable, responsive and smooth desktop experience.")))
(define-public linux-firmware (define-public linux-firmware
(package (package
(name "linux-firmware") (name "linux-firmware")
(version "20250211") (version "20240115")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://kernel.org/linux/kernel/firmware/" (uri (string-append "mirror://kernel.org/linux/kernel/firmware/"
"linux-firmware-" version ".tar.xz")) "linux-firmware-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0z998nxplnc22nbj3yzdyjjs433p92rzvq2x5i9rv0xzjxc39q9d")))) "13b75kd075famc58pvx4r9268pxn69nyihx7p3i6i7mvkgqayz5b"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
(list #:tests? #f `(#:tests? #f
#:strip-binaries? #f #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
#:validate-runpath? #f
#:make-flags #~(list (string-append "DESTDIR=" #$output))
#:phases #:phases
#~(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'patch-out-check_whence.py
(lambda _
;; The 'check_whence.py' script requires git (and the
;; repository metadata).
(substitute* "copy-firmware.sh"
(("./check_whence.py")
"true"))))
(delete 'configure)
(replace 'install (replace 'install
;; Use Zstd compression to reduce space requirements. (lambda* (#:key (make-flags '()) #:allow-other-keys)
(lambda* (#:key (parallel-build? #t) (make-flags '()) (apply invoke "make" "install-nodedup" make-flags)))
#:allow-other-keys) (delete 'validate-runpath))))
(let ((num-jobs (if parallel-build?
(number->string (parallel-job-count))
"1")))
;; Use the best 'standard' compression level.
(setenv "ZSTD_CLEVEL" "19")
;; Compress using multiple threads.
(setenv "ZSTD_NBTHREADS" num-jobs)
(apply invoke "make" "install-zst" "-j" num-jobs
make-flags)))))))
(native-inputs (list parallel rdfind zstd))
(home-page (home-page
"https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git") "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git")
(synopsis "Nonfree firmware blobs for Linux") (synopsis "Nonfree firmware blobs for Linux")
@ -369,23 +347,23 @@ if your hardware is supported by one of the smaller firmware packages.")
(define (select-firmware keep) (define (select-firmware keep)
"Modify linux-firmware copy list to retain only files matching KEEP regex." "Modify linux-firmware copy list to retain only files matching KEEP regex."
#~(lambda _ `(lambda _
(use-modules (ice-9 regex)) (use-modules (ice-9 regex))
(substitute* "WHENCE" (substitute* "WHENCE"
(("^(File|RawFile|Link): *([^ ]*)(.*)" _ type file rest) (("^(File|Link): *([^ ]*)(.*)" _ type file rest)
(string-append (if (string-match #$keep file) type "Skip") ": " file rest))))) (string-append (if (string-match ,keep file) type "Skip") ": " file rest)))))
(define-public amdgpu-firmware (define-public amdgpu-firmware
(package (package
(inherit linux-firmware) (inherit linux-firmware)
(name "amdgpu-firmware") (name "amdgpu-firmware")
(arguments (arguments
(cons* #:license-file-regexp "LICENSE.amdgpu" `(#:license-file-regexp "LICENSE.amdgpu"
(substitute-keyword-arguments (package-arguments linux-firmware) ,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases) ((#:phases phases)
#~(modify-phases #$phases `(modify-phases ,phases
(add-after 'unpack 'select-firmware (add-after 'unpack 'select-firmware
#$(select-firmware "^amdgpu/"))))))) ,(select-firmware "^amdgpu/")))))))
(home-page "http://support.amd.com/en-us/download/linux") (home-page "http://support.amd.com/en-us/download/linux")
(synopsis "Nonfree firmware for AMD graphics chips") (synopsis "Nonfree firmware for AMD graphics chips")
(description "Nonfree firmware for AMD graphics chips. While most AMD (description "Nonfree firmware for AMD graphics chips. While most AMD
@ -403,12 +381,12 @@ advanced 3D.")
(inherit amdgpu-firmware) (inherit amdgpu-firmware)
(name "radeon-firmware") (name "radeon-firmware")
(arguments (arguments
(cons* #:license-file-regexp "LICENSE.radeon" `(#:license-file-regexp "LICENSE.radeon"
(substitute-keyword-arguments (package-arguments linux-firmware) ,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases) ((#:phases phases)
#~(modify-phases #$phases `(modify-phases ,phases
(add-after 'unpack 'select-firmware (add-after 'unpack 'select-firmware
#$(select-firmware "^radeon/"))))))) ,(select-firmware "^radeon/")))))))
(synopsis "Nonfree firmware for older AMD graphics chips") (synopsis "Nonfree firmware for older AMD graphics chips")
(description "Nonfree firmware for AMD graphics chips. While most AMD (description "Nonfree firmware for AMD graphics chips. While most AMD
graphics cards can be run with the free Mesa, some cards require a nonfree graphics cards can be run with the free Mesa, some cards require a nonfree
@ -460,12 +438,12 @@ and modules, userspace libraries, and bootloader/GPU firmware.")
(inherit linux-firmware) (inherit linux-firmware)
(name "atheros-firmware") (name "atheros-firmware")
(arguments (arguments
(cons* #:license-file-regexp "LICEN[CS]E.*[Aa]th" `(#:license-file-regexp "LICEN[CS]E.*[Aa]th"
(substitute-keyword-arguments (package-arguments linux-firmware) ,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases) ((#:phases phases)
#~(modify-phases #$phases `(modify-phases ,phases
(add-after 'unpack 'select-firmware (add-after 'unpack 'select-firmware
#$(select-firmware "^(ar[3579]|ath[1369]|htc_[79]|qca/|wil6)"))))))) ,(select-firmware "^(ar[3579]|ath[1369]|htc_[79]|qca/|wil6)")))))))
(synopsis "Nonfree firmware blobs for Atheros wireless cards") (synopsis "Nonfree firmware blobs for Atheros wireless cards")
(description "Nonfree firmware blobs for Atheros wireless cards. This (description "Nonfree firmware blobs for Atheros wireless cards. This
package contains nonfree firmware for the following chips: package contains nonfree firmware for the following chips:
@ -636,12 +614,12 @@ WLAN.TF.2.1-00021-QCARMSWP-1 (ath10k/QCA9377/hw1.0/firmware-6.bin)
(inherit linux-firmware) (inherit linux-firmware)
(name "ibt-hw-firmware") (name "ibt-hw-firmware")
(arguments (arguments
(cons* #:license-file-regexp "LICENCE.ibt_firmware" `(#:license-file-regexp "LICENCE.ibt_firmware"
(substitute-keyword-arguments (package-arguments linux-firmware) ,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases) ((#:phases phases)
#~(modify-phases #$phases `(modify-phases ,phases
(add-after 'unpack 'select-firmware (add-after 'unpack 'select-firmware
#$(select-firmware "^intel/ibt-"))))))) ,(select-firmware "^intel/ibt-")))))))
(home-page "http://www.intel.com/support/wireless/wlan/sb/CS-016675.htm") (home-page "http://www.intel.com/support/wireless/wlan/sb/CS-016675.htm")
(synopsis "Non-free firmware for Intel bluetooth chips") (synopsis "Non-free firmware for Intel bluetooth chips")
(description "This firmware is required by the btintel kernel module to (description "This firmware is required by the btintel kernel module to
@ -657,12 +635,12 @@ laptops).")
(inherit linux-firmware) (inherit linux-firmware)
(name "iwlwifi-firmware") (name "iwlwifi-firmware")
(arguments (arguments
(cons* #:license-file-regexp "LICENCE.iwlwifi_firmware" `(#:license-file-regexp "LICENCE.iwlwifi_firmware"
(substitute-keyword-arguments (package-arguments linux-firmware) ,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases) ((#:phases phases)
#~(modify-phases #$phases `(modify-phases ,phases
(add-after 'unpack 'select-firmware (add-after 'unpack 'select-firmware
#$(select-firmware "^iwlwifi-"))))))) ,(select-firmware "^iwlwifi-")))))))
(home-page "https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi") (home-page "https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi")
(synopsis "Nonfree firmware for Intel wifi chips") (synopsis "Nonfree firmware for Intel wifi chips")
(description "The proprietary iwlwifi kernel module is required by many (description "The proprietary iwlwifi kernel module is required by many
@ -678,12 +656,12 @@ support for 5GHz and 802.11ac, among others.")
(inherit linux-firmware) (inherit linux-firmware)
(name "i915-firmware") (name "i915-firmware")
(arguments (arguments
(cons* #:license-file-regexp "LICENCE.i915" `(#:license-file-regexp "LICENCE.i915"
(substitute-keyword-arguments (package-arguments linux-firmware) ,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases) ((#:phases phases)
#~(modify-phases #$phases `(modify-phases ,phases
(add-after 'unpack 'select-firmware (add-after 'unpack 'select-firmware
#$(select-firmware "^i915/"))))))) ,(select-firmware "^i915/")))))))
(home-page "https://01.org/linuxgraphics/gfx-docs/drm/gpu/i915.html") (home-page "https://01.org/linuxgraphics/gfx-docs/drm/gpu/i915.html")
(synopsis "Nonfree firmware for Intel integrated graphics") (synopsis "Nonfree firmware for Intel integrated graphics")
(description "This package contains the various firmware for Intel (description "This package contains the various firmware for Intel
@ -693,124 +671,18 @@ integrated graphics chipsets, including GuC, HuC and DMC.")
"https://git.kernel.org/pub/scm/linux/kernel/git/firmware" "https://git.kernel.org/pub/scm/linux/kernel/git/firmware"
"/linux-firmware.git/plain/LICENCE.i915"))))) "/linux-firmware.git/plain/LICENCE.i915")))))
(define-public mediatek-firmware
(package
(inherit linux-firmware)
(name "mediatek-firmware")
(arguments
(cons* #:license-file-regexp "LICENCE\\.(mediatek\
|ralink_a_mediatek_company_firmware)"
(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
(add-after 'unpack 'select-firmware
#$(select-firmware "^mediatek/")))))))
(synopsis
"Nonfree firmware for MediaTek chips")
(description
"Nonfree firmware for MediaTek Ethernet, WiFi, Bluetooth, Video Processing
Units (VPU), etc. chips. This package contains nonfree firmware for the
following drivers/chips:
@table @code
@item mt7601u
MediaTek MT7601U firmware (mediatek/mt7601u.bin)
@item btmtk_usb
MediaTek Bluetooth USB driver firmware (mediatek/mt7650.bin,
mediatek/mt7622pr2h.bin, mediatek/mt7668pr2h.bin)
@item mtk-vpu
MediaTek VPU video processing unit driver (mediatek/mt8173/vpu_d.bin
and mediatek/mt8173/vpu_p.bin)
@item mtk_scp
MediaTek SCP System Control Processing Driver (mediatek/mt8183/scp.img,
mediatek/mt8186/scp.img, mediatek/mt8192/scp.img and mediatek/mt8195/scp.img)
@item mt76x0
MediaTek MT76x0 Wireless MACs (mediatek/mt7610u.bin,
mediatek/mt7610e.bin and mediatek/mt7650e.bin)
@item mt76x2e
MediaTek MT76x2 Wireless MACs
(mediatek/mt7662.bin and mediatek/mt7662_rom_patch.bin)
@item mt76x2u
MediaTek MT76x2u Wireless MACs
(mediatek/mt7662u.bin and mediatek/mt7662u_rom_patch.bin)
@item mt7615e
MediaTek MT7615e Wireless MACs (mediatek/mt7615_n9.bin,
mediatek/mt7615_cr4.bin and mediatek/mt7615_rom_patch.bin)
@item mt7622
MediaTek MT7622 Wireless MACs (mediatek/mt7622_n9.bin and
mediatek/mt7622_rom_patch.bin)
@item mt7663
MediaTek MT7663 Wireless MACs (mediatek/mt7663pr2h.bin,
mediatek/mt7663_n9_v3.bin, mediatek/mt7663pr2h_rebb.bin and
mediatek/mt7663_n9_rebb.bin)
@item mt7915e
MediaTek Wireless MACs for MT7915/MT7916/MT7986/MT7981
(mediatek/mt7915_wm.bin, mediatek/mt7915_wa.bin, mediatek/mt7915_rom_patch.bin,
mediatek/mt7915_eeprom.bin, mediatek/mt7915_eeprom_dbdc.bin,
mediatek/mt7916_wm.bin, mediatek/mt7916_wa.bin, mediatek/mt7916_rom_patch.bin,
mediatek/mt7916_eeprom.bin, mediatek/mt7986_wm.bin,
mediatek/mt7986_wm_mt7975.bin, mediatek/mt7986_wa.bin,
mediatek/mt7986_rom_patch.bin, mediatek/mt7986_rom_patch_mt7975.bin,
mediatek/mt7986_wo_0.bin, mediatek/mt7986_wo_1.bin,
mediatek/mt7986_eeprom_mt7976.bin, mediatek/mt7986_eeprom_mt7976_dbdc.bin,
mediatek/mt7986_eeprom_mt7976_dual.bin, mediatek/mt7986_eeprom_mt7975_dual.bin,
mediatek/mt7981_wm.bin, mediatek/mt7981_wa.bin, mediatek/mt7981_rom_patch.bin,
and mediatek/mt7981_wo.bin)
@item mt7921
MediaTek MT7921 Wireless MACs
(mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin and
mediatek/WIFI_RAM_CODE_MT7961_1.bin)
@item mt7921
MediaTek MT7921 bluetooth chipset (BT_RAM_CODE_MT7961_1_2_hdr.bin)
@item mt7922
MediaTek MT7922 Wireless MACs
(mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin and
mediatek/WIFI_RAM_CODE_MT7922_1.bin)
@item mt7922
MediaTek MT7922 bluetooth chipset
(mediatek/BT_RAM_CODE_MT7922_1_1_hdr.bin)
@item mt7925
MediaTek MT7925 Wireless MACs
(mediatek/mt7925/WIFI_MT7925_PATCH_MCU_1_1_hdr.bin and
mediatek/mt7925/WIFI_RAM_CODE_MT7925_1_1.bin)
@item mt7925
MediaTek MT7925 bluetooth chipset
(mediatek/mt7925/BT_RAM_CODE_MT7925_1_1_hdr.bin)
@item mt7988
MediaTek MT7988 Internal 2.5G Ethernet Phy
(mediatek/mt7988/i2p5ge-phy-pmb.bin)
@item mt7996e
MediaTek Wireless MACs for MT7996 (mediatek/mt7996/mt7996_wm.bin,
mediatek/mt7996/mt7996_wa.bin, mediatek/mt7996/mt7996_rom_patch.bin,
mediatek/mt7996/mt7996_dsp.bin and mediatek/mt7996/mt7996_eeprom.bin)
@item mtk-sof
MediaTek Sound Open Firmware driver (mediatek/sof/sof-mt8186.ri,
mediatek/sof/sof-mt8186.ri, mediatek/sof/sof-mt8186.ldc,
mediatek/sof-tplg/sof-mt8186.tplg, mediatek/sof/sof-mt8195.ri,
mediatek/sof/sof-mt8195.ldc and
mediatek/sof-tplg/sof-mt8195-mt6359-rt1019-rt5682.tplg)
@end table")
(license
(list (nonfree
(string-append
"https://git.kernel.org/pub/scm/linux/kernel/git/firmware"
"/linux-firmware.git/plain/LICENCE.mediatek"))
(nonfree
(string-append
"https://git.kernel.org/pub/scm/linux/kernel/git/firmware"
"/linux-firmware.git/plain"
"/LICENCE.ralink_a_mediatek_company_firmware"))))))
(define-public realtek-firmware (define-public realtek-firmware
(package (package
(inherit linux-firmware) (inherit linux-firmware)
(name "realtek-firmware") (name "realtek-firmware")
(arguments (arguments
(cons* #:license-file-regexp "LICENCE.rtlwifi_firmware.txt" `(#:license-file-regexp "LICENCE.rtlwifi_firmware.txt"
(substitute-keyword-arguments (package-arguments linux-firmware) ,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases) ((#:phases phases)
#~(modify-phases #$phases `(modify-phases ,phases
(add-after 'unpack 'select-firmware (add-after 'unpack 'select-firmware
#$(select-firmware "^(rtlwifi|rtl_nic|rtl_bt|rtw88|rtw89)/"))))))) ,(select-firmware
"^(rtlwifi|rtl_nic|rtl_bt|rtw88|rtw89)/")))))))
(home-page "https://wireless.wiki.kernel.org/en/users/drivers/rtl819x") (home-page "https://wireless.wiki.kernel.org/en/users/drivers/rtl819x")
(synopsis "Nonfree firmware for Realtek ethernet, wifi, and bluetooth chips") (synopsis "Nonfree firmware for Realtek ethernet, wifi, and bluetooth chips")
(description (description
@ -900,8 +772,8 @@ package contains nonfree firmware for the following chips:
(deprecated-package "rtl-bt-firmware" realtek-firmware)) (deprecated-package "rtl-bt-firmware" realtek-firmware))
(define-public rtl8192eu-linux-module (define-public rtl8192eu-linux-module
(let ((commit "3af9a868a0ca622d830966ac83aea2bf17cd0d65") (let ((commit "a928f08c1dd4f9a1e84d85811a543e974551bc4f")
(revision "7")) (revision "6"))
(package (package
(name "rtl8192eu-linux-module") (name "rtl8192eu-linux-module")
(version (git-version "0.0.0" revision commit)) (version (git-version "0.0.0" revision commit))
@ -914,7 +786,7 @@ package contains nonfree firmware for the following chips:
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0d2qzf7xbipjdp1zm2ffqhnda8wasqriqnv6dkl0mhqn2f8za3i8")))) "1q26kyic4glmgy0hbaq46r067m6cqf7d41chgivyxn8y32rf1fgc"))))
(build-system linux-module-build-system) (build-system linux-module-build-system)
(arguments (arguments
`(#:make-flags `(#:make-flags
@ -937,8 +809,8 @@ network adapters.")
(license gpl2)))) (license gpl2))))
(define-public rtl8821ce-linux-module (define-public rtl8821ce-linux-module
(let ((commit "f119398d868b1a3395f40c1df2e08b57b2c882cd") (let ((commit "a478095a45d8aa957b45be4f9173c414efcacc6f")
(revision "12")) (revision "10"))
(package (package
(name "rtl8821ce-linux-module") (name "rtl8821ce-linux-module")
(version (git-version "0.0.0" revision commit)) (version (git-version "0.0.0" revision commit))
@ -951,7 +823,7 @@ network adapters.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"03336fzhcyfkxa32rx0calzlyzamvinql5f19wwm61aijrmlmyhi")))) "00cn87jjrcxjqr3n8jv4w3n64zksmzz05fdr1gdvnbx1ab5739f6"))))
(build-system linux-module-build-system) (build-system linux-module-build-system)
(arguments (arguments
(list #:make-flags (list #:make-flags
@ -980,8 +852,8 @@ network adapters.")
(license gpl2)))) (license gpl2))))
(define-public rtl8821cu-linux-module (define-public rtl8821cu-linux-module
(let ((commit "4f6004af4c4171882f37e2e5d8fb3609fe260617") (let ((commit "a41ef7cabd1aa36fa2b4eb63a71cf719bff11b72")
(revision "2")) (revision "1"))
(package (package
(name "rtl8821cu-linux-module") (name "rtl8821cu-linux-module")
(version (git-version "0.0.0" revision commit)) (version (git-version "0.0.0" revision commit))
@ -993,7 +865,7 @@ network adapters.")
(commit commit))) (commit commit)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "09ig0rrkkn00i3d1n6p62n1610kcjgb2h9kbcqdsrmpnlnw5kfl2")))) (base32 "0fnv4gm4adnf8gbjzc2lljh2a3i111159qira3w0qm1zhyqadaq0"))))
(build-system linux-module-build-system) (build-system linux-module-build-system)
(arguments (arguments
(list (list
@ -1034,8 +906,8 @@ to disable the conflicting rtw88 driver:
"https://github.com/morrownr/8821cu-20210916/blob/main/LICENSE"))))) "https://github.com/morrownr/8821cu-20210916/blob/main/LICENSE")))))
(define-public rtl8812au-aircrack-ng-linux-module (define-public rtl8812au-aircrack-ng-linux-module
(let ((commit "63cf0b4584aa8878b0fe8ab38017f31c319bde3d") (let ((commit "35308f4dd73e77fa572c48867cce737449dd8548")
(revision "13")) (revision "11"))
(package (package
(inherit rtl8821ce-linux-module) (inherit rtl8821ce-linux-module)
(name "rtl8812au-aircrack-ng-linux-module") (name "rtl8812au-aircrack-ng-linux-module")
@ -1048,7 +920,7 @@ to disable the conflicting rtw88 driver:
(commit commit))) (commit commit)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "103pn6qlj116dm244ygf1wic9dq2qn80lafiyxynyhpckkyhhfxl")) (base32 "1clqrgmq5fhzybbiapmdbhg5qfx9k21r0hqa9pqmyinaqhvfnhfj"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
#~(begin #~(begin
@ -1097,9 +969,9 @@ giving you trouble, you can try this module.")
(define (broadcom-sta-patch name commit hash) (define (broadcom-sta-patch name commit hash)
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/rpmfusion/wl-kmod/" (uri (string-append "https://raw.githubusercontent.com/NixOS/nixpkgs/"
commit commit
"wl-kmod-" "/pkgs/os-specific/linux/broadcom-sta/"
name name
".patch")) ".patch"))
(sha256 (sha256
@ -1114,12 +986,12 @@ giving you trouble, you can try this module.")
(string-replace-substring broadcom-sta-version "." "_") (string-replace-substring broadcom-sta-version "." "_")
".tar.gz")) ".tar.gz"))
(patches (patches
;; Keep these in sync with the patches at ;; Keep these in sync with the list at
;; https://github.com/rpmfusion/wl-kmod ;; https://github.com/NixOS/nixpkgs/tree/master/pkgs/os-specific/linux/broadcom-sta.
;; They seem to be good about keeping broadcom patches up to date so updating ;; 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 ;; for a new kernel release should be as simple as chaging the commit to
;; the newest available and adding any new patches. ;; the newest available and adding any new patches.
(let ((commit "cb67598cbf5d8c5260b750d6f7e5c6a6599b7b85")) (let ((commit "355042e2ff5933b245e804c5eaff4ec3f340e71b"))
(list (list
(broadcom-sta-patch "i686-build-failure" commit "1522w2gb698svlkb2b4lijbd740agvs2ibpz4g0jlv8v31cybkf4") (broadcom-sta-patch "i686-build-failure" commit "1522w2gb698svlkb2b4lijbd740agvs2ibpz4g0jlv8v31cybkf4")
(broadcom-sta-patch "license" commit "0rwlhafcmpp97cknqwv8gwf8sbxgqavgci1ywfkdxiylh4mhcvhr") (broadcom-sta-patch "license" commit "0rwlhafcmpp97cknqwv8gwf8sbxgqavgci1ywfkdxiylh4mhcvhr")
@ -1137,9 +1009,7 @@ giving you trouble, you can try this module.")
(broadcom-sta-patch "linux-6.1" commit "1pvx1h7iimcbfqdc13n1980ngxk9q6iyip8svn293x4h7jn472kf") (broadcom-sta-patch "linux-6.1" commit "1pvx1h7iimcbfqdc13n1980ngxk9q6iyip8svn293x4h7jn472kf")
(broadcom-sta-patch "pedantic-fix" commit "1kxmw1iyxnfwad75h981sak5qk16p81xy1f2qxss2d0v97vkfkl5") (broadcom-sta-patch "pedantic-fix" commit "1kxmw1iyxnfwad75h981sak5qk16p81xy1f2qxss2d0v97vkfkl5")
(broadcom-sta-patch "null-pointer-fix" commit "15c2vxgf7v5wy4s8w9jk7irf3fxxghy05gxmav1ss73a2azajdx7") (broadcom-sta-patch "null-pointer-fix" commit "15c2vxgf7v5wy4s8w9jk7irf3fxxghy05gxmav1ss73a2azajdx7")
(broadcom-sta-patch "gcc" commit "0jcqk2vapyy2pbsjv9n8b3qp6vqz17d6s07cr04cx7075q7yhz5h") (broadcom-sta-patch "gcc" commit "0jcqk2vapyy2pbsjv9n8b3qp6vqz17d6s07cr04cx7075q7yhz5h"))))
(broadcom-sta-patch "028_kernel_6.12_adaption" commit
"154dhlb3vyq8bnx7f371scsrhp9cszvmqlswqg5vi6gfgbqnrq08"))))
(sha256 (sha256
(base32 (base32
"1gj485qqr190idilacpxwgqyw21il03zph2rddizgj7fbd6pfyaz")))) "1gj485qqr190idilacpxwgqyw21il03zph2rddizgj7fbd6pfyaz"))))
@ -1284,7 +1154,7 @@ chipsets from Broadcom:
(define-public facetimehd (define-public facetimehd
(package (package
(name "facetimehd") (name "facetimehd")
(version "0.6.8.2") (version "0.6.8")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1294,7 +1164,7 @@ chipsets from Broadcom:
(file-name (git-file-name "facetimehd" version)) (file-name (git-file-name "facetimehd" version))
(sha256 (sha256
(base32 (base32
"1mk9zw100258khc3510jzgm8rci3l26ad0lx4fcqrd8ksq8k03kp")))) "1g0ky9w5klkjndf30mjymq78r6yls9gri9x702nn8qkmgkjbqdsg"))))
(build-system linux-module-build-system) (build-system linux-module-build-system)
(arguments (arguments
'(#:tests? #f)) '(#:tests? #f))
@ -1318,7 +1188,7 @@ driver:
(define-public intel-microcode (define-public intel-microcode
(package (package
(name "intel-microcode") (name "intel-microcode")
(version "20241112") (version "20231114")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1329,7 +1199,7 @@ driver:
(commit (string-append "microcode-" version)))) (commit (string-append "microcode-" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "1i2pfw1vfnws76dpdik5x9kn3rysq8ggb4c16c2lmxzz4phyvxbn")))) (base32 "07c7hkwpvb9056s73s55sg04cxr1d9n1sd9r1g7sm3gh70yc17ki"))))
(build-system copy-build-system) (build-system copy-build-system)
(arguments (arguments
(list #:install-plan (list #:install-plan
@ -1353,12 +1223,12 @@ your CPU.")
(inherit linux-firmware) (inherit linux-firmware)
(name "amd-microcode") (name "amd-microcode")
(arguments (arguments
(cons* #:license-file-regexp "LICENSE.amd-ucode" `(#:license-file-regexp "LICENSE.amd-ucode"
(substitute-keyword-arguments (package-arguments linux-firmware) ,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases) ((#:phases phases)
#~(modify-phases #$phases `(modify-phases ,phases
(add-after 'unpack 'select-firmware (add-after 'unpack 'select-firmware
#$(select-firmware "^amd-ucode/"))))))) ,(select-firmware "^amd-ucode/")))))))
(synopsis "Processor microcode firmware for AMD CPUs") (synopsis "Processor microcode firmware for AMD CPUs")
(description "Updated system processor microcode for AMD x86-64 (description "Updated system processor microcode for AMD x86-64
processors. AMD releases microcode updates to correct processor behavior as processors. AMD releases microcode updates to correct processor behavior as
@ -1371,23 +1241,20 @@ documented in the respective processor revision guides.")
(define-public sof-firmware (define-public sof-firmware
(package (package
(name "sof-firmware") (name "sof-firmware")
(version "2024.09") (version "2.2.6")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/thesofproject/sof-bin/releases/download/v" (uri (string-append "https://github.com/thesofproject/sof-bin/releases/download/v"
version "/sof-bin-" version ".tar.gz")) version "/sof-bin-v" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0866rg40gzlal90ykgs0x622vy3qrw1s3g0qfv80i41mh6gxjiza")))) "018901g5hshrqf2d0rn7yhzxcy4gmdc4v6167df880kdcfkw48lk"))))
(build-system copy-build-system) (build-system copy-build-system)
(arguments (arguments
`(#:install-plan `(#:install-plan
'(("sof" "lib/firmware/intel/sof") (list (list (string-append "sof-v" ,version) "lib/firmware/intel/sof")
("sof-ace-tplg" "lib/firmware/intel/sof-ace-tplg") (list (string-append "sof-tplg-v" ,version) "lib/firmware/intel/sof-tplg"))))
("sof-ipc4" "lib/firmware/intel/sof-ipc4")
("sof-ipc4-tplg" "lib/firmware/intel/sof-ipc4-tplg")
("sof-tplg" "lib/firmware/intel/sof-tplg"))))
(home-page "https://www.sofproject.org") (home-page "https://www.sofproject.org")
(synopsis "Sound Open Firmware") (synopsis "Sound Open Firmware")
(description "This package contains Linux firmwares and topology files for (description "This package contains Linux firmwares and topology files for

View File

@ -1,14 +1,16 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2022 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2023, 2024 André A. Gomes <andremegafone@gmail.com> ;;; Copyright © 2023 André A. Gomes <andremegafone@gmail.com>
(define-module (nongnu packages lisp) (define-module (nongnu packages lisp)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages node)
#:use-module (gnu packages lisp) #:use-module (gnu packages lisp)
#:use-module (gnu packages lisp-xyz) #:use-module (gnu packages lisp-xyz)
;; #:use-module (gnu packages lisp-check)
#:use-module (nongnu packages electron) #:use-module (nongnu packages electron)
#:use-module (guix build-system copy) #:use-module (guix build-system copy)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
@ -123,8 +125,8 @@ then open a browser at http://localhost:PORT, where PORT is the indicated port."
"https://franz.com/ftp/pub/legal/ACL-Express-20170301.pdf")))) "https://franz.com/ftp/pub/legal/ACL-Express-20170301.pdf"))))
(define-public sbcl-cl-electron (define-public sbcl-cl-electron
(let ((commit "f2245dc1450a6ad416984cf932be50e00957390a") (let ((commit "458a60d8c9baae71906294ffae891c3d0686c672")
(revision "3")) (revision "2"))
(package (package
(name "sbcl-cl-electron") (name "sbcl-cl-electron")
(version (git-version "0.0.0" revision commit)) (version (git-version "0.0.0" revision commit))
@ -136,22 +138,13 @@ then open a browser at http://localhost:PORT, where PORT is the indicated port."
(commit commit))) (commit commit)))
(file-name (git-file-name "cl-electron" version)) (file-name (git-file-name "cl-electron" version))
(sha256 (sha256
(base32 "0c18xbwwnjaiwzd01dprdrwzp27nwihaf7pmkql1f5yk43x3ajs0")))) (base32 "1ya6y55kv0g3h19ifnmwbc752p00s9mj1b1n4ljw4n7ycxmdpb24"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
(inputs (list electron (native-inputs (list ;; sbcl-lisp-unit2
sbcl))
(inputs (list electron node
sbcl-cl-json sbcl-iolib sbcl-cl-str sbcl-nclasses sbcl-cl-json sbcl-iolib sbcl-cl-str sbcl-nclasses
sbcl-cl-ppcre sbcl-bordeaux-threads sbcl-lparallel sbcl-parenscript sbcl-bordeaux-threads))
sbcl-parenscript sbcl-spinneret))
(arguments
'(#:tests? #f
#:asd-systems '("cl-electron" "cl-electron/demos")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "source/core.lisp"
(("\"electron\"")
(string-append "\"" (assoc-ref inputs "electron") "/bin/electron\""))))))))
(synopsis "Common Lisp interface to Electron") (synopsis "Common Lisp interface to Electron")
(home-page "https://github.com/atlas-engineer/cl-electron") (home-page "https://github.com/atlas-engineer/cl-electron")
(description "@command{cl-electron} is a binding to Electron for (description "@command{cl-electron} is a binding to Electron for

View File

@ -1,10 +1,9 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2021, 2022 PantherX OS Team <team@pantherx.org> ;;; Copyright © 2021, 2022 PantherX OS Team <team@pantherx.org>
;;; Copyright © 2022, 2023, 2024, 2025 John Kehayias <john.kehayias@protonmail.com> ;;; Copyright © 2022, 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 Evgenii Lepikhin <johnlepikhin@gmail.com> ;;; Copyright © 2022 Evgenii Lepikhin <johnlepikhin@gmail.com>
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2023 Raven Hallsby <karl@hallsby.org> ;;; Copyright © 2023 Raven Hallsby <karl@hallsby.org>
;;; Copyright © 2025 Ashish SHUKLA <ashish.is@lostca.se>
(define-module (nongnu packages messaging) (define-module (nongnu packages messaging)
#:use-module (gnu packages base) #:use-module (gnu packages base)
@ -37,7 +36,7 @@
(define-public element-desktop (define-public element-desktop
(package (package
(name "element-desktop") (name "element-desktop")
(version "1.11.89") (version "1.11.57")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -46,13 +45,13 @@
"https://packages.riot.im/debian/pool/main/e/" name "/" name "_" version "https://packages.riot.im/debian/pool/main/e/" name "/" name "_" version
"_amd64.deb")) "_amd64.deb"))
(sha256 (sha256
(base32 "0riavl8qq59s45xxdk0s1n6i1wymsx1zfdz5dp3ccr8xpzw77abq")))) (base32 "05318i6z5kkzi01ygr77g5ij0hs4xmy0j23hznkqc4zia02q1vgx"))))
(supported-systems '("x86_64-linux")) (supported-systems '("x86_64-linux"))
(build-system chromium-binary-build-system) (build-system chromium-binary-build-system)
(arguments (arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan #:wrapper-plan
#~'(("lib/Element/element-desktop" (("out" "/lib/Element")))) #~'("lib/Element/element-desktop")
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd (add-after 'binary-unpack 'setup-cwd
@ -70,7 +69,15 @@
(lambda _ (lambda _
(mkdir-p (string-append #$output "/bin")) (mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Element/element-desktop") (symlink (string-append #$output "/lib/Element/element-desktop")
(string-append #$output "/bin/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") (home-page "https://github.com/vector-im/element-desktop")
(synopsis "Matrix collaboration client for desktop") (synopsis "Matrix collaboration client for desktop")
(description "Element Desktop is a Matrix client for desktop with Element Web at (description "Element Desktop is a Matrix client for desktop with Element Web at
@ -83,7 +90,7 @@ its core.")
(define-public signal-desktop (define-public signal-desktop
(package (package
(name "signal-desktop") (name "signal-desktop")
(version "7.41.0") (version "6.46.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -92,13 +99,13 @@ its core.")
"https://updates.signal.org/desktop/apt/pool/s/" name "/" name "_" version "https://updates.signal.org/desktop/apt/pool/s/" name "/" name "_" version
"_amd64.deb")) "_amd64.deb"))
(sha256 (sha256
(base32 "1ainlhhzf427f0jqdh83m8519ywihnxyiw505n4msgyhpwgwj5n0")))) (base32 "1pjv8v1hhycwbvqvih83axv41jkyksq6d9152fqic9d61lbb1kpa"))))
(supported-systems '("x86_64-linux")) (supported-systems '("x86_64-linux"))
(build-system chromium-binary-build-system) (build-system chromium-binary-build-system)
(arguments (arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files (list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan #:wrapper-plan
#~'(("lib/Signal/signal-desktop" (("out" "/lib/Signal")))) #~'("lib/Signal/signal-desktop")
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd (add-after 'binary-unpack 'setup-cwd
@ -116,7 +123,15 @@ its core.")
(lambda _ (lambda _
(mkdir-p (string-append #$output "/bin")) (mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Signal/signal-desktop") (symlink (string-append #$output "/lib/Signal/signal-desktop")
(string-append #$output "/bin/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/") (home-page "https://signal.org/")
(synopsis "Private messenger using the Signal protocol") (synopsis "Private messenger using the Signal protocol")
(description "Signal Desktop is an Electron application that links with Signal on Android (description "Signal Desktop is an Electron application that links with Signal on Android
@ -189,8 +204,8 @@ or iOS.")
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(replace 'unpack (replace 'unpack
(lambda* (#:key source #:allow-other-keys) (lambda _
(invoke "tar" "xvf" source) (invoke "tar" "xvf" #$source)
;; Use the more standard lib directory for everything. ;; Use the more standard lib directory for everything.
(mkdir-p "lib") (mkdir-p "lib")
(rename-file "zoom/" "lib/zoom"))) (rename-file "zoom/" "lib/zoom")))

View File

@ -14,17 +14,15 @@
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2019, 2020 Adrian Malacoda <malacoda@monarch-pass.net> ;;; Copyright © 2019, 2020 Adrian Malacoda <malacoda@monarch-pass.net>
;;; Copyright © 2020-2025 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 © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com> ;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
;;; Copyright © 2021, 2024 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021, 2022, 2023 John Kehayias <john.kehayias@protonmail.com> ;;; Copyright © 2021, 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2022 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2023 Tomas Volf <wolf@wolfsden.cz> ;;; Copyright © 2023 Tomas Volf <wolf@wolfsden.cz>
(define-module (nongnu packages mozilla) (define-module (nongnu packages mozilla)
#:use-module (srfi srfi-26)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system cargo) #:use-module (guix build-system cargo)
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
@ -74,39 +72,44 @@
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)) #:use-module (gnu packages xorg))
;;; Define the versions of rust needed to build firefox, trying to match ;; Define the versions of rust needed to build firefox, trying to match
;;; upstream. See table at [0], `Uses' column for the specific version. ;; upstream. See the file taskcluster/ci/toolchain/rust.yml at
;;; Using `rust' will likely lead to a newer version then listed in the table, ;; https://searchfox.org under the particular firefox release, like
;;; but since in Guix only the latest packaged Rust is officially supported, ;; mozilla-esr102.
;;; it is a tradeoff worth making. (define-public rust-firefox-esr rust) ; 1.60 is the default in Guix
;;; 0: https://firefox-source-docs.mozilla.org/writing-rust-code/update-policy.html (define-public rust-firefox rust) ; 1.65 is the minimum
;; The `rust' package is too old.
(define-public rust-firefox-esr rust-1.77) (define icu4c-73
(define-public rust-firefox rust-1.77) (package
(inherit icu4c)
(version "73.1")
(source (origin
(method url-fetch)
(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
"0iccpdvc0kvpww5a31k9gjkqigyz016i7v80r9zamd34w4fl6mx4"))))))
;; Update this id with every firefox update to its release date. ;; Update this id with every firefox update to its release date.
;; It's used for cache validation and therefore can lead to strange bugs. ;; It's used for cache validation and therefore can lead to strange bugs.
(define %firefox-esr-build-id "20250203132125") (define %firefox-esr-build-id "20240219101823")
(define-public firefox-esr (define-public firefox-esr
(package (package
(name "firefox-esr") (name "firefox-esr")
(version "128.7.0esr") (version "115.8.0esr")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://archive.mozilla.org/pub/firefox/releases/" (uri (string-append "https://archive.mozilla.org/pub/firefox/releases/"
version "/source/firefox-" version ".source.tar.xz")) version "/source/firefox-" version ".source.tar.xz"))
(sha256 (sha256
(base32 "1xwl6z8ax3dw5hjb5lwpl5641rmlizmfqs3xg74cnczsvm7bz9z0")) (base32 "1slmp2v1q3my81z8kiym9rpxw5d9n4sn07v7hv99517w7vr8d05g"))))
(patches
(map (lambda (patch)
(search-path
(map (cut string-append <> "/nongnu/packages/patches")
%load-path)
patch))
'("firefox-esr-compare-paths.patch"
"firefox-esr-use-system-wide-dir.patch")))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
(list (list
@ -138,11 +141,6 @@
"--with-distribution-id=org.nonguix" "--with-distribution-id=org.nonguix"
"--disable-official-branding" "--disable-official-branding"
;; Do not require addons in the global app or system directories to
;; be signed by Mozilla.
"--allow-addon-sideload"
"--with-unsigned-addon-scopes=app,system"
;; Features ;; Features
"--disable-tests" "--disable-tests"
"--disable-updater" "--disable-updater"
@ -166,7 +164,7 @@
(rnrs io ports) (rnrs io ports)
(guix elf) (guix elf)
(guix build gremlin) (guix build gremlin)
,@%default-gnu-imported-modules) ,@%gnu-build-system-modules)
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'unpack 'fix-preferences (add-after 'unpack 'fix-preferences
@ -185,11 +183,6 @@
;; XDG settings should be managed by Guix. ;; XDG settings should be managed by Guix.
(write-setting "browser.shell.checkDefaultBrowser" "false") (write-setting "browser.shell.checkDefaultBrowser" "false")
;; It defaults to Google Location Services, but misses a necessary
;; API key.
(write-setting "geo.provider.network.url"
"\"https://api.beacondb.net/v1/geolocate\"")
(close-port port)))) (close-port port))))
(add-after 'fix-preferences 'fix-ffmpeg-runtime-linker (add-after 'fix-preferences 'fix-ffmpeg-runtime-linker
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
@ -238,7 +231,7 @@
;; complain that it's not able to change Cargo.lock. ;; complain that it's not able to change Cargo.lock.
;; https://bugzilla.mozilla.org/show_bug.cgi?id=1726373 ;; https://bugzilla.mozilla.org/show_bug.cgi?id=1726373
(substitute* "build/RunCbindgen.py" (substitute* "build/RunCbindgen.py"
(("args.append\\(\"--frozen\"\\)") "pass")))) (("\"--frozen\",") ""))))
(delete 'bootstrap) (delete 'bootstrap)
(add-before 'configure 'patch-SpeechDispatcherService.cpp (add-before 'configure 'patch-SpeechDispatcherService.cpp
(lambda _ (lambda _
@ -291,9 +284,6 @@
(setenv "MOZ_NOSPAM" "1") (setenv "MOZ_NOSPAM" "1")
;; WM_CLASS (default is "$MOZ_APP_NAME-$MOZ_UPDATE_CHANNEL").
(setenv "MOZ_APP_REMOTINGNAME" "Firefox")
(setenv "MOZBUILD_STATE_PATH" (getcwd)) (setenv "MOZBUILD_STATE_PATH" (getcwd))
(let* ((mozconfig (string-append (getcwd) "/mozconfig")) (let* ((mozconfig (string-append (getcwd) "/mozconfig"))
@ -388,17 +378,13 @@
'("mesa" "ffmpeg"))))) '("mesa" "ffmpeg")))))
(pulseaudio-lib (string-append (assoc-ref inputs "pulseaudio") (pulseaudio-lib (string-append (assoc-ref inputs "pulseaudio")
"/lib")) "/lib"))
;; For sharing on Wayland
(pipewire-lib (string-append (assoc-ref inputs "pipewire")
"/lib"))
;; For U2F and WebAuthn ;; For U2F and WebAuthn
(eudev-lib (string-append (assoc-ref inputs "eudev") "/lib")) (eudev-lib (string-append (assoc-ref inputs "eudev") "/lib"))
(gtk-share (string-append (assoc-ref inputs "gtk+") (gtk-share (string-append (assoc-ref inputs "gtk+")
"/share"))) "/share")))
(wrap-program (car (find-files lib "^firefox$")) (wrap-program (car (find-files lib "^firefox$"))
`("LD_LIBRARY_PATH" prefix (,mesa-lib ,libnotify-lib ,libva-lib `("LD_LIBRARY_PATH" prefix (,mesa-lib ,libnotify-lib ,libva-lib
,pulseaudio-lib ,eudev-lib ,@rdd-whitelist ,pulseaudio-lib ,eudev-lib ,@rdd-whitelist))
,pipewire-lib))
`("XDG_DATA_DIRS" prefix (,gtk-share)) `("XDG_DATA_DIRS" prefix (,gtk-share))
`("MOZ_LEGACY_PROFILES" = ("1")) `("MOZ_LEGACY_PROFILES" = ("1"))
`("MOZ_ALLOW_DOWNGRADE" = ("1")))))) `("MOZ_ALLOW_DOWNGRADE" = ("1"))))))
@ -412,7 +398,7 @@
(("NewWindow") "new-window") (("NewWindow") "new-window")
(("NewPrivateWindow") "new-private-window") (("NewPrivateWindow") "new-private-window")
(("StartupNotify=true") (("StartupNotify=true")
"StartupNotify=true\nStartupWMClass=Firefox")) "StartupNotify=true\nStartupWMClass=Navigator"))
(install-file desktop-file applications)))) (install-file desktop-file applications))))
(add-after 'install-desktop-entry 'install-icons (add-after 'install-desktop-entry 'install-icons
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
@ -487,7 +473,7 @@
alsa-lib alsa-lib
autoconf-2.13 autoconf-2.13
`(,rust-firefox-esr "cargo") `(,rust-firefox-esr "cargo")
clang-18 clang
llvm llvm
wasm32-wasi-clang-toolchain wasm32-wasi-clang-toolchain
m4 m4
@ -497,14 +483,9 @@
pkg-config pkg-config
python python
rust-firefox-esr rust-firefox-esr
rust-cbindgen-0.26 rust-cbindgen-0.24
which which
yasm)) yasm))
(native-search-paths
(list (search-path-specification
(variable "ICECAT_SYSTEM_DIR")
(separator #f) ;single entry
(files '("lib/icecat")))))
(home-page "https://mozilla.org/firefox/") (home-page "https://mozilla.org/firefox/")
(synopsis "Trademarkless version of Firefox") (synopsis "Trademarkless version of Firefox")
(description (description
@ -551,29 +532,20 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
;; Update this id with every firefox update to its release date. ;; Update this id with every firefox update to its release date.
;; It's used for cache validation and therefore can lead to strange bugs. ;; It's used for cache validation and therefore can lead to strange bugs.
(define %firefox-build-id "20250203132324") (define %firefox-build-id "20240219104035")
(define-public firefox (define-public firefox
(package (package
(inherit firefox-esr) (inherit firefox-esr)
(name "firefox") (name "firefox")
(version "135.0") (version "123.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://archive.mozilla.org/pub/firefox/releases/" (uri (string-append "https://archive.mozilla.org/pub/firefox/releases/"
version "/source/firefox-" version ".source.tar.xz")) version "/source/firefox-" version ".source.tar.xz"))
(patches
(map (lambda (patch)
(search-path
(map (cut string-append <> "/nongnu/packages/patches")
%load-path)
patch))
'("firefox-restore-desktop-files.patch"
"firefox-esr-compare-paths.patch"
"firefox-use-system-wide-dir.patch")))
(sha256 (sha256
(base32 "0q5r2q6q56kyzl5pknrir9bzlhmzbvv9hi5gi4852izgcali4zl2")))) (base32 "1dscgn1ymqi4zr29fpj43y8gaspc5wl7a59w657ws56vmnymm24y"))))
(arguments (arguments
(substitute-keyword-arguments (package-arguments firefox-esr) (substitute-keyword-arguments (package-arguments firefox-esr)
((#:phases phases) ((#:phases phases)
@ -581,18 +553,16 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
(replace 'set-build-id (replace 'set-build-id
(lambda _ (lambda _
(setenv "MOZ_BUILD_DATE" #$%firefox-build-id))))))) (setenv "MOZ_BUILD_DATE" #$%firefox-build-id)))))))
(inputs
(modify-inputs (package-inputs firefox-esr)
(replace "icu4c" icu4c-75)))
(native-inputs (native-inputs
(modify-inputs (package-native-inputs firefox-esr) (modify-inputs (package-native-inputs firefox-esr)
(replace "rust" rust-firefox) (replace "rust" rust-firefox)
(replace "rust:cargo" `(,rust-firefox "cargo")))) (replace "rust:cargo" `(,rust-firefox "cargo"))
(replace "rust-cbindgen" rust-cbindgen-0.26)))
(description (description
"Full-featured browser client built from Firefox source tree, without "Full-featured browser client built from Firefox source tree, without
the official icon and the name \"firefox\"."))) the official icon and the name \"firefox\".")))
;; As of Firefox 121.0, Firefox uses Wayland by default. This means we no ;; As of Firefox 121.0, Firefox uses Wayland by default. This means we no longer need a seperate package
;; longer need a seperate package for Firefox on Wayland. ;; for Firefox on Wayland.
(define-public firefox-wayland (define-public firefox-wayland
(deprecated-package "firefox-wayland" firefox)) (deprecated-package "firefox-wayland" firefox))

View File

@ -34,9 +34,7 @@
("x86_64-linux" "linux_x86_64") ("x86_64-linux" "linux_x86_64")
("i686-linux" "linux_i686") ("i686-linux" "linux_i686")
("aarch64-linux" "linux_aarch64") ("aarch64-linux" "linux_aarch64")
("armhf-linux" "linux_armv7l") ("armhf-linux" "linux_armv7l"))
;; We need a default case
(_ "unsupported"))
".tar.xz")) ".tar.xz"))
(sha256 (sha256
(base32 (base32
@ -44,9 +42,7 @@
("x86_64-linux" "1hd7fbk0px45fxhqa7nqcnij8ls2fhpjp60v840vy2zqs9fkcr52") ("x86_64-linux" "1hd7fbk0px45fxhqa7nqcnij8ls2fhpjp60v840vy2zqs9fkcr52")
("i686-linux" "11vk32mxyda9xl08pp2ivd1vsahnw6w7d08in4syz6iannfwp19b") ("i686-linux" "11vk32mxyda9xl08pp2ivd1vsahnw6w7d08in4syz6iannfwp19b")
("aarch64-linux" "0zpkaiwwxn8yh3s1d22qswshbgaxx5d8iy17hb3w256zgb722yjw") ("aarch64-linux" "0zpkaiwwxn8yh3s1d22qswshbgaxx5d8iy17hb3w256zgb722yjw")
("armhf-linux" "18174b1lgsk73gxhala471ppzbrpa1cs953b5par998yqgh74znk") ("armhf-linux" "18174b1lgsk73gxhala471ppzbrpa1cs953b5par998yqgh74znk"))))))
;; We need a valid base32 default case
(_ "0000000000000000000000000000000000000000000000000000"))))))
(build-system binary-build-system) (build-system binary-build-system)
(arguments (arguments
(list #:strip-binaries? #f ;allocated section `.dynsym' not in segment (list #:strip-binaries? #f ;allocated section `.dynsym' not in segment

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +0,0 @@
See comment in gnu/build/icecat-extension.scm.
diff --git a/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs b/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs
index 0b885f6..0bbfbee 100644
--- a/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs
+++ b/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs
@@ -3607,6 +3607,7 @@ export const XPIDatabaseReconcile = {
if (
newAddon ||
oldAddon.updateDate != xpiState.mtime ||
+ oldAddon.path != xpiState.path ||
(aUpdateCompatibility && this.isAppBundledLocation(installLocation))
) {
newAddon = this.updateMetadata(
@@ -3615,8 +3616,6 @@ export const XPIDatabaseReconcile = {
xpiState,
newAddon
);
- } else if (oldAddon.path != xpiState.path) {
- newAddon = this.updatePath(installLocation, oldAddon, xpiState);
} else if (aUpdateCompatibility || aSchemaChange) {
newAddon = this.updateCompatibility(
installLocation,

View File

@ -1,38 +0,0 @@
Replace "/usr/lib/mozilla" (the system-wide directory for extensions and
native manifests) with "$ICECAT_SYSTEM_DIR".
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
index d3af49b495..4beef0aa7e 100644
--- a/toolkit/xre/nsXREDirProvider.cpp
+++ b/toolkit/xre/nsXREDirProvider.cpp
@@ -296,24 +296,12 @@ nsresult nsXREDirProvider::GetBackgroundTasksProfilesRootDir(
static nsresult GetSystemParentDirectory(nsIFile** aFile) {
nsresult rv;
nsCOMPtr<nsIFile> localDir;
-# if defined(XP_MACOSX)
- rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
- getter_AddRefs(localDir));
- if (NS_SUCCEEDED(rv)) {
- rv = localDir->AppendNative("Mozilla"_ns);
- }
-# else
- constexpr auto dirname =
-# ifdef HAVE_USR_LIB64_DIR
- "/usr/lib64/mozilla"_ns
-# elif defined(__OpenBSD__) || defined(__FreeBSD__)
- "/usr/local/lib/mozilla"_ns
-# else
- "/usr/lib/mozilla"_ns
-# endif
- ;
- rv = NS_NewNativeLocalFile(dirname, false, getter_AddRefs(localDir));
-# endif
+
+ const char* systemParentDir = getenv("ICECAT_SYSTEM_DIR");
+ if (!systemParentDir || !*systemParentDir) return NS_ERROR_FAILURE;
+
+ rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir), false,
+ getter_AddRefs(localDir));
if (NS_SUCCEEDED(rv)) {
localDir.forget(aFile);

View File

@ -1,917 +0,0 @@
From: John Kehayias
Date: Fri, 18 Oct 2024 20:33:02 -0400
Subject: [PATCH] Revert "Bug 1907512 - Remove duplicated desktop files
r=stransky"
This reverts commit 7ac2001cd0d4e1f44f104d9b17a427a009935e20 which removed the desktop files in favor of generating them. See upstream discussion at <https://bugzilla.mozilla.org/show_bug.cgi?id=1901703>.
---
.../search-provider-files/firefox.desktop | 274 +++++++++++++
.../org.mozilla.firefox.desktop | 386 ++++++++++++++++++
.../docker/firefox-snap/firefox.desktop | 219 ++++++++++
3 files changed, 879 insertions(+)
create mode 100644 browser/components/shell/search-provider-files/firefox.desktop
create mode 100644 taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop
create mode 100644 taskcluster/docker/firefox-snap/firefox.desktop
diff --git a/browser/components/shell/search-provider-files/firefox.desktop b/browser/components/shell/search-provider-files/firefox.desktop
new file mode 100644
index 000000000000..575290acddc3
--- /dev/null
+++ b/browser/components/shell/search-provider-files/firefox.desktop
@@ -0,0 +1,274 @@
+[Desktop Entry]
+Version=1.0
+Name=Firefox
+GenericName=Web Browser
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeč
+GenericName[es]=Navegador web
+GenericName[fa]=مرورگر اینترنتی
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web
+GenericName[hu]=Webböngésző
+GenericName[it]=Browser Web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[sk]=Internetový prehliadač
+GenericName[sv]=Webbläsare
+Comment=Browse the Web
+Comment[ca]=Navegueu per el web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[de]=Im Internet surfen
+Comment[es]=Navegue por la web
+Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Navigue sur Internet
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[sk]=Prehliadanie internetu
+Comment[sv]=Surfa på webben
+Exec=firefox %u
+Icon=firefox
+Terminal=false
+Type=Application
+MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
+StartupNotify=true
+Categories=Network;WebBrowser;
+Keywords=web;browser;internet;
+Actions=new-window;new-private-window;
+DBusActivatable=true
+
+X-Desktop-File-Install-Version=0.24
+
+[Desktop Action new-window]
+Name=Open a New Window
+Name[ach]=Dirica manyen
+Name[af]=Nuwe venster
+Name[an]=Nueva finestra
+Name[ar]=نافذة جديدة
+Name[as]=নতুন উইন্ডো
+Name[ast]=Ventana nueva
+Name[az]=Yeni Pəncərə
+Name[be]=Новае акно
+Name[bg]=Нов прозорец
+Name[bn_BD]=নতুন উইন্ডো (N)
+Name[bn_IN]=নতুন উইন্ডো
+Name[br]=Prenestr nevez
+Name[brx]=गोदान उइन्ड'(N)
+Name[bs]=Novi prozor
+Name[ca]=Finestra nova
+Name[cak]=K'ak'a' tzuwäch
+Name[cs]=Nové okno
+Name[cy]=Ffenestr Newydd
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[dsb]=Nowe wokno
+Name[el]=Νέο παράθυρο
+Name[en_GB]=New Window
+Name[en_US]=New Window
+Name[en_ZA]=New Window
+Name[eo]=Nova fenestro
+Name[es_AR]=Nueva ventana
+Name[es_CL]=Nueva ventana
+Name[es_ES]=Nueva ventana
+Name[es_MX]=Nueva ventana
+Name[et]=Uus aken
+Name[eu]=Leiho berria
+Name[fa]=پنجره جدید‌
+Name[ff]=Henorde Hesere
+Name[fi]=Uusi ikkuna
+Name[fr]=Nouvelle fenêtre
+Name[fy_NL]=Nij finster
+Name[ga_IE]=Fuinneog Nua
+Name[gd]=Uinneag ùr
+Name[gl]=Nova xanela
+Name[gn]=Ovetã pyahu
+Name[gu_IN]=નવી વિન્ડો
+Name[he]=חלון חדש
+Name[hi_IN]=नया विंडो
+Name[hr]=Novi prozor
+Name[hsb]=Nowe wokno
+Name[hu]=Új ablak
+Name[hy_AM]=Նոր Պատուհան
+Name[id]=Jendela Baru
+Name[is]=Nýr gluggi
+Name[it]=Nuova finestra
+Name[ja]=新しいウィンドウ
+Name[ja_JP-mac]=新規ウインドウ
+Name[ka]=ახალი ფანჯარა
+Name[kk]=Жаңа терезе
+Name[km]=បង្អួច​​​ថ្មី
+Name[kn]=ಹೊಸ ಕಿಟಕಿ
+Name[ko]=새 창
+Name[kok]=नवें जनेल
+Name[ks]=نئئ وِنڈو
+Name[lij]=Neuvo barcon
+Name[lo]=ຫນ້າຕ່າງໃຫມ່
+Name[lt]=Naujas langas
+Name[ltg]=Jauns lūgs
+Name[lv]=Jauns logs
+Name[mai]=नव विंडो
+Name[mk]=Нов прозорец
+Name[ml]=പുതിയ ജാലകം
+Name[mr]=नवीन पटल
+Name[ms]=Tetingkap Baru
+Name[my]=ဝင်းဒိုးအသစ်
+Name[nb_NO]=Nytt vindu
+Name[ne_NP]=नयाँ सञ्झ्याल
+Name[nl]=Nieuw venster
+Name[nn_NO]=Nytt vindauge
+Name[or]=ନୂତନ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
+Name[pl]=Nowe okno
+Name[pt_BR]=Nova janela
+Name[pt_PT]=Nova janela
+Name[rm]=Nova fanestra
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sat]=नावा विंडो (N)
+Name[si]=නව කවුළුවක්
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[son]=Zanfun taaga
+Name[sq]=Dritare e Re
+Name[sr]=Нови прозор
+Name[sv_SE]=Nytt fönster
+Name[ta]=புதிய சாளரம்
+Name[te]=కొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni pencere
+Name[tsz]=Eraatarakua jimpani
+Name[uk]=Нове вікно
+Name[ur]=نیا دریچہ
+Name[uz]=Yangi oyna
+Name[vi]=Cửa sổ mới
+Name[wo]=Palanteer bu bees
+Name[xh]=Ifestile entsha
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開新視窗
+
+
+Exec=firefox --new-window %u
+
+[Desktop Action new-private-window]
+Name=Open a New Private Window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra privada
+Name[ar]=نافذة خاصة جديدة
+Name[as]=নতুন ব্যক্তিগত উইন্ডো
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni Məxfi Pəncərə
+Name[be]=Новае акно адасаблення
+Name[bg]=Нов прозорец за поверително сърфиране
+Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
+Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[brx]=गोदान प्राइभेट उइन्ड'
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cak]=K'ak'a' ichinan tzuwäch
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr Breifat Newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
+Name[en_GB]=New Private Window
+Name[en_US]=New Private Window
+Name[en_ZA]=New Private Window
+Name[eo]=Nova privata fenestro
+Name[es_AR]=Nueva ventana privada
+Name[es_CL]=Nueva ventana privada
+Name[es_ES]=Nueva ventana privada
+Name[es_MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[fa]=پنجره ناشناس جدید
+Name[ff]=Henorde Suturo Hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy_NL]=Nij priveefinster
+Name[ga_IE]=Fuinneog Nua Phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gn]=Ovetã ñemi pyahu
+Name[gu_IN]=નવી ખાનગી વિન્ડો
+Name[he]=חלון פרטי חדש
+Name[hi_IN]=नयी निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy_AM]=Սկսել Գաղտնի դիտարկում
+Name[id]=Jendela Mode Pribadi Baru
+Name[is]=Nýr huliðsgluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=新しいプライベートウィンドウ
+Name[ja_JP-mac]=新規プライベートウインドウ
+Name[ka]=ახალი პირადი ფანჯარა
+Name[kk]=Жаңа жекелік терезе
+Name[km]=បង្អួច​ឯកជន​ថ្មី
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사생활 보호 모드
+Name[kok]=नवो खाजगी विंडो
+Name[ks]=نْو پرایوٹ وینڈو&amp;
+Name[lij]=Neuvo barcon privou
+Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
+Name[lt]=Naujas privataus naršymo langas
+Name[ltg]=Jauns privatais lūgs
+Name[lv]=Jauns privātais logs
+Name[mai]=नया निज विंडो (W)
+Name[mk]=Нов приватен прозорец
+Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
+Name[mr]=नवीन वैयक्तिक पटल
+Name[ms]=Tetingkap Persendirian Baharu
+Name[my]=New Private Window
+Name[nb_NO]=Nytt privat vindu
+Name[ne_NP]=नयाँ निजी सञ्झ्याल
+Name[nl]=Nieuw privévenster
+Name[nn_NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
+Name[pl]=Nowe okno prywatne
+Name[pt_BR]=Nova janela privativa
+Name[pt_PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră privată nouă
+Name[ru]=Новое приватное окно
+Name[sat]=नावा निजेराक् विंडो (W )
+Name[si]=නව පුද්ගලික කවුළුව (W)
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e Re Private
+Name[sr]=Нови приватан прозор
+Name[sv_SE]=Nytt privat fönster
+Name[ta]=புதிய தனிப்பட்ட சாளரம்
+Name[te]=కొత్త ఆంతరంగిక విండో
+Name[th]=หน้าต่างส่วนตัวใหม่
+Name[tr]=Yeni gizli pencere
+Name[tsz]=Juchiiti eraatarakua jimpani
+Name[uk]=Приватне вікно
+Name[ur]=نیا نجی دریچہ
+Name[uz]=Yangi maxfiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[wo]=Panlanteeru biir bu bees
+Name[xh]=Ifestile yangasese entsha
+Name[zh_CN]=新建隐私浏览窗口
+Name[zh_TW]=新增隱私視窗
+Exec=firefox --private-window %u
diff --git a/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop
new file mode 100644
index 000000000000..21c3e7aec0f4
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop
@@ -0,0 +1,386 @@
+[Desktop Entry]
+Version=1.0
+Name=Firefox Web Browser
+Name[ar]=متصفح الويب فَيَرفُكْس
+Name[ast]=Restolador web Firefox
+Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার
+Name[ca]=Navegador web Firefox
+Name[cs]=Firefox Webový prohlížeč
+Name[da]=Firefox - internetbrowser
+Name[el]=Περιηγητής Firefox
+Name[es]=Navegador web Firefox
+Name[et]=Firefoxi veebibrauser
+Name[fa]=مرورگر اینترنتی Firefox
+Name[fi]=Firefox-selain
+Name[fr]=Navigateur Web Firefox
+Name[gl]=Navegador web Firefox
+Name[he]=דפדפן האינטרנט Firefox
+Name[hr]=Firefox web preglednik
+Name[hu]=Firefox webböngésző
+Name[it]=Firefox Browser Web
+Name[ja]=Firefox ウェブ・ブラウザ
+Name[ko]=Firefox 웹 브라우저
+Name[ku]=Geroka torê Firefox
+Name[lt]=Firefox interneto naršyklė
+Name[nb]=Firefox Nettleser
+Name[nl]=Firefox webbrowser
+Name[nn]=Firefox Nettlesar
+Name[no]=Firefox Nettleser
+Name[pl]=Przeglądarka WWW Firefox
+Name[pt]=Firefox Navegador Web
+Name[pt_BR]=Navegador Web Firefox
+Name[ro]=Firefox Navigator Internet
+Name[ru]=Веб-браузер Firefox
+Name[sk]=Firefox - internetový prehliadač
+Name[sl]=Firefox spletni brskalnik
+Name[sv]=Firefox webbläsare
+Name[tr]=Firefox Web Tarayıcısı
+Name[ug]=Firefox توركۆرگۈ
+Name[uk]=Веб-браузер Firefox
+Name[vi]=Trình duyệt web Firefox
+Name[zh_CN]=Firefox 网络浏览器
+Name[zh_TW]=Firefox 網路瀏覽器
+Comment=Browse the World Wide Web
+Comment[ar]=تصفح الشبكة العنكبوتية العالمية
+Comment[ast]=Restola pela Rede
+Comment[bn]=ইন্টারনেট ব্রাউজ করুন
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[da]=Surf på internettet
+Comment[de]=Im Internet surfen
+Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
+Comment[es]=Navegue por la web
+Comment[et]=Lehitse veebi
+Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Naviguer sur le Web
+Comment[gl]=Navegar pola rede
+Comment[he]=גלישה ברחבי האינטרנט
+Comment[hr]=Pretražite web
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[ku]=Li torê bigere
+Comment[lt]=Naršykite internete
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[ro]=Navigați pe Internet
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prehliadanie internetu
+Comment[sl]=Brskajte po spletu
+Comment[sv]=Surfa på webben
+Comment[tr]=İnternet'te Gezinin
+Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
+Comment[uk]=Перегляд сторінок Інтернету
+Comment[vi]=Để duyệt các trang web
+Comment[zh_CN]=浏览互联网
+Comment[zh_TW]=瀏覽網際網路
+GenericName=Web Browser
+GenericName[ar]=متصفح ويب
+GenericName[ast]=Restolador Web
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeč
+GenericName[da]=Webbrowser
+GenericName[el]=Περιηγητής διαδικτύου
+GenericName[es]=Navegador web
+GenericName[et]=Veebibrauser
+GenericName[fa]=مرورگر اینترنتی
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web
+GenericName[gl]=Navegador Web
+GenericName[he]=דפדפן אינטרנט
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[it]=Browser web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[ku]=Geroka torê
+GenericName[lt]=Interneto naršyklė
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=Internetový prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sv]=Webbläsare
+GenericName[tr]=Web Tarayıcı
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Веб-браузер
+GenericName[vi]=Trình duyệt Web
+GenericName[zh_CN]=网络浏览器
+GenericName[zh_TW]=網路瀏覽器
+Keywords=Internet;WWW;Browser;Web;Explorer
+Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب
+Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador
+Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer
+Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer
+Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet
+Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen
+Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ
+Keywords[es]=Explorador;Internet;WWW
+Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa
+Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur
+Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה;
+Keywords[hr]=Internet;WWW;preglednik;Web
+Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer
+Keywords[it]=Internet;WWW;Browser;Web;Navigatore
+Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk
+Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ
+Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside
+Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online
+Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис
+Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer
+Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet
+Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara
+Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд
+Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web
+Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站;
+Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐
+Exec=firefox %u
+Icon=org.mozilla.firefox
+Terminal=false
+Type=Application
+MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
+StartupNotify=true
+Categories=Network;WebBrowser;
+Actions=new-window;new-private-window;profile-manager-window;
+StartupWMClass=firefox
+
+
+[Desktop Action new-window]
+Name=Open a New Window
+Name[ach]=Dirica manyen
+Name[af]=Nuwe venster
+Name[an]=Nueva finestra
+Name[ar]=نافذة جديدة
+Name[as]=নতুন উইন্ডো
+Name[ast]=Ventana nueva
+Name[az]=Yeni Pəncərə
+Name[be]=Новае акно
+Name[bg]=Нов прозорец
+Name[bn_BD]=নতুন উইন্ডো (N)
+Name[bn_IN]=নতুন উইন্ডো
+Name[br]=Prenestr nevez
+Name[brx]=गोदान उइन्ड'(N)
+Name[bs]=Novi prozor
+Name[ca]=Finestra nova
+Name[cak]=K'ak'a' tzuwäch
+Name[cs]=Nové okno
+Name[cy]=Ffenestr Newydd
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[dsb]=Nowe wokno
+Name[el]=Νέο παράθυρο
+Name[en_GB]=New Window
+Name[en_US]=New Window
+Name[en_ZA]=New Window
+Name[eo]=Nova fenestro
+Name[es_AR]=Nueva ventana
+Name[es_CL]=Nueva ventana
+Name[es_ES]=Nueva ventana
+Name[es_MX]=Nueva ventana
+Name[et]=Uus aken
+Name[eu]=Leiho berria
+Name[fa]=پنجره جدید‌
+Name[ff]=Henorde Hesere
+Name[fi]=Uusi ikkuna
+Name[fr]=Nouvelle fenêtre
+Name[fy_NL]=Nij finster
+Name[ga_IE]=Fuinneog Nua
+Name[gd]=Uinneag ùr
+Name[gl]=Nova xanela
+Name[gn]=Ovetã pyahu
+Name[gu_IN]=નવી વિન્ડો
+Name[he]=חלון חדש
+Name[hi_IN]=नया विंडो
+Name[hr]=Novi prozor
+Name[hsb]=Nowe wokno
+Name[hu]=Új ablak
+Name[hy_AM]=Նոր Պատուհան
+Name[id]=Jendela Baru
+Name[is]=Nýr gluggi
+Name[it]=Nuova finestra
+Name[ja]=新しいウィンドウ
+Name[ja_JP]=新規ウインドウ
+Name[ka]=ახალი ფანჯარა
+Name[kk]=Жаңа терезе
+Name[km]=បង្អួច​​​ថ្មី
+Name[kn]=ಹೊಸ ಕಿಟಕಿ
+Name[ko]=새 창
+Name[kok]=नवें जनेल
+Name[ks]=نئئ وِنڈو
+Name[lij]=Neuvo barcon
+Name[lo]=ຫນ້າຕ່າງໃຫມ່
+Name[lt]=Naujas langas
+Name[ltg]=Jauns lūgs
+Name[lv]=Jauns logs
+Name[mai]=नव विंडो
+Name[mk]=Нов прозорец
+Name[ml]=പുതിയ ജാലകം
+Name[mr]=नवीन पटल
+Name[ms]=Tetingkap Baru
+Name[my]=ဝင်းဒိုးအသစ်
+Name[nb_NO]=Nytt vindu
+Name[ne_NP]=नयाँ सञ्झ्याल
+Name[nl]=Nieuw venster
+Name[nn_NO]=Nytt vindauge
+Name[or]=ନୂତନ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
+Name[pl]=Nowe okno
+Name[pt_BR]=Nova janela
+Name[pt_PT]=Nova janela
+Name[rm]=Nova fanestra
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sat]=नावा विंडो (N)
+Name[si]=නව කවුළුවක්
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[son]=Zanfun taaga
+Name[sq]=Dritare e Re
+Name[sr]=Нови прозор
+Name[sv_SE]=Nytt fönster
+Name[ta]=புதிய சாளரம்
+Name[te]=కొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni pencere
+Name[tsz]=Eraatarakua jimpani
+Name[uk]=Нове вікно
+Name[ur]=نیا دریچہ
+Name[uz]=Yangi oyna
+Name[vi]=Cửa sổ mới
+Name[wo]=Palanteer bu bees
+Name[xh]=Ifestile entsha
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開新視窗
+Exec=firefox --new-window %u
+
+[Desktop Action new-private-window]
+Name=Open a New Private Window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra privada
+Name[ar]=نافذة خاصة جديدة
+Name[as]=নতুন ব্যক্তিগত উইন্ডো
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni Məxfi Pəncərə
+Name[be]=Новае акно адасаблення
+Name[bg]=Нов прозорец за поверително сърфиране
+Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
+Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[brx]=गोदान प्राइभेट उइन्ड'
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cak]=K'ak'a' ichinan tzuwäch
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr Breifat Newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
+Name[en_GB]=New Private Window
+Name[en_US]=New Private Window
+Name[en_ZA]=New Private Window
+Name[eo]=Nova privata fenestro
+Name[es_AR]=Nueva ventana privada
+Name[es_CL]=Nueva ventana privada
+Name[es_ES]=Nueva ventana privada
+Name[es_MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[fa]=پنجره ناشناس جدید
+Name[ff]=Henorde Suturo Hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy_NL]=Nij priveefinster
+Name[ga_IE]=Fuinneog Nua Phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gn]=Ovetã ñemi pyahu
+Name[gu_IN]=નવી ખાનગી વિન્ડો
+Name[he]=חלון פרטי חדש
+Name[hi_IN]=नयी निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy_AM]=Սկսել Գաղտնի դիտարկում
+Name[id]=Jendela Mode Pribadi Baru
+Name[is]=Nýr huliðsgluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=新しいプライベートウィンドウ
+Name[ja_JP]=新規プライベートウインドウ
+Name[ka]=ახალი პირადი ფანჯარა
+Name[kk]=Жаңа жекелік терезе
+Name[km]=បង្អួច​ឯកជន​ថ្មី
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사생활 보호 모드
+Name[kok]=नवो खाजगी विंडो
+Name[ks]=نْو پرایوٹ وینڈو&amp;
+Name[lij]=Neuvo barcon privou
+Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
+Name[lt]=Naujas privataus naršymo langas
+Name[ltg]=Jauns privatais lūgs
+Name[lv]=Jauns privātais logs
+Name[mai]=नया निज विंडो (W)
+Name[mk]=Нов приватен прозорец
+Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
+Name[mr]=नवीन वैयक्तिक पटल
+Name[ms]=Tetingkap Persendirian Baharu
+Name[my]=New Private Window
+Name[nb_NO]=Nytt privat vindu
+Name[ne_NP]=नयाँ निजी सञ्झ्याल
+Name[nl]=Nieuw privévenster
+Name[nn_NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
+Name[pl]=Nowe okno prywatne
+Name[pt_BR]=Nova janela privativa
+Name[pt_PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră privată nouă
+Name[ru]=Новое приватное окно
+Name[sat]=नावा निजेराक् विंडो (W )
+Name[si]=නව පුද්ගලික කවුළුව (W)
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e Re Private
+Name[sr]=Нови приватан прозор
+Name[sv_SE]=Nytt privat fönster
+Name[ta]=புதிய தனிப்பட்ட சாளரம்
+Name[te]=కొత్త ఆంతరంగిక విండో
+Name[th]=หน้าต่างส่วนตัวใหม่
+Name[tr]=Yeni gizli pencere
+Name[tsz]=Juchiiti eraatarakua jimpani
+Name[uk]=Приватне вікно
+Name[ur]=نیا نجی دریچہ
+Name[uz]=Yangi maxfiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[wo]=Panlanteeru biir bu bees
+Name[xh]=Ifestile yangasese entsha
+Name[zh_CN]=新建隐私浏览窗口
+Name[zh_TW]=新增隱私視窗
+Exec=firefox --private-window %u
+
+[Desktop Action profile-manager-window]
+Name=Open the Profile Manager
+Name[cs]=Správa profilů
+Name[de]=Profilverwaltung öffnen
+Name[es]=Abrir el Gestor de Perfiles
+Name[fr]=Ouvrir le gestionnaire de profils
+Exec=firefox --ProfileManager
diff --git a/taskcluster/docker/firefox-snap/firefox.desktop b/taskcluster/docker/firefox-snap/firefox.desktop
new file mode 100644
index 000000000000..73e36e8d83de
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/firefox.desktop
@@ -0,0 +1,219 @@
+[Desktop Entry]
+Version=1.0
+Name=Firefox Web Browser
+Name[ar]=متصفح الويب فَيَرفُكْس
+Name[ast]=Restolador web Firefox
+Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার
+Name[ca]=Navegador web Firefox
+Name[cs]=Firefox Webový prohlížeč
+Name[da]=Firefox - internetbrowser
+Name[el]=Περιηγητής Firefox
+Name[es]=Navegador web Firefox
+Name[et]=Firefoxi veebibrauser
+Name[fa]=مرورگر اینترنتی Firefox
+Name[fi]=Firefox-selain
+Name[fr]=Navigateur Web Firefox
+Name[gl]=Navegador web Firefox
+Name[he]=דפדפן האינטרנט Firefox
+Name[hr]=Firefox web preglednik
+Name[hu]=Firefox webböngésző
+Name[it]=Firefox Browser Web
+Name[ja]=Firefox ウェブ・ブラウザ
+Name[ko]=Firefox 웹 브라우저
+Name[ku]=Geroka torê Firefox
+Name[lt]=Firefox interneto naršyklė
+Name[nb]=Firefox Nettleser
+Name[nl]=Firefox webbrowser
+Name[nn]=Firefox Nettlesar
+Name[no]=Firefox Nettleser
+Name[pl]=Przeglądarka WWW Firefox
+Name[pt]=Firefox Navegador Web
+Name[pt_BR]=Navegador Web Firefox
+Name[ro]=Firefox Navigator Internet
+Name[ru]=Веб-браузер Firefox
+Name[sk]=Firefox - internetový prehliadač
+Name[sl]=Firefox spletni brskalnik
+Name[sv]=Firefox webbläsare
+Name[tr]=Firefox Web Tarayıcısı
+Name[ug]=Firefox توركۆرگۈ
+Name[uk]=Веб-браузер Firefox
+Name[vi]=Trình duyệt web Firefox
+Name[zh_CN]=Firefox 网络浏览器
+Name[zh_TW]=Firefox 網路瀏覽器
+Comment=Browse the World Wide Web
+Comment[ar]=تصفح الشبكة العنكبوتية العالمية
+Comment[ast]=Restola pela Rede
+Comment[bn]=ইন্টারনেট ব্রাউজ করুন
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[da]=Surf på internettet
+Comment[de]=Im Internet surfen
+Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
+Comment[es]=Navegue por la web
+Comment[et]=Lehitse veebi
+Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Naviguer sur le Web
+Comment[gl]=Navegar pola rede
+Comment[he]=גלישה ברחבי האינטרנט
+Comment[hr]=Pretražite web
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[ku]=Li torê bigere
+Comment[lt]=Naršykite internete
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[ro]=Navigați pe Internet
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prehliadanie internetu
+Comment[sl]=Brskajte po spletu
+Comment[sv]=Surfa på webben
+Comment[tr]=İnternet'te Gezinin
+Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
+Comment[uk]=Перегляд сторінок Інтернету
+Comment[vi]=Để duyệt các trang web
+Comment[zh_CN]=浏览互联网
+Comment[zh_TW]=瀏覽網際網路
+GenericName=Web Browser
+GenericName[ar]=متصفح ويب
+GenericName[ast]=Restolador Web
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeč
+GenericName[da]=Webbrowser
+GenericName[el]=Περιηγητής διαδικτύου
+GenericName[es]=Navegador web
+GenericName[et]=Veebibrauser
+GenericName[fa]=مرورگر اینترنتی
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web
+GenericName[gl]=Navegador Web
+GenericName[he]=דפדפן אינטרנט
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[it]=Browser web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[ku]=Geroka torê
+GenericName[lt]=Interneto naršyklė
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=Internetový prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sv]=Webbläsare
+GenericName[tr]=Web Tarayıcı
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Веб-браузер
+GenericName[vi]=Trình duyệt Web
+GenericName[zh_CN]=网络浏览器
+GenericName[zh_TW]=網路瀏覽器
+Keywords=Internet;WWW;Browser;Web;Explorer
+Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب
+Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador
+Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer
+Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer
+Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet
+Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen
+Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ
+Keywords[es]=Explorador;Internet;WWW
+Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa
+Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur
+Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה;
+Keywords[hr]=Internet;WWW;preglednik;Web
+Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer
+Keywords[it]=Internet;WWW;Browser;Web;Navigatore
+Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk
+Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ
+Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside
+Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online
+Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис
+Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer
+Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet
+Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara
+Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд
+Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web
+Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站;
+Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐
+Exec=firefox %u
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+Icon=/browser/chrome/icons/default/default128.png
+Categories=GNOME;GTK;Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
+StartupNotify=true
+Actions=NewWindow;NewPrivateWindow;
+
+[Desktop Action NewWindow]
+Name=Open a New Window
+Name[ar]=افتح نافذة جديدة
+Name[ast]=Abrir una ventana nueva
+Name[bn]=Abrir una ventana nueva
+Name[ca]=Obre una finestra nova
+Name[cs]=Otevřít nové okno
+Name[da]=Åbn et nyt vindue
+Name[de]=Ein neues Fenster öffnen
+Name[el]=Άνοιγμα νέου παραθύρου
+Name[es]=Abrir una ventana nueva
+Name[fi]=Avaa uusi ikkuna
+Name[fr]=Ouvrir une nouvelle fenêtre
+Name[gl]=Abrir unha nova xanela
+Name[he]=פתיחת חלון חדש
+Name[hr]=Otvori novi prozor
+Name[hu]=Új ablak nyitása
+Name[it]=Apri una nuova finestra
+Name[ja]=新しいウィンドウを開く
+Name[ko]=새 창 열기
+Name[ku]=Paceyeke nû veke
+Name[lt]=Atverti naują langą
+Name[nb]=Åpne et nytt vindu
+Name[nl]=Nieuw venster openen
+Name[pt]=Abrir nova janela
+Name[pt_BR]=Abrir nova janela
+Name[ro]=Deschide o fereastră nouă
+Name[ru]=Новое окно
+Name[sk]=Otvoriť nové okno
+Name[sl]=Odpri novo okno
+Name[sv]=Öppna ett nytt fönster
+Name[tr]=Yeni pencere aç
+Name[ug]=يېڭى كۆزنەك ئېچىش
+Name[uk]=Відкрити нове вікно
+Name[vi]=Mở cửa sổ mới
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開啟新視窗
+Exec=firefox -new-window
+
+[Desktop Action NewPrivateWindow]
+Name=Open a New Private Window
+Name[ar]=افتح نافذة جديدة للتصفح الخاص
+Name[ca]=Obre una finestra nova en mode d'incògnit
+Name[de]=Ein neues privates Fenster öffnen
+Name[es]=Abrir una ventana privada nueva
+Name[fi]=Avaa uusi yksityinen ikkuna
+Name[fr]=Ouvrir une nouvelle fenêtre de navigation privée
+Name[he]=פתיחת חלון גלישה פרטית חדש
+Name[hu]=Új privát ablak nyitása
+Name[it]=Apri una nuova finestra anonima
+Name[nb]=Åpne et nytt privat vindu
+Name[ru]=Новое приватное окно
+Name[sl]=Odpri novo okno zasebnega brskanja
+Name[tr]=Yeni bir pencere aç
+Name[uk]=Відкрити нове вікно у потайливому режимі
+Name[zh_TW]=開啟新隱私瀏覽視窗
+Exec=firefox -private-window
--
2.39.5 (Apple Git-154)

View File

@ -1,37 +0,0 @@
Replace "/usr/lib/mozilla" (the system-wide directory for extensions and
native manifests) with "$ICECAT_SYSTEM_DIR".
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
index e3be04e70c..a3501c4f44 100644
--- a/toolkit/xre/nsXREDirProvider.cpp
+++ b/toolkit/xre/nsXREDirProvider.cpp
@@ -280,24 +280,11 @@ nsresult nsXREDirProvider::GetBackgroundTasksProfilesRootDir(
static nsresult GetSystemParentDirectory(nsIFile** aFile) {
nsresult rv;
nsCOMPtr<nsIFile> localDir;
-# if defined(XP_MACOSX)
- rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
- getter_AddRefs(localDir));
- if (NS_SUCCEEDED(rv)) {
- rv = localDir->AppendNative("Mozilla"_ns);
- }
-# else
- constexpr auto dirname =
-# ifdef HAVE_USR_LIB64_DIR
- "/usr/lib64/mozilla"_ns
-# elif defined(__OpenBSD__) || defined(__FreeBSD__)
- "/usr/local/lib/mozilla"_ns
-# else
- "/usr/lib/mozilla"_ns
-# endif
- ;
- rv = NS_NewNativeLocalFile(dirname, getter_AddRefs(localDir));
-# endif
+ const char* systemParentDir = getenv("ICECAT_SYSTEM_DIR");
+ if (!systemParentDir || !*systemParentDir) return NS_ERROR_FAILURE;
+
+ rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir),
+ getter_AddRefs(localDir));
if (NS_SUCCEEDED(rv)) {
localDir.forget(aFile);

View File

@ -1,13 +1,11 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2024 Karl Hallsby <karl@hallsby.com
(define-module (nongnu packages productivity) (define-module (nongnu packages productivity)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages freedesktop) #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl) #:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk) #:use-module (gnu packages gtk)
#:use-module (gnu packages image) #:use-module (gnu packages image)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
@ -21,23 +19,22 @@
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (nonguix build-system chromium-binary) #:use-module (nonguix build-system chromium-binary)
#:use-module ((nonguix licenses) #:prefix license:) #:use-module ((nonguix licenses) #:prefix license:))
#:use-module ((guix licenses) #:prefix free-license:))
(define-public anytype (define-public anytype
(package (package
(name "anytype") (name "anytype")
(version "0.44.0") (version "0.38")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (uri
(string-append "https://anytype-release.fra1.cdn.digitaloceanspaces.com/" (string-append "https://download.anytype.io?action=download"
name "_" version "_amd64.deb")) "&key=desktop&id=148487107"))
(file-name (string-append "anytype-" version ".deb")) (file-name (string-append "anytype-" version ".deb"))
(sha256 (sha256
(base32 (base32
"0djyvz6y4pk277xa2mc4w6w029i3f7zd2d1pniyrpayhnna6f670")))) "1xc57ppk3l16mq2a53scf79m8hx43x21kac96ws66awlkz14swc7"))))
(build-system chromium-binary-build-system) (build-system chromium-binary-build-system)
(arguments (arguments
(list (list
@ -55,23 +52,12 @@
"libGLESv2.so" "libGLESv2.so"
"libvk_swiftshader.so" "libvk_swiftshader.so"
"libvulkan.so.1" "libvulkan.so.1"
"resources/app.asar.unpacked/node_modules/keytar/build/Release/keytar.node" "resources/app.asar.unpacked/node_modules/keytar/build/Release/keytar.node"))
"resources/app.asar.unpacked/node_modules/keytar/build/Release/obj.target/keytar.node"))
#:install-plan #:install-plan
#~'(("opt/" "/share") #~'(("opt/" "/share")
("usr/share/" "/share")) ("usr/share/" "/share"))
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'binary-unpack 'disable-auto-updates
(lambda _
(delete-file "opt/Anytype/resources/app-update.yml")))
;; We don't need regedit, a node library to interact with Windows
;; hosts.
(add-after 'binary-unpack 'strip-regedit
(lambda _
(delete-file-recursively
(string-append "opt/Anytype/resources/app.asar.unpacked/"
"node_modules/regedit"))))
(add-after 'binary-unpack 'strip-python (add-after 'binary-unpack 'strip-python
(lambda _ (lambda _
(delete-file (delete-file
@ -119,118 +105,3 @@ synchronization.")
(home-page "https://anytype.io") (home-page "https://anytype.io")
(license (license:nonfree (license (license:nonfree
"https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md")))) "https://github.com/anyproto/anytype-ts/blob/main/LICENSE.md"))))
(define-public zotero
(package
(name "zotero")
(version "6.0.35")
(source
(origin
;; Can switch to git-fetch from Github too!
(method url-fetch)
(uri
(string-append "https://download.zotero.org/client/release/"
version "/Zotero-" version "_linux-x86_64.tar.bz2"))
(sha256
(base32
"17f9an43jwnqpcslbvnhg7hrzkvs2whzwg4ysdgy2gl4m6cln18w"))
(snippet
#~(begin
(use-modules (guix build utils))
;; Disable Zotero's automatic update feature.
(substitute* "defaults/preferences/prefs.js"
(("pref\\(\"app.update.enabled\", true\\)")
"pref(\"app.update.enabled\", false)")
(("pref\\(\"app.update.auto\", true\\)")
"pref(\"app.update.auto\", false)"))))))
(build-system chromium-binary-build-system)
(arguments
(list
;; ~70 MiB
#:substitutable? #f
#:validate-runpath? #t
#:wrapper-plan
#~'("zotero-bin")
#:phases
#~(modify-phases %standard-phases
(add-before 'install-wrapper 'install-entrypoint
(lambda _
(let* ((bin (string-append #$output "/bin")))
(mkdir-p bin)
(symlink (string-append #$output "/zotero")
(string-append bin "/zotero")))))
(add-after 'install 'create-desktop-file
(lambda _
(make-desktop-entry-file
(string-append #$output "/share/applications/zotero.desktop")
#:name "Zotero"
#:type "Application"
#:generic-name "Reference Management"
#:exec (string-append #$output "/bin/zotero -url %U")
#:icon "zotero"
#:keywords '("zotero")
#:categories '("Office" "Database")
#:terminal #f
#:startup-notify #t
#:startup-w-m-class "zotero"
;; MIME-type list taken from Zotero's shipped .desktop file
#:mime-type '("x-scheme-handler/zotero" "text/plain"
"application/x-research-info-systems"
"text/x-research-info-systems"
"text/ris"
"application/x-endnote-refer"
"application/x-inst-for-Scientific-info"
"application/mods+xml"
"application/rdf+xml"
"application/x-bibtex"
"text/x-bibtex"
"application/marc"
"application/vnd.citationstyles.style+xml")
#:comment
'(("en" "Collect, organize, cite, and share your research sources")
(#f "Collect, organize, cite, and share your research sources")))))
(add-after 'install 'install-icons
(lambda _
(let ((icon-sizes (list 16 32 48 256)))
(for-each
(lambda (size)
(mkdir-p (string-append #$output "/share/icons/hicolor/"
size "x" size "/apps"))
(copy-file
(string-append "chrome/icons/default/default" size ".png")
(string-append #$output "/share/icons/hicolor/"
size "x" size "/apps/zotero.png")))
(map number->string icon-sizes))))))))
;; The zotero script that we wrap (which produces .zotero-real), has
;; this open file limit step done for us. If that script ever goes
;; away, then we can just uncomment this one.
;; (add-after 'install-wrapper 'raise-open-file-limit
;; (lambda _
;; (let ((file (string-append #$output "/bin/zotero")))
;; (with-output-to-file file
;; (lambda _
;; (display
;; (string-append
;; "#!/bin/sh\n"
;; ;; Raise the open files limit because Mozilla file
;; ;; functions leave files open for a tiny bit longer than
;; ;; necessary, so an installation with many translators and
;; ;; styles can exceed the default 1024 file limit. ulimit
;; ;; is a shell built-in, so we cannot use Guix's
;; ;; program-file function.
;; "ulimit -n 4096\n"
;; #$output "/bin/zotero-bin" " -app " #$output "/application.ini" " \"$@\""))))
;; (chmod file #o755))))
(inputs (list dbus-glib libxt))
(synopsis "Collect, organize, cite, and share your research sources")
;; If we build from source, then we may be able to support more
;; architectures. But Zotero is a Firefox/Electron app that uses a lot of
;; JavaScript, which may be problematic when packaging using Guix.
(supported-systems '("x86_64-linux"))
(description "Zotero is a research reference and bibliography tool.
Zotero helps you organize your research any way you want. You can sort items
into collections and tag them with keywords. Zotero instantly creates
references and bibliographies for any text editor, and directly inside Word,
LibreOffice, and Google Docs for over 10,000 citation styles.")
(home-page "https://www.zotero.org")
(license free-license:agpl3)))

View File

@ -1,54 +1,21 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022 Jelle Licht <jlicht@fsfe.org> ;;; Copyright © 2022 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2024 Murilo <murilo@disroot.org>
(define-module (nongnu packages video) (define-module (nongnu packages video)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages video) #:use-module (gnu packages video)
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:))
#:use-module (nongnu packages chromium)
#:use-module (nongnu packages nvidia))
(define-public ffmpeg-nvenc
(package/inherit ffmpeg
(name "ffmpeg-nvenc")
(inputs
(modify-inputs
(package-inputs ffmpeg)
(prepend nv-codec-headers)))
(arguments
(substitute-keyword-arguments (package-arguments ffmpeg)
((#:configure-flags flags)
;; Currently only interested in NVENC.
;; Might be better to make a ffmpeg-nonfree with all nonfree codecs
;; in the future.
#~(cons* "--enable-cuvid"
"--enable-ffnvcodec"
"--enable-encoder=hevc_nvenc"
"--enable-encoder=h264_nvenc"
#$flags))))
(description
(string-append
(package-description ffmpeg)
" This build of FFmpeg includes the nonfree NVIDIA encoder for
@code{h264_nvenc} and @code{hevc_nvenc} hardware encoding on NVIDIA GPUs."))))
(define-public replace-ffmpeg-nvenc
(package-input-rewriting
`((,ffmpeg . ,ffmpeg-nvenc))))
(define-public gmmlib (define-public gmmlib
(package (package
(name "gmmlib") (name "gmmlib")
(version "22.3.19") (version "22.3.9")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -57,7 +24,7 @@
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0p3wp6xcvpb4jzw4fsf6554qy91iblmq9y50ph3iy29m19q6nznb")))) "0m88lxlqqs5wdk4icf2ahbigr0q87j1c0damq7q0r55h72pf6zyv"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
;; Tests are run as part of the normal build step ;; Tests are run as part of the normal build step
@ -73,7 +40,7 @@ for VAAPI.")
(define-public intel-media-driver (define-public intel-media-driver
(package (package
(name "intel-media-driver") (name "intel-media-driver")
(version "24.1.5") (version "23.3.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -82,7 +49,7 @@ for VAAPI.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1jm4imld48scj0j499wq5zbdjv4gg7hg2sawljqnjvy09dmp09bs")))) "1zh6zgfyp14zlnd6jvhqz9q5rlyk7cb3nam791slh0h7r5f0iimm"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(inputs (list libva gmmlib)) (inputs (list libva gmmlib))
(native-inputs (list pkg-config)) (native-inputs (list pkg-config))
@ -125,110 +92,3 @@ graphics hardware.")
(package-description intel-media-driver) (package-description intel-media-driver)
" This build of intel-media-driver includes nonfree blobs to fully enable the " This build of intel-media-driver includes nonfree blobs to fully enable the
video decode capabilities of supported Intel GPUs.")))) video decode capabilities of supported Intel GPUs."))))
(define-public nv-codec-headers
(package
(name "nv-codec-headers")
(version "12.1.14.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://git.videolan.org/git/ffmpeg/nv-codec-headers.git")
(commit (string-append "n" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0sp4giwbhai9blgd2k7sb571xwmz2yx17w32vy0nyj86ccb2x5jq"))))
(arguments
(list
#:tests? #f ; No tests.
#:make-flags #~(list (string-append "PREFIX=" #$output))
#:phases #~(modify-phases %standard-phases
(delete 'configure)
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "include/ffnvcodec/dynlink_loader.h"
(("lib.*\\.so\\.." lib)
(search-input-file
inputs (string-append "lib/" lib)))))))))
(build-system gnu-build-system)
(inputs (list nvidia-driver))
(home-page "https://git.videolan.org/?p=ffmpeg/nv-codec-headers.git")
(synopsis
"FFmpeg version of headers required to interface with NVIDIA's codec APIs")
(description
"This package provides the necessary headers for interfacing with NVIDIA's
codec APIs.")
(license license:expat)))
(define-public obs-with-cef
(package
(inherit obs)
(name "obs-with-cef")
(inputs
(append (package-inputs obs)
`(("chromium-embedded-framework" ,chromium-embedded-framework))))
(arguments
(substitute-keyword-arguments (package-arguments obs)
((#:configure-flags flags)
#~(append #$flags
'("-DBUILD_BROWSER=ON"
"-DCEF_ROOT_DIR=../source/cef")))
((#:phases phases)
#~(modify-phases #$phases
(add-before 'configure 'add-cef
(lambda* (#:key inputs #:allow-other-keys)
(let ((chromium-embedded-framework
#$(this-package-input "chromium-embedded-framework")))
(mkdir-p "cef/Release")
(mkdir-p "cef/Resources")
(for-each (lambda (file)
(symlink file (string-append "cef/Release/"
(basename file)))
(symlink file (string-append "cef/Resources/"
(basename file))))
(filter
(lambda (file)
(not (string= (basename (dirname file))
"locales")))
(find-files
(string-append chromium-embedded-framework
"/share/cef"))))
(symlink (string-append chromium-embedded-framework
"/lib/libcef.so")
"cef/Release/libcef.so")
(mkdir-p "cef/libcef_dll_wrapper")
(symlink (string-append chromium-embedded-framework
"/lib/libcef_dll_wrapper.a")
"cef/libcef_dll_wrapper/libcef_dll_wrapper.a")
(symlink (string-append chromium-embedded-framework
"/include")
"cef/include"))))
(add-after 'install 'symlink-obs-browser
;; Required for lib/obs-plugins/obs-browser.so file.
(lambda* (#:key outputs #:allow-other-keys)
(symlink
(string-append #$output
"/lib/libobs-frontend-api.so.0")
(string-append #$output
"/lib/obs-plugins/libobs-frontend-api.so.0"))
(symlink
(string-append #$output
"/lib/libobs.so.0")
(string-append #$output
"/lib/obs-plugins/libobs.so.0"))))))))
(description
(string-append
(package-description obs)
" This build of OBS includes embeded Chromium-based browser to enable
Browser source."))))
(define-public obs-nvenc
(let ((obs-ffmpeg-nvenc (replace-ffmpeg-nvenc obs)))
(package/inherit obs-ffmpeg-nvenc
(name "obs-nvenc")
(description
(string-append
(package-description obs)
" This build of OBS includes the nonfree NVIDIA encoder for FFmpeg
@code{h264_nvenc} and @code{hevc_nvenc} hardware encoding on NVIDIA GPUs.")))))

View File

@ -12,7 +12,7 @@
(define-public zerotier (define-public zerotier
(package (package
(name "zerotier") (name "zerotier")
(version "1.12.2") (version "1.8.4")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -21,17 +21,16 @@
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0p5rpvh137gf5y9ylip7kxfl4argv34sr4wiiygvfk670rifnk57")))) "101b1k9f3cpbgj0l87ya1cbqs9dv0qiayjap4m29fxyjra8hbkb8"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:make-flags (list "ZT_SSO_SUPPORTED=0") ; We don't need SSO/OIDC `(#:phases
#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
;; There is no ./configure ;; There is no ./configure
(delete 'configure) (delete 'configure)
(replace 'check (replace 'check
(lambda* (#:key make-flags #:allow-other-keys) (lambda _
(apply invoke "make" "selftest" make-flags) (invoke "make" "selftest")
(invoke "./zerotier-selftest"))) (invoke "./zerotier-selftest")))
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)

View File

@ -9,7 +9,6 @@
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
#:use-module (guix build-system copy) #:use-module (guix build-system copy)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
@ -34,42 +33,43 @@
"15glm6ws0zihcks93l39mli8wf5b5vkijb0vaid9cqra6x0zppd5")))) "15glm6ws0zihcks93l39mli8wf5b5vkijb0vaid9cqra6x0zppd5"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
(list cabextract `(("cabextract" ,cabextract)
p7zip ("p7zip" ,p7zip)
perl ("perl" ,perl)
;; unrar ; TODO: Include unrar? It is referenced in the source. ;; ("unrar" ,unrar) ; TODO: Include unrar? It is referenced in the source.
unzip ("unzip" ,unzip)
wget ("wget" ,wget)
zenity)) ("zenity" ,zenity)))
(arguments (arguments
(list `(#:tests? #f
#:tests? #f
;; TODO: Checks need bashate, shellcheck (in Guix), and checkbashisms. ;; TODO: Checks need bashate, shellcheck (in Guix), and checkbashisms.
#:make-flags #~(list (string-append "DESTDIR=" #$output) #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
"PREFIX=") "PREFIX=")
#:phases #:phases
#~(modify-phases %standard-phases (modify-phases %standard-phases
(delete 'configure) (delete 'configure)
(add-after 'install 'wrap-program (add-after 'install 'wrap-program
;; The script relies on WINETRICKS_GUI being exactly "zenity", so ;; The script relies on WINETRICKS_GUI being exactly "zenity", so
;; we can't patch the path directly. Probably same for other dependencies. ;; we can't patch the path directly. Probably same for other dependencies.
(lambda _ (lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((winetricks (string-append #$output "/bin/winetricks")) (let* ((zenity-bin (string-append (assoc-ref inputs "zenity") "/bin/"))
(paths (map (perl-bin (string-append (assoc-ref inputs "perl") "/bin/"))
(lambda (p) (string-append p "/bin")) (winetricks (string-append (assoc-ref outputs "out")
(list #$(this-package-input "cabextract") "/bin/winetricks")))
#$(this-package-input "p7zip")
#$(this-package-input "perl")
#$(this-package-input "unzip")
#$(this-package-input "wget")
#$(this-package-input "zenity")))))
(wrap-program winetricks (wrap-program winetricks
`("PATH" prefix ,paths))))) `("PATH" prefix (,@(map (lambda (in)
(string-append (assoc-ref inputs in) "/bin/"))
'("cabextract"
"p7zip"
"perl"
"unzip"
"wget"
"zenity"))))))))
(add-after 'install 'patch-perl-path (add-after 'install 'patch-perl-path
(lambda _ (lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((perl (string-append #$(this-package-input "perl") (let* ((perl (string-append (assoc-ref inputs "perl") "/bin/perl"))
"/bin/perl")) (winetricks (string-append (assoc-ref outputs "out")
(winetricks (string-append #$output "/bin/winetricks"))) "/bin/winetricks")))
(substitute* winetricks (substitute* winetricks
(("#!/usr/bin/env perl") (string-append "#!" perl))))))))) (("#!/usr/bin/env perl") (string-append "#!" perl)))))))))
(home-page "https://github.com/Winetricks/winetricks") (home-page "https://github.com/Winetricks/winetricks")

View File

@ -1,15 +1,15 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022, 2024 Hilton Chain <hako@ultrarare.space> ;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
(define-module (nongnu services nvidia) (define-module (nongnu services nvidia)
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services base) #:use-module (gnu services base)
#:use-module (gnu services linux) #:use-module (gnu services linux)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module (nongnu packages nvidia) #:use-module (nongnu packages nvidia)
#:export (nvidia-configuration #:export (nvidia-configuration
nvidia-configuration? nvidia-configuration?
@ -19,32 +19,24 @@
(define-record-type* <nvidia-configuration> (define-record-type* <nvidia-configuration>
nvidia-configuration make-nvidia-configuration nvidia-configuration make-nvidia-configuration
nvidia-configuration? nvidia-configuration?
(driver nvidia-configuration-driver (nvidia-driver nvidia-configuration-nvidia-driver
(default nvda)) ; file-like (default (list nvidia-driver))) ; list of file-like
(firmware nvidia-configuration-firmware (nvidia-firmware nvidia-configuration-nvidia-firmware
(default nvidia-firmware)) ; file-like (default (list nvidia-firmware))) ; list of file-like
(module nvidia-configuration-module (nvidia-module nvidia-configuration-nvidia-module
(default nvidia-module))) ; file-like (default (list nvidia-module))) ; list of file-like
(modules nvidia-configuration-modules
(default (list "nvidia-uvm")))) ; list of string
(define (nvidia-shepherd-service config) (define (nvidia-shepherd-service config)
(let* ((nvidia-driver (nvidia-configuration-driver config))
(nvidia-smi (file-append nvidia-driver "/bin/nvidia-smi")))
(list (shepherd-service (list (shepherd-service
(documentation "Prepare system environment for NVIDIA driver.") (documentation "Unload nvidia-uvm module on powering off.")
(provision '(nvidia)) (provision '(nvidia))
(requirement '(udev)) (requirement '(user-processes))
(one-shot? #t) (start #~(const #t))
(modules '(((guix build utils) #:select (invoke/quiet)) (stop #~(lambda _
((rnrs io ports) #:select (get-line)))) (let ((rmmod #$(file-append kmod "/bin/rmmod")))
(start (zero? (system* rmmod "nvidia-uvm"))))))))
#~(lambda _
(when (file-exists? "/proc/driver/nvidia")
(let ((modprobe (call-with-input-file
"/proc/sys/kernel/modprobe" get-line)))
(false-if-exception
(begin
(invoke/quiet modprobe "--" "nvidia_uvm")
(invoke/quiet #$nvidia-smi)))))))))))
(define nvidia-service-type (define nvidia-service-type
(service-type (service-type
@ -52,13 +44,13 @@
(extensions (extensions
(list (service-extension shepherd-root-service-type (list (service-extension shepherd-root-service-type
nvidia-shepherd-service) nvidia-shepherd-service)
(service-extension profile-service-type
(compose list nvidia-configuration-driver))
(service-extension udev-service-type (service-extension udev-service-type
(compose list nvidia-configuration-driver)) nvidia-configuration-nvidia-driver)
(service-extension firmware-service-type (service-extension firmware-service-type
(compose list nvidia-configuration-firmware)) nvidia-configuration-nvidia-firmware)
(service-extension linux-loadable-module-service-type (service-extension linux-loadable-module-service-type
(compose list nvidia-configuration-module)))) nvidia-configuration-nvidia-module)
(service-extension kernel-module-loader-service-type
nvidia-configuration-modules)))
(default-value (nvidia-configuration)) (default-value (nvidia-configuration))
(description "Prepare system environment for NVIDIA driver."))) (description "Load NVIDIA modules.")))

View File

@ -1,16 +1,13 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2020 Alexey Abramov <levenson@mmer.org> ;;; Copyright © 2020 Alexey Abramov <levenson@mmer.org>
;;; Copyright © 2025 James Kalyan <mjkalyan@proton.me>
(define-module (nongnu services vpn) (define-module (nongnu services vpn)
#:use-module (guix deprecation)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:use-module (nongnu packages vpn) #:use-module (nongnu packages vpn)
#:export (zerotier-service-type #:export (zerotier-one-service))
zerotier-one-service))
(define %zerotier-action-join (define %zerotier-action-join
(shepherd-action (shepherd-action
@ -50,18 +47,12 @@
(list (string-append #$zerotier "/sbin/zerotier-one")))) (list (string-append #$zerotier "/sbin/zerotier-one"))))
(stop #~(make-kill-destructor)))))) (stop #~(make-kill-destructor))))))
(define zerotier-service-type (define zerotier-one-service-type
(service-type (name 'zerotier) (service-type (name 'zerotier-one)
(description "ZeroTier One daemon.") (description "ZeroTier One daemon.")
(extensions (extensions
(list (service-extension shepherd-root-service-type (list (service-extension shepherd-root-service-type
zerotier-one-shepherd-service))) zerotier-one-shepherd-service)))))
(default-value '())))
(define-deprecated/alias (define* (zerotier-one-service #:key (config (list)))
zerotier-one-service-type
zerotier-service-type)
(define-deprecated (zerotier-one-service #:key (config '()))
zerotier-service-type
(service zerotier-one-service-type config)) (service zerotier-one-service-type config))

View File

@ -2,46 +2,20 @@
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2022 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2024 Hilton Chain <hako@ultrarare.space>
;; Generate a bootable image (e.g. for USB sticks, etc.) with: ;; Generate a bootable image (e.g. for USB sticks, etc.) with:
;; $ guix system image --image-type=iso9660 nongnu/system/install.scm ;; $ guix system disk-image nongnu/system/install.scm
(define-module (nongnu system install) (define-module (nongnu system install)
#:use-module (guix channels)
#:use-module (guix gexp)
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
#:use-module (gnu packages package-management)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
#:use-module (gnu packages vim) #:use-module (gnu packages vim)
#:use-module (gnu packages zile) #:use-module (gnu packages zile)
#:use-module (gnu services)
#:use-module (gnu services base)
#:use-module (gnu system) #:use-module (gnu system)
#:use-module (gnu system install) #:use-module (gnu system install)
#:use-module (nongnu packages linux) #:use-module (nongnu packages linux)
#:export (installation-os-nonfree)) #:export (installation-os-nonfree))
;; https://substitutes.nonguix.org/signing-key.pub
(define %signing-key
(plain-file "nonguix.pub" "\
(public-key
(ecc
(curve Ed25519)
(q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)))"))
(define %channels
(cons* (channel
(name 'nonguix)
(url "https://gitlab.com/nonguix/nonguix")
;; Enable signature verification:
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
%default-channels))
(define installation-os-nonfree (define installation-os-nonfree
(operating-system (operating-system
(inherit installation-os) (inherit installation-os)
@ -53,19 +27,6 @@
git git
neovim neovim
zile) zile)
(operating-system-packages installation-os))) (operating-system-packages installation-os)))))
(services
(modify-services (operating-system-user-services installation-os)
(guix-service-type
config => (guix-configuration
(inherit config)
(guix (guix-for-channels %channels))
(authorized-keys
(cons* %signing-key
%default-authorized-guix-keys))
(substitute-urls
`(,@%default-substitute-urls
"https://substitutes.nonguix.org"))
(channels %channels)))))))
installation-os-nonfree installation-os-nonfree

View File

@ -41,11 +41,7 @@
;; Do not use `@' to avoid introducing circular dependencies. ;; Do not use `@' to avoid introducing circular dependencies.
(let ((module (resolve-interface '(gnu packages elf)))) (let ((module (resolve-interface '(gnu packages elf))))
;; Use the older 0.16 version due to an upstream bug which can segfault (module-ref module 'patchelf)))
;; some binaries. See <https://github.com/NixOS/patchelf/issues/482>.
;; TODO: Set back to patchelf when the package has been updated (or
;; patched) to fix this issue.
(module-ref module 'patchelf-0.16)))
(define (default-glibc) (define (default-glibc)
"Return the default glibc package." "Return the default glibc package."

View File

@ -54,12 +54,7 @@
#~(let ((patchelf-inputs #~(let ((patchelf-inputs
(list #$@(map car inputs)))) (list #$@(map car inputs))))
(map (lambda (file) (map (lambda (file)
;; Either an entry in WRAPPER-PLAN is just a string which can be (cons file (list patchelf-inputs)))
;; used directly, or it is a list where the second element is a
;; list of additional inputs for patchelf-plan.
(if (list? file)
(cons (car file) (list (append patchelf-inputs (cadr file))))
(cons file (list patchelf-inputs))))
#$wrapper-plan))) #$wrapper-plan)))
(define* (lower name (define* (lower name
@ -141,7 +136,7 @@
(build chromium-binary-build) (build chromium-binary-build)
(arguments (append (arguments (append
(strip-keyword-arguments private-keywords arguments) (strip-keyword-arguments private-keywords arguments)
(list #:wrap-inputs (alist-delete "source" host-inputs))))))) (list #:wrap-inputs host-inputs))))))
(define* (chromium-binary-build name inputs (define* (chromium-binary-build name inputs
#:key #:key
@ -168,13 +163,7 @@
(substitutable? #t) (substitutable? #t)
allowed-references allowed-references
disallowed-references) disallowed-references)
"Build SOURCE using binary-build-system. WRAPPER-PLAN is a list of strings for "Build SOURCE using binary-build-system."
files which patchelf will add the INPUTS (which implicitly includes the base
packages needed for chromium-based binaries) to RPATH and wrap with needed
environment variables. Optionally, an entry can be a list with the first
entry the file to be patched and the second a list of additional inputs for
patchelf, like PATCHELF-PLAN in binary-build-system. PATCHELF-PLAN itself is
ignored if WRAPPER-PLAN is not '()."
(define builder (define builder
(with-imported-modules imported-modules (with-imported-modules imported-modules
#~(begin #~(begin

View File

@ -2,14 +2,12 @@
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name> ;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
(define-module (nonguix build binary-build-system) (define-module (nonguix build binary-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:) #:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module (nonguix build utils) #:use-module (nonguix build utils)
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:export (%standard-phases #:export (%standard-phases
binary-build)) binary-build))
@ -116,10 +114,6 @@ The inputs are optional when the file is an executable."
(invoke "patchelf" "--set-rpath" rpath binary))) (invoke "patchelf" "--set-rpath" rpath binary)))
#t) #t)
(display "Using patchelf version: ")
(force-output)
(invoke "patchelf" "--version")
(when (and patchelf-plan (when (and patchelf-plan
(not (null? patchelf-plan))) (not (null? patchelf-plan)))
(let ((interpreter (car (find-files (assoc-ref inputs "libc") "ld-linux.*\\.so"))) (let ((interpreter (car (find-files (assoc-ref inputs "libc") "ld-linux.*\\.so")))
@ -145,14 +139,11 @@ The inputs are optional when the file is an executable."
(define (unpack-deb deb-file) (define (unpack-deb deb-file)
(invoke "ar" "x" deb-file) (invoke "ar" "x" deb-file)
(let ((data-file (find file-exists? (invoke "tar" "xvf" "data.tar.xz")
(list "data.tar.xz" "data.tar.gz"
"data.tar.bz2"))))
(invoke "tar" "xvf" data-file)
(invoke "rm" "-rfv" "control.tar.gz" (invoke "rm" "-rfv" "control.tar.gz"
data-file "data.tar.xz"
deb-file deb-file
"debian-binary"))) "debian-binary"))
(define* (binary-unpack #:key source #:allow-other-keys) (define* (binary-unpack #:key source #:allow-other-keys)
(let* ((files (filter (lambda (f) (let* ((files (filter (lambda (f)

View File

@ -4,6 +4,7 @@
(define-module (nonguix build chromium-binary-build-system) (define-module (nonguix build chromium-binary-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:) #:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module ((nonguix build binary-build-system) #:prefix binary:) #:use-module ((nonguix build binary-build-system) #:prefix binary:)
#:use-module (nonguix build utils)
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (ice-9 ftw) #:use-module (ice-9 ftw)
#:use-module (ice-9 match) #:use-module (ice-9 match)
@ -23,9 +24,9 @@
(nss (assoc-ref inputs "nss")) (nss (assoc-ref inputs "nss"))
(wrap-inputs (map cdr inputs)) (wrap-inputs (map cdr inputs))
(lib-directories (lib-directories
(search-path-as-list '("lib") wrap-inputs)) (build-paths-from-inputs '("lib") wrap-inputs))
(bin-directories (bin-directories
(search-path-as-list (build-paths-from-inputs
'("bin" "sbin" "libexec") '("bin" "sbin" "libexec")
wrap-inputs))) wrap-inputs)))
(for-each (for-each
@ -52,12 +53,7 @@
(list (list
(string-append nss "/lib/nss") (string-append nss "/lib/nss")
output)) output))
":"))) ":")))))
;; Give a hint to Electron-based apps to detect if Wayland or X11 should
;; be used.
;; NOTE: The env-var version of this CLI arg was added in Electron >=28
`("ELECTRON_OZONE_PLATFORM_HINT" ":" =
("auto"))))
(map (map
(lambda (exe) (string-append bin "/" exe)) (lambda (exe) (string-append bin "/" exe))
(filter (filter

View File

@ -97,3 +97,23 @@ contents:
(call-with-output-file result (call-with-output-file result
(lambda (port) (lambda (port)
(for-each (cut dump <> port) files)))) (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))))

View File

@ -42,6 +42,7 @@
(define-module (nonguix multiarch-container) (define-module (nonguix multiarch-container)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages pulseaudio)
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix records) #:use-module (guix records)
@ -259,9 +260,8 @@ in a sandboxed FHS environment."
(home (getenv "HOME")) (home (getenv "HOME"))
(sandbox-home (or (getenv "GUIX_SANDBOX_HOME") (sandbox-home (or (getenv "GUIX_SANDBOX_HOME")
(string-append home "/" #$(ngc-sandbox-home container)))) (string-append home "/" #$(ngc-sandbox-home container))))
(wayland-display (or (getenv "WAYLAND_DISPLAY")
"wayland-0"))
(preserved-env '("^DBUS_" (preserved-env '("^DBUS_"
"^DISPLAY$"
"^DRI_PRIME$" "^DRI_PRIME$"
"^GDK_SCALE$" ; For UI scaling. "^GDK_SCALE$" ; For UI scaling.
"^GUIX_LOCPATH$" ; For pressure-vessel locales. "^GUIX_LOCPATH$" ; For pressure-vessel locales.
@ -276,7 +276,6 @@ in a sandboxed FHS environment."
;; need to be shared with the container as ;; need to be shared with the container as
;; well; this is not needed currently. ;; well; this is not needed currently.
"^LD_LIBRARY_PATH$" "^LD_LIBRARY_PATH$"
"^LIBVA_DRIVERS_PATH$" ; For VA-API drivers.
"^MANGOHUD" ; For MangoHud configuration. "^MANGOHUD" ; For MangoHud configuration.
"^PRESSURE_VESSEL_" ; For pressure vessel options. "^PRESSURE_VESSEL_" ; For pressure vessel options.
"_PROXY$" "_PROXY$"
@ -290,15 +289,12 @@ in a sandboxed FHS environment."
"^SDL_" "^SDL_"
"^STEAM_" "^STEAM_"
"^SSL_" ; SSL certificate environment, needed by curl for Heroic. "^SSL_" ; SSL certificate environment, needed by curl for Heroic.
"^TZ" ; For setting time zone. "^VDPAU_DRIVER_PATH$" ; For VDPAU drivers.
"^XAUTHORITY$" "^XAUTHORITY$"
;; Matching all ^XDG_ vars causes issues ;; Matching all ^XDG_ vars causes issues
;; discussed in 80decf05. ;; discussed in 80decf05.
"^XDG_CURRENT_DESKTOP$"
"^XDG_DATA_HOME$" "^XDG_DATA_HOME$"
"^XDG_RUNTIME_DIR$" "^XDG_RUNTIME_DIR$"
"^XDG_SESSION_(CLASS|TYPE)$"
"^(WAYLAND_)?DISPLAY$"
#$@(ngc-preserved-env container) ; Environment from container. #$@(ngc-preserved-env container) ; Environment from container.
;; The following are useful for debugging. ;; The following are useful for debugging.
"^CAPSULE_DEBUG$" "^CAPSULE_DEBUG$"
@ -314,7 +310,6 @@ in a sandboxed FHS environment."
,@(exists-> "/dev/nvidia-modeset") ,@(exists-> "/dev/nvidia-modeset")
,@(exists-> "/etc/machine-id") ,@(exists-> "/etc/machine-id")
"/etc/localtime" ; Needed for correct time zone. "/etc/localtime" ; Needed for correct time zone.
"/etc/os-release" ; Needed for distro info.
"/sys/class/drm" ; Needed for hw monitoring like MangoHud. "/sys/class/drm" ; Needed for hw monitoring like MangoHud.
"/sys/class/hwmon" ; Needed for hw monitoring like MangoHud. "/sys/class/hwmon" ; Needed for hw monitoring like MangoHud.
"/sys/class/hidraw" ; Needed for devices like the Valve Index. "/sys/class/hidraw" ; Needed for devices like the Valve Index.
@ -338,15 +333,11 @@ in a sandboxed FHS environment."
,@(exists-> (string-append home "/.config/pulse")) ,@(exists-> (string-append home "/.config/pulse"))
,@(exists-> (string-append xdg-runtime "/pulse")) ,@(exists-> (string-append xdg-runtime "/pulse"))
,@(exists-> (string-append xdg-runtime "/bus")) ,@(exists-> (string-append xdg-runtime "/bus"))
,@(exists-> (string-append xdg-runtime "/" wayland-display))
,@(exists-> (getenv "XAUTHORITY")) ,@(exists-> (getenv "XAUTHORITY"))
#$@(ngc-shared container))) #$@(ngc-shared container)))
(DEBUG (equal? (getenv "DEBUG") "1")) (DEBUG (equal? (getenv "DEBUG") "1"))
;; Make sure this environment variable is not set to the (extra-shares (if (getenv "GUIX_SANDBOX_EXTRA_SHARES")
;; emptry string or else guix shell will fail to start. (string-split (getenv "GUIX_SANDBOX_EXTRA_SHARES") #\:)
(extra-shares-env (getenv "GUIX_SANDBOX_EXTRA_SHARES"))
(extra-shares (if (and extra-shares-env (not (string= extra-shares-env "")))
(string-split extra-shares-env #\:)
#f)) #f))
(args (cdr (command-line))) (args (cdr (command-line)))
(command (if DEBUG '() (command (if DEBUG '()
@ -356,16 +347,19 @@ in a sandboxed FHS environment."
;; the "usual" path, probably so they are included in the ;; the "usual" path, probably so they are included in the
;; pressure-vessel container. ;; pressure-vessel container.
(setenv "GUIX_LOCPATH" "/usr/lib/locale") (setenv "GUIX_LOCPATH" "/usr/lib/locale")
;; By default VA-API drivers are searched for in mesa's store path, ;; By default VDPAU drivers are searched for in libvdpau's store
;; so set this path to where the drivers will actually be located in ;; path, so set this path to where the drivers will actually be
;; the container. ;; located in the container.
(setenv "LIBVA_DRIVERS_PATH" "/lib64/dri:/lib/dri") (setenv "VDPAU_DRIVER_PATH" "/lib64/vdpau")
(format #t "\n* Launching ~a in sandbox: ~a.\n\n" (format #t "\n* Launching ~a in sandbox: ~a.\n\n"
#$(package-name (ngc-wrap-package container)) sandbox-home) #$(package-name (ngc-wrap-package container)) sandbox-home)
(when DEBUG (when DEBUG
(format #t "* DEBUG set to 1: Starting shell. Launch application manually with: ~a.\n\n" (format #t "* DEBUG set to 1: Starting shell. Launch application manually with: ~a.\n\n"
#$(ngc-internal-name container))) #$(ngc-internal-name container)))
(mkdir-p sandbox-home) (mkdir-p sandbox-home)
(invoke #$(file-append pulseaudio "/bin/pulseaudio")
"--start"
"--exit-idle-time=60")
(apply invoke (apply invoke
`("guix" "shell" `("guix" "shell"
"--container" "--no-cwd" "--network" "--container" "--no-cwd" "--network"
@ -461,9 +455,7 @@ application."
`((guix build utils)) `((guix build utils))
#~(begin #~(begin
(use-modules (guix build utils) (use-modules (guix build utils)
(ice-9 getopt-long) (ice-9 getopt-long))
(srfi srfi-1)
(srfi srfi-26))
(define (path->str path) (define (path->str path)
(if (list? path) (if (list? path)
(string-join path "/") (string-join path "/")
@ -473,13 +465,9 @@ application."
(dest (path->str (cdr pair)))) (dest (path->str (cdr pair))))
(unless (file-exists? dest) (unless (file-exists? dest)
(symlink target dest)))) (symlink target dest))))
(define (file-symlink file dir) (define (icd-symlink file)
(mkdir-p dir)
(new-symlink (new-symlink
`(,file . (,dir ,(basename file))))) `(,file . ("/usr/share/vulkan/icd.d" ,(basename file)))))
;; Use stat to follow links from packages like MangoHud.
(define (get-files dir)
(find-files (path->str dir) #:stat stat))
(define fhs-option-spec (define fhs-option-spec
'((asound32 (value #f)))) '((asound32 (value #f))))
(let* ((guix-env (getenv "GUIX_ENVIRONMENT")) (let* ((guix-env (getenv "GUIX_ENVIRONMENT"))
@ -500,11 +488,14 @@ application."
"/run/current-system/profile/share" "/run/current-system/profile/share"
"/sbin" "/sbin"
"/usr/lib" "/usr/lib"
"/usr/share")) "/usr/share/vulkan/icd.d"))
(for-each (for-each
new-symlink new-symlink
`((,ld.so.cache . "/etc/ld.so.cache") `((,ld.so.cache . "/etc/ld.so.cache")
(,ld.so.conf . "/etc/ld.so.conf") ;; needed? (,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") . "/etc/ssl")
((,guix-env "etc/ssl") . "/run/current-system/profile/etc/ssl") ((,guix-env "etc/ssl") . "/run/current-system/profile/etc/ssl")
((,union32 "lib") . "/lib") ((,union32 "lib") . "/lib")
@ -521,41 +512,17 @@ application."
((,union64 "share/mime") . "/usr/share/mime") ; Steam tray icon. ((,union64 "share/mime") . "/usr/share/mime") ; Steam tray icon.
((,union64 "share/glib-2.0") . "/usr/share/glib-2.0") ; Heroic interface. ((,union64 "share/glib-2.0") . "/usr/share/glib-2.0") ; Heroic interface.
((,union64 "share/drirc.d") . "/usr/share/drirc.d") ((,union64 "share/drirc.d") . "/usr/share/drirc.d")
((,union64 "share/fonts") . "/usr/share/fonts")
((,union64 "share/fonts") . "/run/current-system/profile/share/fonts") ((,union64 "share/fonts") . "/run/current-system/profile/share/fonts")
((,union64 "etc/fonts") . "/etc/fonts"))) ((,union64 "etc/fonts") . "/etc/fonts")
((,union64 "share/vulkan/explicit_layer.d") .
"/usr/share/vulkan/explicit_layer.d")))
(for-each (for-each
(cut file-symlink <> "/usr/share/egl/egl_external_platform.d") icd-symlink
(append-map ;; Use stat to follow links from packages like MangoHud.
get-files `(,@(find-files (string-append union32 "/share/vulkan/icd.d")
`((,union32 "share/egl/egl_external_platform.d") #:directories? #t #:stat stat)
(,union64 "share/egl/egl_external_platform.d")))) ,@(find-files (string-append union64 "/share/vulkan/icd.d")
(for-each #:directories? #t #:stat stat)))
(cut file-symlink <> "/usr/share/glvnd/egl_vendor.d")
(append-map
get-files
`((,union32 "share/glvnd/egl_vendor.d")
(,union64 "share/glvnd/egl_vendor.d"))))
(for-each
(cut file-symlink <> "/usr/share/vulkan/icd.d")
(append-map
get-files
`((,union32 "share/vulkan/icd.d")
(,union64 "share/vulkan/icd.d"))))
(for-each
(cut file-symlink <> "/usr/share/vulkan/explicit_layer.d")
(append-map
get-files
`((,union64 "share/vulkan/explicit_layer.d")
(,union32 "share/vulkan/explicit_layer.d"))))
(for-each
(cut file-symlink <> "/usr/share/vulkan/implicit_layer.d")
(append-map
get-files
`((,union32 "share/vulkan/implicit_layer.d")
(,union64 "share/vulkan/implicit_layer.d")
;; For MangoHud implicit layers.
(,guix-env "share/vulkan/implicit_layer.d"))))
;; TODO: This is not 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 ;; Newer versions of Steam won't startup if they can't copy to here
;; (previous would output this error but continue). ;; (previous would output this error but continue).
@ -570,9 +537,7 @@ application."
;; games). Wait to set this inside the container to not cause ;; games). Wait to set this inside the container to not cause
;; issues on foreign distros, see ;; issues on foreign distros, see
;; <https://gitlab.com/nonguix/nonguix/-/issues/303> ;; <https://gitlab.com/nonguix/nonguix/-/issues/303>
(setenv "LD_LIBRARY_PATH" (setenv "LD_LIBRARY_PATH" "/lib64:/lib")
(string-append "/lib64:/lib:/lib64/nss:/lib/nss:"
"/lib64/vdpau:/lib/vdpau"))
;; Process FHS-specific command line options. ;; Process FHS-specific command line options.
(let* ((options (getopt-long (or fhs-args '("")) fhs-option-spec)) (let* ((options (getopt-long (or fhs-args '("")) fhs-option-spec))

View File

@ -4,14 +4,11 @@
(define-module (nonguix utils) (define-module (nonguix utils)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (srfi srfi-43)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 textual-ports) #:use-module (ice-9 textual-ports)
#:use-module (ice-9 popen) #:use-module (ice-9 popen)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix packages) #:use-module (guix packages))
#:use-module (gnu services)
#:export (with-transformation))
(define-public (to32 package64) (define-public (to32 package64)
"Build package for i686-linux. "Build package for i686-linux.
@ -25,45 +22,3 @@ Only x86_64-linux and i686-linux are supported.
(arguments `(#:system "i686-linux" (arguments `(#:system "i686-linux"
,@(package-arguments package64))))) ,@(package-arguments package64)))))
(_ package64))) (_ package64)))
;; For concerns and direction of improvement, see this thread:
;; https://lists.gnu.org/archive/html/guix-devel/2024-06/msg00275.html
(define* (with-transformation proc obj #:optional (pred package?))
"Recursing into child elements, apply PROC to every element of OBJ that
matches PRED."
(match obj
((? pred)
(proc obj))
((? procedure?)
(lambda args
(apply values
(map (cut with-transformation proc <> pred)
(call-with-values
(lambda ()
(apply obj args))
list)))))
((a . b)
(cons (with-transformation proc a pred)
(with-transformation proc b pred)))
((_ ...)
(map (cut with-transformation proc <> pred)
obj))
(#(_ ...)
(vector-map (lambda (vec elt)
(with-transformation proc elt pred))
obj))
;; `<service-type>' and `<origin>' record types are expected to not be
;; modified. Altering them causes very difficult to debug run-time errors.
((or (? service-type?)
(? origin?))
obj)
((? record?)
(let* ((record-type (record-type-descriptor obj))
(record-fields (record-type-fields record-type)))
(apply (record-constructor record-type)
(map (lambda (field)
(let* ((accessor (record-accessor record-type field))
(obj (accessor obj)))
(with-transformation proc obj pred)))
record-fields))))
(_ obj)))