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"))
("50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F"
(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"
(name "ison"))
(;; primary: "1BA4 08C5 8BF2 0EA7 3179 635A 865D C0A3 DED9 B5D0"
@ -21,8 +18,7 @@
(name "jonsger"))
("D319 C7A9 8F2C 3A11 D9C0 0E30 F369 0CBE 3152 EF58"
(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"))
("1EFB 0909 1F17 D28C CBF9 B13A 53D4 57B2 D636 EE82"
(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
(e.g. unsupported wifi). You can find a pre-generated installation image
(time and version in line with upstream Guix), running the nonfree Linux
kernel and nonfree firmware, on the [[https://gitlab.com/nonguix/nonguix/-/releases][Releases page]] (see below for important
note if you use the 1.4.0 release or those created prior to April 2024). Or,
you can generate an installation image from a local checkout of this
repository, at a more recent commit, with the following command:
kernel and nonfree firmware, on the [[https://gitlab.com/nonguix/nonguix/-/releases][Releases page]]. Or, you can generate an
installation image from a local checkout of this repository, at a more recent
commit, with the following command:
#+begin_src sh
guix system image --image-type=iso9660 /path/to/this/channel/nongnu/system/install.scm
#+end_src
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
be created with the following command:
with any changes made stored in memory. As indicated below, you will need to
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
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
#+END_SRC
*** Important note for 1.4.0
The installation media for 1.4.0 or those produced manually before commit
[[https://gitlab.com/nonguix/nonguix/-/commit/80b273e86a19ceaee6d9b6650ed56e853409a799#note_2075084624][80b273e8]] (April 2024) do not automatically configure your channels
specification. You need to add Nonguix "manually" into ~/etc/guix/channels.scm~
and then run ~guix pull~ to make Guix aware of Nonguix scheme libraries. This
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.
The installation media produced by the above method does not automatically
configure your channels specification. You need to add Nonguix "manually"
into ~/etc/guix/channels.scm~ and then run ~guix pull~ to make Guix aware of
Nonguix scheme libraries. Below is Guile scheme code to include Nonguix in the
channel specification.
#+BEGIN_SRC scheme
(use-modules (ice-9 pretty-print))
@ -221,75 +220,6 @@ firmware, and blacklisting of conflicting modules:
...))
...)
#+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
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'
#+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]]
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
(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")
(title
(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
(package
(name "anydesk")
(version "6.3.2-1")
(version "6.3.0")
(source (origin
(method url-fetch)
(uri (string-append "https://download.anydesk.com/linux/anydesk_"
version "_amd64.deb"))
(uri (string-append "https://download.anydesk.com/linux/anydesk-"
version "-amd64.tar.gz"))
(sha256
(base32
"13b5ab4a889vz39d36f45mhv3mlaxb305wsh3plk3dbjcrkkkirb"))))
"0lp4zvbdriwbzfnvblbbpzxsrs0l425rha9qjs9sy6ff6myk7qxi"))))
(build-system binary-build-system)
(arguments
`(#:validate-runpath? #f
#:strip-binaries? #f ;; For some reason it breaks the program
#:patchelf-plan
`(("usr/bin/anydesk" ("atk"
`(("anydesk" ("atk"
"cairo"
"fontconfig"
"freetype"
@ -66,29 +66,17 @@
"polkit-gnome"
"pulseaudio")))
#:install-plan
`(("usr/bin/anydesk" "/bin/")
("usr/share/polkit-1/actions/com.anydesk.anydesk.policy" "/etc/polkit-1/actions/")
("usr/share/icons" "/share/icons/"))
`(("anydesk" "/bin/")
("polkit-1/com.anydesk.anydesk.policy" "/etc/polkit-1/actions/")
("icons/" "/share/icons/"))
#:phases
(modify-phases %standard-phases
(replace 'binary-unpack
(lambda* (#:key source #:allow-other-keys)
(let* ((files (filter (lambda (f)
(not (string=? (basename f) "environment-variables")))
(find-files (getcwd))))
(binary-file (car files)))
(when (= 1 (length files))
(mkdir "binary")
(chdir "binary")
(invoke "ar" "x" binary-file)
(invoke "tar" "xvf" "data.tar.gz")
(invoke "rm" "-rfv" "control.tar.gz"
"data.tar.gz"
binary-file
"debian-binary")))))
(replace 'unpack
(lambda* (#:key inputs #:allow-other-keys)
(invoke "tar" "-xvzf" (assoc-ref inputs "source") "--strip-components" "1")))
(add-after 'wrap-program 'install-desktop-entry
(lambda* (#:key outputs #:allow-other-keys)
(let* ((desktop-file "usr/share/applications/anydesk.desktop")
(let* ((desktop-file "anydesk.desktop")
(out (assoc-ref outputs "out"))
(applications (string-append out "/share/applications")))
(substitute* desktop-file

View File

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

View File

@ -121,7 +121,6 @@
flac
font-liberation
gdk-pixbuf
gtk
harfbuzz
libexif
libglvnd
@ -144,10 +143,10 @@
(license (nonfree "https://www.google.com/intl/en/chrome/terms/")))))
(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
(make-google-chrome "beta" "132.0.6834.32" "0ncjyg3vxsjspb0i1nsflcry9sfsffnqiwa2y7cgh46xamdq6f2c"))
(make-google-chrome "beta" "122.0.6261.6" "1b12bjcg99f6bjfhm311hdx9s1a4i13mcgxbvf1gpzq8989c1g96"))
(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
(package
(name "clj-kondo")
(version "2025.01.16")
(version "2023.10.20")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append
@ -95,11 +95,11 @@ lets you focus on your code.")
version "/clj-kondo-" version "-linux-amd64.zip"))
(sha256
(base32
"0w9a2lz9xr5446bav2fp70jfinlm9zrl0iv9s0h0b6jczqx2f977"))))
"1zb4bkmhv5mh18z8h82qa1a0m95pd5dwdxg31pqgs6lnlca3vsph"))))
(build-system binary-build-system)
(arguments
(list #:patchelf-plan `'(("clj-kondo" ("gcc" "zlib")))
#:install-plan `'(("./clj-kondo" "/bin/"))
#:install-plan `'(("clj-kondo" "/bin/"))
#:phases #~(modify-phases %standard-phases
(add-after 'unpack 'chmod
(lambda _
@ -115,67 +115,3 @@ lets you focus on your code.")
(description "Clj-kondo performs static analysis on Clojure, ClojureScript
and EDN, without the need of a running REPL.")
(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
(package
(name "unrar")
(version "7.0.9")
(version "6.2.2")
(source (origin
(method url-fetch)
(uri (string-append "https://www.rarlab.com/rar/unrarsrc-"
version ".tar.gz"))
(sha256
(base32
"09l336li4q7yrpjq22q6da2vrynpqbyb4a9fdxa02k65wkwi6p2h"))))
"1mbw20lh300r541dz4m84rvq7b542mnb70yc29afrjj6waknqza7"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; No tests.

View File

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

View File

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

View File

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

View File

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

View File

@ -1,8 +1,6 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2023 Pierre Neidhardt <mail@ambrevar.xyz>
;;; 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)
#:use-module (nonguix build-system chromium-binary)
@ -15,8 +13,11 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages video))
(define (electron-source version hash)
(origin
(define-public electron
(package
(name "electron")
(version "27.1.0")
(source (origin
(method url-fetch/zipbomb)
(uri
(string-append
@ -26,18 +27,9 @@
("x86_64-linux" "linux-x64")
("i686-linux" "linux-ia32")
("aarch64-linux" "linux-arm64")
("armhf-linux" "linux-armv7l")
;; We need a default case
(_ "unsupported"))
("armhf-linux" "linux-armv7l"))
".zip"))
(sha256 (base32 hash))))
(define-public electron-27
(package
(name "electron")
(version "27.3.6")
(source (electron-source version
"12hjn1bfk8c25f54kk561mkjl7hsk8b16rj7a7gczswjdpx6fpi0"))
(sha256 (base32 "08illknzcikzzsb6i7z1p2xgb20jjc5cx9hynll25f44q9pg48b6"))))
(build-system chromium-binary-build-system)
(arguments
`(#:wrapper-plan
@ -89,18 +81,3 @@ Chromium and is used by the Atom editor and many other apps.")
(license (license:nonfree
(string-append "https://github.com/electron/electron/blob/v"
version "/LICENSE")))))
(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 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2023 Krzysztof Baranowski <pharcosyle@gmail.com>
;;; Copyright © 2024 Efraim Flashner <efraim@flashner.co.il>
(define-module (nongnu packages firmware)
#:use-module (gnu packages compression)
@ -135,18 +134,16 @@ HDMI to USB Type-C Bridge in the PinePhone.")
(build-system copy-build-system)
(arguments
`(#:substitutable? #f
#:install-plan '(;;Bluetooth firmware
("BCM4345C5.hcd" "/lib/firmware/brcm/")
#:install-plan '( ;Bluetooth firmware
("BCM4345C5.hcd" "usr/lib/firmware/brcm/")
;; WiFi firmware
("fw_bcm43456c5_ag.bin" "/lib/firmware/brcm/")
("fw_bcm43456c5_ag.bin"
"/lib/firmware/brcm/brcmfmac43456-sdio.bin")
("fw_bcm43456c5_ag.bin" "usr/lib/firmware/brcm/")
("brcmfmac43456-sdio.clm_blob"
"/lib/firmware/brcm/")
"usr/lib/firmware/brcm/")
("brcmfmac43456-sdio.AP6256.txt"
"/lib/firmware/brcm/")
"usr/lib/firmware/brcm/")
("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")
(description
"This package provides Firmware for the wifi/bt module AP6256,

View File

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

View File

@ -58,7 +58,7 @@
(define heroic-client
(package
(name "heroic-client")
(version "2.15.2")
(version "2.12.0")
(source
(origin
(method url-fetch)
@ -67,12 +67,19 @@
version "/heroic_" version "_amd64.deb"))
(sha256
(base32
"1bzdb9nqmr9w092c22n57ldykm00n98d78rhqzypf430lrl0kzcj"))))
"0ikb9r72n7xknns81mibipfwqh0r9hqnm5a3k4xsk8my1gajc60c"))))
(build-system chromium-binary-build-system)
(arguments
(list #:validate-runpath? #f ; TODO: fails on wrapped binary and included other files
#:wrapper-plan
#~'(("lib/Heroic/heroic" (("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
#~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd
@ -81,23 +88,26 @@
;; Use the more standard lib directory for everything.
(rename-file "opt/" "lib")
;; Remove unneeded files.
(delete-file-recursively "usr")))
;; Fix the .desktop file "Exec" line to just be "heroic" in
;; order for this desktop file to be useful to launch heroic in
;; the container (heroic package) as well.
(add-after 'patch-dot-desktop-files 'fix-desktop-file
(lambda _
(substitute*
(string-append #$output "/share/applications/heroic.desktop")
(("Exec=.*/heroic") "Exec=heroic"))))
(delete 'patch-dot-desktop-files)
(delete-file-recursively "usr")
;; Fix the .desktop file binary location.
(substitute* '("share/applications/heroic.desktop")
(("/opt/Heroic/")
(string-append #$output "/bin/")))))
(add-after 'install 'symlink-binary-file
(lambda _
(mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/Heroic/heroic")
(string-append #$output "/bin/heroic")))))))
(string-append #$output "/bin/heroic"))))
(add-after 'install-wrapper 'wrap-where-patchelf-does-not-work
(lambda _
(wrap-program (string-append #$output "/lib/Heroic/heroic")
`("LD_LIBRARY_PATH" ":" prefix
(,(string-join
(list
(string-append #$output "/lib/Heroic"))
":")))))))))
(home-page "https://heroicgameslauncher.com")
(synopsis "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
games from the Epic Games Store using Legendary, GOG Games using our custom
implementation with gogdl and Amazon Games using Nile.")
@ -131,6 +141,7 @@ implementation with gogdl and Amazon Games using Nile.")
(substitute* "Makefile"
(("-fns ")
"-fns $(DESTDIR)"))))
(delete 'patch-dot-desktop-files)
(add-after 'unpack 'patch-startscript
(lambda _
(substitute* "bin_steam.sh"
@ -146,9 +157,8 @@ implementation with gogdl and Amazon Games using Nile.")
(substitute* (string-append path "steam-asound32.desktop")
(("Exec=steam %U") "Exec=steam %U -- --asound32")
(("Name=Steam") "Name=Steam (32-bit ALSA)")))))
(delete 'patch-dot-desktop-files)
;; 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)
(let ((out (assoc-ref %outputs "out")))
(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.
("file" ,file) ; Used for steam installation.
("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.
("gawk" ,gawk)
("gdk-pixbuf" ,gdk-pixbuf) ; Required for steam tray icon.
;; Required for steam startup; use newer version for better compatibility
;; with some games like Dwarf Fortress.
("gcc:lib" ,gcc-14 "lib")
("gcc:lib" ,gcc "lib") ; Required for steam startup.
("grep" ,grep)
("libbsd" ,libbsd)
("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.
("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
`(("curl" ,curl) ; Required for Heroic to download e.g. Wine.
("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
(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")
(fhs-union steam-container-libs
(fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-32"
#:system "i686-linux"))))
(define steam-ld.so.cache
(ld.so.conf->ld.so.cache steam-ld.so.conf))
(define 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
(nonguix-container
(name "steam")
@ -260,10 +246,14 @@ implementation with gogdl and Amazon Games using Nile.")
(ld.so.conf steam-ld.so.conf)
(ld.so.cache steam-ld.so.cache)
(union64
(fhs-union steam-container-libs
(fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-64"))
(union32
(fhs-union steam-container-libs
(fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-32"
#:system "i686-linux"))
(link-files '("share"))
@ -278,16 +268,8 @@ all games will be installed.")))
(name "steam-nvidia")
;; Steam's .desktop files expect a "steam" executable, so provide that.
(binary-name "steam")
(ld.so.conf steam-nvidia-ld.so.conf)
(ld.so.cache steam-nvidia-ld.so.cache)
(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)))
(union64 (replace-mesa (ngc-union64 steam-container)))
(union32 (replace-mesa (ngc-union32 steam-container)))))
(define-public steam (nonguix-container->package steam-container))
(define-public steam-nvidia (nonguix-container->package steam-nvidia-container))
@ -307,11 +289,15 @@ all games will be installed.")))
;; this is easier and works.
(union64
(fhs-union `(,@heroic-extra-client-libs
,@steam-container-libs)
,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-64"))
;; Don't include heroic-client-libs as they are not needed in 32-bit.
(union32
(fhs-union steam-container-libs
(fhs-union `(,@steam-client-libs
,@steam-gameruntime-libs
,@fhs-min-libs)
#:name "fhs-union-32"
#:system "i686-linux"))
(link-files '("share"))
@ -326,17 +312,8 @@ installed.")))
(nonguix-container
(inherit heroic-container)
(name "heroic-nvidia")
(ld.so.conf steam-nvidia-ld.so.conf)
(ld.so.cache steam-nvidia-ld.so.cache)
(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)))
(union64 (replace-mesa (ngc-union64 heroic-container)))
(union32 (replace-mesa (ngc-union32 heroic-container)))))
(define-public heroic (nonguix-container->package heroic-container))
(define-public heroic-nvidia (nonguix-container->package heroic-nvidia-container))

View File

@ -1,20 +1,16 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2022 Attila Lendvai <attila@lendvai.name>
;;; Copyright © 2024 Timotej Lazar <timotej.lazar@araneo.si>
(define-module (nongnu packages game-development)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module ((nonguix licenses) :prefix license:)
#:use-module (guix packages)
#:use-module (nonguix build-system binary)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module ((guix licenses) :prefix license:)
#:use-module (gnu packages audio)
#:use-module (gnu packages base)
#: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"))))
(define-public eduke32
;; There are no official releases.
(let ((commit "188e14622cfe5c6f63b04b989b350bf2a29a893c")
(revision "1")
(duke-nukem-3d-directory "share/dukenukem3d"))
(package
(name "eduke32")
(version "20240316-10564-0bc78c53d")
(version (git-version "0" revision commit))
(source
(origin
(method url-fetch)
(uri (string-append "https://dukeworld.com/eduke32/synthesis/"
version "/eduke32_src_" version ".tar.xz"))
(method git-fetch)
(uri (git-reference
(url "https://voidpoint.io/terminx/eduke32.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "1a9fw1kfriyrybjxl72b2434w3yiz2nxg6541lnyhzbdka2cp2lf"))
(base32 "0wy4bppiw4q2hn0v38msrjyvj2hzfvigakc23c2wqfnbl7rm0hrz"))
;; Unbundle libxmp.
(modules '((guix build utils)))
(snippet
;; Remove bundled libxmp and platform-specific stuff.
#~(for-each delete-file-recursively '("platform" "source/libxmp-lite")))))
'(begin (delete-file-recursively "source/libxmp-lite") #t))))
(build-system gnu-build-system)
(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
#~(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")))
(modify-phases %standard-phases
(add-after 'unpack 'unbundle-libxmp
(lambda _
(substitute* "Common.mak"
(("^LIBS :=" match) (string-append match " -lxmp")))
(substitute* "GNUmakefile"
(("-I\\$\\(libxmplite_inc\\)")
(string-append "-I" (assoc-ref %build-inputs "libxmp") "/include"))
(("^ *audiolib_deps \\+= libxmplite.*$") "")
(("-logg") "-logg -lxmp"))
(with-directory-excursion "source/audiolib/src"
(for-each (lambda (file) (substitute* file (("libxmp-lite/") "")))
'("multivoc.cpp" "xmp.cpp")))))
(add-after 'unpack 'fix-share-path
(lambda _
(substitute* "source/duke3d/src/common.cpp"
(("/usr/local/share/games") (string-append #$output "/share")))))
'("multivoc.cpp" "xmp.cpp")))
#t))
(delete 'configure)
(replace 'install
(lambda _
(let ((bin (string-append #$output "/bin")))
(install-file "eduke32" bin)
(install-file "mapster32" bin)
(install-file "package/sdk/m32help.hlp"
(string-append #$output "/share/eduke32"))))))))
(inputs (list alsa-lib
flac
glu
gtk+-2
libvorbis
libvpx
libxmp
sdl2
sdl2-mixer))
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(glu (assoc-ref inputs "glu"))
(eduke (string-append out "/bin/eduke32"))
(eduke-real (string-append out "/bin/.eduke32-real")))
;; TODO: Install custom .desktop file? Need icon.
;; See https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=eduke32.
(install-file "eduke32" (string-append out "/bin"))
(install-file "mapster32" (string-append out "/bin"))
(install-file "package/common/buildlic.txt"
(string-append out "/share/licenses"))
;; Wrap program:
;; - Make sure current directory is writable, else eduke32 will segfault.
;; - Add ../share/dukenukem3d to the dir search list.
;; 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
(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")
(description "EDuke32 is a free homebrew game engine and source port of
the classic PC first person shooter Duke Nukem 3DDuke3D for short. A
thousands of features and upgrades were added for regular players and
additional editing capabilities and scripting extensions for homebrew
developers and mod creators. EDuke32 is open source but non-free software.
(description "EDuke32 is a free homebrew game engine and source port of the
classic PC first person shooter Duke Nukem 3DDuke3D for short. A thousands
of features and upgrades were added for regular players and additional editing
capabilities and scripting extensions for homebrew developers and mod
creators. EDuke32 is open source but non-free software.
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
@file{~/.config/eduke32/}.")
(home-page "https://eduke32.com")
(license
(list license:gpl2
(license:nonfree "file://package/common/buildlic.txt")))))
(home-page "https://eduke32.com/")
(license (license:nonfree
"https://eduke32.com/buildlic.txt")))))
(define-public fury
(package/inherit eduke32
(package
(inherit eduke32)
(name "fury")
(arguments
(substitute-keyword-arguments (package-arguments eduke32)
((#:make-flags flags #~'())
#~(cons* "FURY=1" #$flags))
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
(add-after 'unpack 'disable-sdl-static
(lambda _
(substitute* "GNUmakefile"
(("SDL_STATIC := 1") ""))))
((#:make-flags flags ''()) `(cons* "FURY=1" ,flags))
((#:phases phases '%standard-phases)
`(modify-phases ,phases
(replace 'install
(lambda _
(install-file "fury" (string-append #$output "/bin"))))))))
(inputs
(alist-delete "libvpx" (package-inputs eduke32)))
(let* ((out (assoc-ref %outputs "out")))
(install-file "fury" (string-append out "/bin"))
(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")
(description
(string-append
"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
@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
(package
(name "lgogdownloader")
(version "3.15")
(version "3.12")
(source
(origin
(method git-fetch)
@ -31,7 +31,7 @@
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0bjjn2wam4f2lzmk0hkdxxc7k0wk3f0lyszl0birsr9h3jjpjqw7"))))
(base32 "0kmz5zsbci7iilbqdvql9c1vk2b1q2flsdr6psnkln07xp664di2"))))
(build-system qt-build-system)
(arguments
`(#:configure-flags '("-DUSE_QT_GUI=ON")
@ -39,11 +39,15 @@
(inputs
(list boost
curl
htmlcxx
jsoncpp
qtwebengine
liboauth
qtbase-5
qtdeclarative-5
qtwebchannel-5
qtwebengine-5
rhash
tinyxml2
tidy-html
zlib))
(native-inputs
(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
(package
(name "k9s")
(version "0.32.5")
(version "0.27.4")
(source (origin
(method url-fetch)
(uri (string-append
@ -19,7 +19,7 @@
version "/k9s_Linux_amd64.tar.gz"))
(sha256
(base32
"18yf4vr4pgdl5ssijmpf45amdasjrd3mbgnsp1cjnadszvsiphrk"))))
"14j37kl8pbmbid4np48cfv5k8vic6ngnc4pjh01qr6szplg861z5"))))
(build-system copy-build-system)
(arguments
(list
@ -29,8 +29,8 @@
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
(invoke "tar" "-xvf" source))))))
(lambda _
(invoke "tar" "-xvf" #$source))))))
(home-page "https://k9scli.io")
(supported-systems '("x86_64-linux"))
(synopsis "Kubernetes CLI To Manage Your Clusters In Style")
@ -62,8 +62,8 @@ offers subsequent commands to interact with your observed resources.")
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
(copy-file source "./katenary")
(lambda _
(copy-file #$source "./katenary")
(chmod "katenary" #o644)))
(add-before 'install 'chmod
(lambda _
@ -79,14 +79,14 @@ Helm Chart for Kubernetes.")
(define-public kubectl
(package
(name "kubectl")
(version "1.31.0")
(version "1.28.1")
(source (origin
(method url-fetch)
(uri (string-append
"https://dl.k8s.io/release/v" version "/bin/linux/amd64/kubectl"))
(sha256
(base32
"0dr40ckdj65ka6ndp8knyprh1k0nx6vg8yyg7p6c1lc49b3as9vw"))))
"1qbl4a2xv795apvbwahdb9kzcm2wys0am1c72as3iavgs3wxd9z7"))))
(build-system copy-build-system)
(arguments
(list
@ -96,8 +96,8 @@ Helm Chart for Kubernetes.")
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
(copy-file source "./kubectl")
(lambda _
(copy-file #$source "./kubectl")
(chmod "kubectl" #o644)))
(add-before 'install 'chmod
(lambda _
@ -114,7 +114,7 @@ view logs.")
(define-public kompose
(package
(name "kompose")
(version "1.34.0")
(version "1.30.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -122,7 +122,7 @@ view logs.")
version "/kompose-linux-amd64"))
(sha256
(base32
"0wg1ks3flb5rbpazich7v052s3zm8fwja044r67sky3bxxihx3f5"))))
"0sy3ci7s2dkjigasyv01nm1vg30wwhmdc0cmglzb23ws8bfrfjlh"))))
(build-system copy-build-system)
(arguments
(list
@ -132,8 +132,8 @@ view logs.")
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
(copy-file source "./kompose")))
(lambda _
(copy-file #$source "./kompose")))
(add-before 'install 'chmod
(lambda _
(chmod "kompose" #o555))))))
@ -148,14 +148,14 @@ such as Kubernetes (or OpenShift).")
(define-public helm-kubernetes
(package
(name "helm-kubernetes")
(version "3.15.4")
(version "3.12.3")
(source (origin
(method url-fetch)
(uri (string-append
"https://get.helm.sh/helm-v" version "-linux-amd64.tar.gz"))
(sha256
(base32
"1afgf08z6hgy07kjk8fj7xkr8ma4qk2f1r33901nzz87zkn0yh0i"))))
"1d99c506shnz5cr9xhkrla5r82nan7v3hz631jqflicd376i68qv"))))
(build-system copy-build-system)
(arguments
(list
@ -165,8 +165,8 @@ such as Kubernetes (or OpenShift).")
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
(invoke "tar" "-xvf" source)))
(lambda _
(invoke "tar" "-xvf" #$source)))
(add-before 'install 'chmod
(lambda _
(chmod "linux-amd64/helm" #o555))))))
@ -181,13 +181,13 @@ define, install, and upgrade Kubernetes applications.")
(define-public kind
(package
(name "kind")
(version "0.24.0")
(version "0.20.0")
(source (origin
(method url-fetch)
(uri (string-append "https://kind.sigs.k8s.io/dl/v" version "/kind-linux-amd64"))
(sha256
(base32
"03b0idcb11knqyx2ryakvlkqk1cdyavkar6izjihsqlxlfjsv6mq"))))
"1v9x953a5n0l3kz78wm29yh11vz56nmlvhi7xzcjscyksq9p4fji"))))
(build-system copy-build-system)
(arguments
(list
@ -197,8 +197,8 @@ define, install, and upgrade Kubernetes applications.")
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
(copy-file source "./kind")
(lambda _
(copy-file #$source "./kind")
(chmod "kind" #o644)))
(add-before 'install 'chmod
(lambda _

View File

@ -4,7 +4,7 @@
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
;;; Copyright © 2020, 2021 James Smith <jsubuntuxp@disroot.org>
;;; Copyright © 2020-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, 2021, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020, 2021, 2022 Zhu Zihao <all_but_last@163.com>
@ -13,7 +13,7 @@
;;; Copyright © 2021 Risto Stevcev <me@risto.codes>
;;; Copyright © 2021 aerique <aerique@xs4all.nl>
;;; 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 Remco van 't Veer <remco@remworks.net>
;;; Copyright © 2022 Simen Endsjø <simendsjo@gmail.com>
@ -26,17 +26,13 @@
;;; Copyright © 2023 Ada Stevenson <adanskana@gmail.com>
;;; Copyright © 2023 Tomas Volf <~@wolfsden.cz>
;;; Copyright © 2023 PRESFIL <presfil@protonmail.com>
;;; Copyright © 2024, 2025 Maxim Cournoyer <maxim.cournoyer@gmail.com>
(define-module (nongnu packages linux)
#:use-module (gnu packages)
#:use-module (nongnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages cpio)
#:use-module (gnu packages linux)
#:use-module (gnu packages parallel)
#:use-module (guix licenses)
#:use-module (guix packages)
#: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
on hardware which requires nonfree software to function."))))
(define-public linux-6.13
(corrupt-linux linux-libre-6.13))
(define-public linux-6.12
(corrupt-linux linux-libre-6.12))
(define-public linux-6.7
(corrupt-linux linux-libre-6.7))
(define-public linux-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
(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.
(define-public linux-lts linux-6.12)
(define-public linux-lts linux-6.1)
(define-public linux-arm64-generic-5.10
(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"))
(define %default-extra-linux-options
((@@ (gnu packages linux) default-extra-linux-options) version))
(@@ (gnu packages linux) %default-extra-linux-options))
(define config->string
(@@ (gnu packages linux) config->string))
@ -258,7 +254,9 @@ on hardware which requires nonfree software to function."))))
(append %default-extra-linux-options
;; NOTE: These are configs expected by Guix
;; 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)
(close-port port))
(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.")))
;; 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-source
(make-linux-xanmod-source
linux-xanmod-version
linux-xanmod-revision
#:xanmod-branch "main"
#:kernel-hash (base32 "1sr58vsh39hdwk0z27lg14isqwn4g8m4r7a8z2rsyhkfwlmmd8mi")
#:xanmod-hash (base32 "18a7hbm7gvf6b7wr84rszmpl1yb3mdgj2plv5627mv09dn87lvz2")))
#:kernel-hash (base32 "0s8hbcsg7fdvspqam8kzcxygjsznr4zfi60nqgc81l3n4m518cgg")
#: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-source
(make-linux-xanmod-source
@ -297,7 +295,7 @@ stable, responsive and smooth desktop experience.")))
linux-xanmod-lts-revision
#:xanmod-branch "lts"
#:kernel-hash (base32 "1l2nisx9lf2vdgkq910n5ldbi8z25ky1zvl67zgwg2nxcdna09nr")
#:xanmod-hash (base32 "119jvwmxpjfpifg7mhqirjc1g1q769584hv2xc8wyg2iklhhs653")))
#:xanmod-hash (base32 "1q33bd4a65l46333l2m7vjn46b0xhdbz508bq7q0bphbmy0bf35m")))
;; Linux-XanMod packages
(define-public linux-xanmod
@ -318,44 +316,24 @@ stable, responsive and smooth desktop experience.")))
(define-public linux-firmware
(package
(name "linux-firmware")
(version "20250211")
(version "20240115")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/linux/kernel/firmware/"
"linux-firmware-" version ".tar.xz"))
(sha256
(base32
"0z998nxplnc22nbj3yzdyjjs433p92rzvq2x5i9rv0xzjxc39q9d"))))
"13b75kd075famc58pvx4r9268pxn69nyihx7p3i6i7mvkgqayz5b"))))
(build-system gnu-build-system)
(arguments
(list #:tests? #f
#:strip-binaries? #f
#:validate-runpath? #f
#:make-flags #~(list (string-append "DESTDIR=" #$output))
`(#:tests? #f
#:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
#: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)
(modify-phases %standard-phases
(replace 'install
;; Use Zstd compression to reduce space requirements.
(lambda* (#:key (parallel-build? #t) (make-flags '())
#:allow-other-keys)
(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))
(lambda* (#:key (make-flags '()) #:allow-other-keys)
(apply invoke "make" "install-nodedup" make-flags)))
(delete 'validate-runpath))))
(home-page
"https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git")
(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)
"Modify linux-firmware copy list to retain only files matching KEEP regex."
#~(lambda _
`(lambda _
(use-modules (ice-9 regex))
(substitute* "WHENCE"
(("^(File|RawFile|Link): *([^ ]*)(.*)" _ type file rest)
(string-append (if (string-match #$keep file) type "Skip") ": " file rest)))))
(("^(File|Link): *([^ ]*)(.*)" _ type file rest)
(string-append (if (string-match ,keep file) type "Skip") ": " file rest)))))
(define-public amdgpu-firmware
(package
(inherit linux-firmware)
(name "amdgpu-firmware")
(arguments
(cons* #:license-file-regexp "LICENSE.amdgpu"
(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
`(#:license-file-regexp "LICENSE.amdgpu"
,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'select-firmware
#$(select-firmware "^amdgpu/")))))))
,(select-firmware "^amdgpu/")))))))
(home-page "http://support.amd.com/en-us/download/linux")
(synopsis "Nonfree firmware for AMD graphics chips")
(description "Nonfree firmware for AMD graphics chips. While most AMD
@ -403,12 +381,12 @@ advanced 3D.")
(inherit amdgpu-firmware)
(name "radeon-firmware")
(arguments
(cons* #:license-file-regexp "LICENSE.radeon"
(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
`(#:license-file-regexp "LICENSE.radeon"
,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'select-firmware
#$(select-firmware "^radeon/")))))))
,(select-firmware "^radeon/")))))))
(synopsis "Nonfree firmware for older AMD graphics chips")
(description "Nonfree firmware for AMD graphics chips. While most AMD
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)
(name "atheros-firmware")
(arguments
(cons* #:license-file-regexp "LICEN[CS]E.*[Aa]th"
(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
`(#:license-file-regexp "LICEN[CS]E.*[Aa]th"
,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases)
`(modify-phases ,phases
(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")
(description "Nonfree firmware blobs for Atheros wireless cards. This
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)
(name "ibt-hw-firmware")
(arguments
(cons* #:license-file-regexp "LICENCE.ibt_firmware"
(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
`(#:license-file-regexp "LICENCE.ibt_firmware"
,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases)
`(modify-phases ,phases
(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")
(synopsis "Non-free firmware for Intel bluetooth chips")
(description "This firmware is required by the btintel kernel module to
@ -657,12 +635,12 @@ laptops).")
(inherit linux-firmware)
(name "iwlwifi-firmware")
(arguments
(cons* #:license-file-regexp "LICENCE.iwlwifi_firmware"
(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
`(#:license-file-regexp "LICENCE.iwlwifi_firmware"
,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'select-firmware
#$(select-firmware "^iwlwifi-")))))))
,(select-firmware "^iwlwifi-")))))))
(home-page "https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi")
(synopsis "Nonfree firmware for Intel wifi chips")
(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)
(name "i915-firmware")
(arguments
(cons* #:license-file-regexp "LICENCE.i915"
(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
`(#:license-file-regexp "LICENCE.i915"
,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'select-firmware
#$(select-firmware "^i915/")))))))
,(select-firmware "^i915/")))))))
(home-page "https://01.org/linuxgraphics/gfx-docs/drm/gpu/i915.html")
(synopsis "Nonfree firmware for Intel integrated graphics")
(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"
"/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
(package
(inherit linux-firmware)
(name "realtek-firmware")
(arguments
(cons* #:license-file-regexp "LICENCE.rtlwifi_firmware.txt"
(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
`(#:license-file-regexp "LICENCE.rtlwifi_firmware.txt"
,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases)
`(modify-phases ,phases
(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")
(synopsis "Nonfree firmware for Realtek ethernet, wifi, and bluetooth chips")
(description
@ -900,8 +772,8 @@ package contains nonfree firmware for the following chips:
(deprecated-package "rtl-bt-firmware" realtek-firmware))
(define-public rtl8192eu-linux-module
(let ((commit "3af9a868a0ca622d830966ac83aea2bf17cd0d65")
(revision "7"))
(let ((commit "a928f08c1dd4f9a1e84d85811a543e974551bc4f")
(revision "6"))
(package
(name "rtl8192eu-linux-module")
(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))
(sha256
(base32
"0d2qzf7xbipjdp1zm2ffqhnda8wasqriqnv6dkl0mhqn2f8za3i8"))))
"1q26kyic4glmgy0hbaq46r067m6cqf7d41chgivyxn8y32rf1fgc"))))
(build-system linux-module-build-system)
(arguments
`(#:make-flags
@ -937,8 +809,8 @@ network adapters.")
(license gpl2))))
(define-public rtl8821ce-linux-module
(let ((commit "f119398d868b1a3395f40c1df2e08b57b2c882cd")
(revision "12"))
(let ((commit "a478095a45d8aa957b45be4f9173c414efcacc6f")
(revision "10"))
(package
(name "rtl8821ce-linux-module")
(version (git-version "0.0.0" revision commit))
@ -951,7 +823,7 @@ network adapters.")
(file-name (git-file-name name version))
(sha256
(base32
"03336fzhcyfkxa32rx0calzlyzamvinql5f19wwm61aijrmlmyhi"))))
"00cn87jjrcxjqr3n8jv4w3n64zksmzz05fdr1gdvnbx1ab5739f6"))))
(build-system linux-module-build-system)
(arguments
(list #:make-flags
@ -980,8 +852,8 @@ network adapters.")
(license gpl2))))
(define-public rtl8821cu-linux-module
(let ((commit "4f6004af4c4171882f37e2e5d8fb3609fe260617")
(revision "2"))
(let ((commit "a41ef7cabd1aa36fa2b4eb63a71cf719bff11b72")
(revision "1"))
(package
(name "rtl8821cu-linux-module")
(version (git-version "0.0.0" revision commit))
@ -993,7 +865,7 @@ network adapters.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "09ig0rrkkn00i3d1n6p62n1610kcjgb2h9kbcqdsrmpnlnw5kfl2"))))
(base32 "0fnv4gm4adnf8gbjzc2lljh2a3i111159qira3w0qm1zhyqadaq0"))))
(build-system linux-module-build-system)
(arguments
(list
@ -1034,8 +906,8 @@ to disable the conflicting rtw88 driver:
"https://github.com/morrownr/8821cu-20210916/blob/main/LICENSE")))))
(define-public rtl8812au-aircrack-ng-linux-module
(let ((commit "63cf0b4584aa8878b0fe8ab38017f31c319bde3d")
(revision "13"))
(let ((commit "35308f4dd73e77fa572c48867cce737449dd8548")
(revision "11"))
(package
(inherit rtl8821ce-linux-module)
(name "rtl8812au-aircrack-ng-linux-module")
@ -1048,7 +920,7 @@ to disable the conflicting rtw88 driver:
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "103pn6qlj116dm244ygf1wic9dq2qn80lafiyxynyhpckkyhhfxl"))
(base32 "1clqrgmq5fhzybbiapmdbhg5qfx9k21r0hqa9pqmyinaqhvfnhfj"))
(modules '((guix build utils)))
(snippet
#~(begin
@ -1097,9 +969,9 @@ giving you trouble, you can try this module.")
(define (broadcom-sta-patch name commit hash)
(origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/rpmfusion/wl-kmod/"
(uri (string-append "https://raw.githubusercontent.com/NixOS/nixpkgs/"
commit
"wl-kmod-"
"/pkgs/os-specific/linux/broadcom-sta/"
name
".patch"))
(sha256
@ -1114,12 +986,12 @@ giving you trouble, you can try this module.")
(string-replace-substring broadcom-sta-version "." "_")
".tar.gz"))
(patches
;; Keep these in sync with the patches at
;; https://github.com/rpmfusion/wl-kmod
;; They seem to be good about keeping broadcom patches up to date so updating
;; Keep these in sync with the list at
;; https://github.com/NixOS/nixpkgs/tree/master/pkgs/os-specific/linux/broadcom-sta.
;; Nixpkgs is good about keeping broadcom patches up to date so updating
;; for a new kernel release should be as simple as chaging the commit to
;; the newest available and adding any new patches.
(let ((commit "cb67598cbf5d8c5260b750d6f7e5c6a6599b7b85"))
(let ((commit "355042e2ff5933b245e804c5eaff4ec3f340e71b"))
(list
(broadcom-sta-patch "i686-build-failure" commit "1522w2gb698svlkb2b4lijbd740agvs2ibpz4g0jlv8v31cybkf4")
(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 "pedantic-fix" commit "1kxmw1iyxnfwad75h981sak5qk16p81xy1f2qxss2d0v97vkfkl5")
(broadcom-sta-patch "null-pointer-fix" commit "15c2vxgf7v5wy4s8w9jk7irf3fxxghy05gxmav1ss73a2azajdx7")
(broadcom-sta-patch "gcc" commit "0jcqk2vapyy2pbsjv9n8b3qp6vqz17d6s07cr04cx7075q7yhz5h")
(broadcom-sta-patch "028_kernel_6.12_adaption" commit
"154dhlb3vyq8bnx7f371scsrhp9cszvmqlswqg5vi6gfgbqnrq08"))))
(broadcom-sta-patch "gcc" commit "0jcqk2vapyy2pbsjv9n8b3qp6vqz17d6s07cr04cx7075q7yhz5h"))))
(sha256
(base32
"1gj485qqr190idilacpxwgqyw21il03zph2rddizgj7fbd6pfyaz"))))
@ -1284,7 +1154,7 @@ chipsets from Broadcom:
(define-public facetimehd
(package
(name "facetimehd")
(version "0.6.8.2")
(version "0.6.8")
(source
(origin
(method git-fetch)
@ -1294,7 +1164,7 @@ chipsets from Broadcom:
(file-name (git-file-name "facetimehd" version))
(sha256
(base32
"1mk9zw100258khc3510jzgm8rci3l26ad0lx4fcqrd8ksq8k03kp"))))
"1g0ky9w5klkjndf30mjymq78r6yls9gri9x702nn8qkmgkjbqdsg"))))
(build-system linux-module-build-system)
(arguments
'(#:tests? #f))
@ -1318,7 +1188,7 @@ driver:
(define-public intel-microcode
(package
(name "intel-microcode")
(version "20241112")
(version "20231114")
(source
(origin
(method git-fetch)
@ -1329,7 +1199,7 @@ driver:
(commit (string-append "microcode-" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1i2pfw1vfnws76dpdik5x9kn3rysq8ggb4c16c2lmxzz4phyvxbn"))))
(base32 "07c7hkwpvb9056s73s55sg04cxr1d9n1sd9r1g7sm3gh70yc17ki"))))
(build-system copy-build-system)
(arguments
(list #:install-plan
@ -1353,12 +1223,12 @@ your CPU.")
(inherit linux-firmware)
(name "amd-microcode")
(arguments
(cons* #:license-file-regexp "LICENSE.amd-ucode"
(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
`(#:license-file-regexp "LICENSE.amd-ucode"
,@(substitute-keyword-arguments (package-arguments linux-firmware)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'select-firmware
#$(select-firmware "^amd-ucode/")))))))
,(select-firmware "^amd-ucode/")))))))
(synopsis "Processor microcode firmware for AMD CPUs")
(description "Updated system processor microcode for AMD x86-64
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
(package
(name "sof-firmware")
(version "2024.09")
(version "2.2.6")
(source
(origin
(method url-fetch)
(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
(base32
"0866rg40gzlal90ykgs0x622vy3qrw1s3g0qfv80i41mh6gxjiza"))))
"018901g5hshrqf2d0rn7yhzxcy4gmdc4v6167df880kdcfkw48lk"))))
(build-system copy-build-system)
(arguments
`(#:install-plan
'(("sof" "lib/firmware/intel/sof")
("sof-ace-tplg" "lib/firmware/intel/sof-ace-tplg")
("sof-ipc4" "lib/firmware/intel/sof-ipc4")
("sof-ipc4-tplg" "lib/firmware/intel/sof-ipc4-tplg")
("sof-tplg" "lib/firmware/intel/sof-tplg"))))
(list (list (string-append "sof-v" ,version) "lib/firmware/intel/sof")
(list (string-append "sof-tplg-v" ,version) "lib/firmware/intel/sof-tplg"))))
(home-page "https://www.sofproject.org")
(synopsis "Sound Open Firmware")
(description "This package contains Linux firmwares and topology files for

View File

@ -1,14 +1,16 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; 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)
#:use-module (ice-9 match)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages tls)
#:use-module (gnu packages node)
#:use-module (gnu packages lisp)
#:use-module (gnu packages lisp-xyz)
;; #:use-module (gnu packages lisp-check)
#:use-module (nongnu packages electron)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
@ -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"))))
(define-public sbcl-cl-electron
(let ((commit "f2245dc1450a6ad416984cf932be50e00957390a")
(revision "3"))
(let ((commit "458a60d8c9baae71906294ffae891c3d0686c672")
(revision "2"))
(package
(name "sbcl-cl-electron")
(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)))
(file-name (git-file-name "cl-electron" version))
(sha256
(base32 "0c18xbwwnjaiwzd01dprdrwzp27nwihaf7pmkql1f5yk43x3ajs0"))))
(base32 "1ya6y55kv0g3h19ifnmwbc752p00s9mj1b1n4ljw4n7ycxmdpb24"))))
(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-ppcre sbcl-bordeaux-threads sbcl-lparallel
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\""))))))))
sbcl-parenscript sbcl-bordeaux-threads))
(synopsis "Common Lisp interface to Electron")
(home-page "https://github.com/atlas-engineer/cl-electron")
(description "@command{cl-electron} is a binding to Electron for

View File

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

View File

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

View File

@ -34,9 +34,7 @@
("x86_64-linux" "linux_x86_64")
("i686-linux" "linux_i686")
("aarch64-linux" "linux_aarch64")
("armhf-linux" "linux_armv7l")
;; We need a default case
(_ "unsupported"))
("armhf-linux" "linux_armv7l"))
".tar.xz"))
(sha256
(base32
@ -44,9 +42,7 @@
("x86_64-linux" "1hd7fbk0px45fxhqa7nqcnij8ls2fhpjp60v840vy2zqs9fkcr52")
("i686-linux" "11vk32mxyda9xl08pp2ivd1vsahnw6w7d08in4syz6iannfwp19b")
("aarch64-linux" "0zpkaiwwxn8yh3s1d22qswshbgaxx5d8iy17hb3w256zgb722yjw")
("armhf-linux" "18174b1lgsk73gxhala471ppzbrpa1cs953b5par998yqgh74znk")
;; We need a valid base32 default case
(_ "0000000000000000000000000000000000000000000000000000"))))))
("armhf-linux" "18174b1lgsk73gxhala471ppzbrpa1cs953b5par998yqgh74znk"))))))
(build-system binary-build-system)
(arguments
(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
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2024 Karl Hallsby <karl@hallsby.com
(define-module (nongnu packages productivity)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
@ -21,23 +19,22 @@
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (nonguix build-system chromium-binary)
#:use-module ((nonguix licenses) #:prefix license:)
#:use-module ((guix licenses) #:prefix free-license:))
#:use-module ((nonguix licenses) #:prefix license:))
(define-public anytype
(package
(name "anytype")
(version "0.44.0")
(version "0.38")
(source
(origin
(method url-fetch)
(uri
(string-append "https://anytype-release.fra1.cdn.digitaloceanspaces.com/"
name "_" version "_amd64.deb"))
(string-append "https://download.anytype.io?action=download"
"&key=desktop&id=148487107"))
(file-name (string-append "anytype-" version ".deb"))
(sha256
(base32
"0djyvz6y4pk277xa2mc4w6w029i3f7zd2d1pniyrpayhnna6f670"))))
"1xc57ppk3l16mq2a53scf79m8hx43x21kac96ws66awlkz14swc7"))))
(build-system chromium-binary-build-system)
(arguments
(list
@ -55,23 +52,12 @@
"libGLESv2.so"
"libvk_swiftshader.so"
"libvulkan.so.1"
"resources/app.asar.unpacked/node_modules/keytar/build/Release/keytar.node"
"resources/app.asar.unpacked/node_modules/keytar/build/Release/obj.target/keytar.node"))
"resources/app.asar.unpacked/node_modules/keytar/build/Release/keytar.node"))
#:install-plan
#~'(("opt/" "/share")
("usr/share/" "/share"))
#:phases
#~(modify-phases %standard-phases
(add-after 'binary-unpack '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
(lambda _
(delete-file
@ -119,118 +105,3 @@ synchronization.")
(home-page "https://anytype.io")
(license (license:nonfree
"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
;;; 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)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages video)
#:use-module (guix build utils)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (guix utils)
#: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))))
#:use-module ((guix licenses) #:prefix license:))
(define-public gmmlib
(package
(name "gmmlib")
(version "22.3.19")
(version "22.3.9")
(source (origin
(method git-fetch)
(uri (git-reference
@ -57,7 +24,7 @@
(file-name (git-file-name name version))
(sha256
(base32
"0p3wp6xcvpb4jzw4fsf6554qy91iblmq9y50ph3iy29m19q6nznb"))))
"0m88lxlqqs5wdk4icf2ahbigr0q87j1c0damq7q0r55h72pf6zyv"))))
(build-system cmake-build-system)
(arguments
;; Tests are run as part of the normal build step
@ -73,7 +40,7 @@ for VAAPI.")
(define-public intel-media-driver
(package
(name "intel-media-driver")
(version "24.1.5")
(version "23.3.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -82,7 +49,7 @@ for VAAPI.")
(file-name (git-file-name name version))
(sha256
(base32
"1jm4imld48scj0j499wq5zbdjv4gg7hg2sawljqnjvy09dmp09bs"))))
"1zh6zgfyp14zlnd6jvhqz9q5rlyk7cb3nam791slh0h7r5f0iimm"))))
(build-system cmake-build-system)
(inputs (list libva gmmlib))
(native-inputs (list pkg-config))
@ -125,110 +92,3 @@ graphics hardware.")
(package-description intel-media-driver)
" This build of intel-media-driver includes nonfree blobs to fully enable the
video decode capabilities of supported Intel GPUs."))))
(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
(package
(name "zerotier")
(version "1.12.2")
(version "1.8.4")
(source (origin
(method git-fetch)
(uri (git-reference
@ -21,17 +21,16 @@
(file-name (git-file-name name version))
(sha256
(base32
"0p5rpvh137gf5y9ylip7kxfl4argv34sr4wiiygvfk670rifnk57"))))
"101b1k9f3cpbgj0l87ya1cbqs9dv0qiayjap4m29fxyjra8hbkb8"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags (list "ZT_SSO_SUPPORTED=0") ; We don't need SSO/OIDC
#:phases
`(#:phases
(modify-phases %standard-phases
;; There is no ./configure
(delete 'configure)
(replace 'check
(lambda* (#:key make-flags #:allow-other-keys)
(apply invoke "make" "selftest" make-flags)
(lambda _
(invoke "make" "selftest")
(invoke "./zerotier-selftest")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)

View File

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

View File

@ -1,15 +1,15 @@
;;; 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)
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module (gnu packages)
#:use-module (gnu packages linux)
#:use-module (gnu services)
#:use-module (gnu services base)
#:use-module (gnu services linux)
#:use-module (gnu services shepherd)
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module (nongnu packages nvidia)
#:export (nvidia-configuration
nvidia-configuration?
@ -19,32 +19,24 @@
(define-record-type* <nvidia-configuration>
nvidia-configuration make-nvidia-configuration
nvidia-configuration?
(driver nvidia-configuration-driver
(default nvda)) ; file-like
(firmware nvidia-configuration-firmware
(default nvidia-firmware)) ; file-like
(module nvidia-configuration-module
(default nvidia-module))) ; file-like
(nvidia-driver nvidia-configuration-nvidia-driver
(default (list nvidia-driver))) ; list of file-like
(nvidia-firmware nvidia-configuration-nvidia-firmware
(default (list nvidia-firmware))) ; list of file-like
(nvidia-module nvidia-configuration-nvidia-module
(default (list nvidia-module))) ; list of file-like
(modules nvidia-configuration-modules
(default (list "nvidia-uvm")))) ; list of string
(define (nvidia-shepherd-service config)
(let* ((nvidia-driver (nvidia-configuration-driver config))
(nvidia-smi (file-append nvidia-driver "/bin/nvidia-smi")))
(list (shepherd-service
(documentation "Prepare system environment for NVIDIA driver.")
(documentation "Unload nvidia-uvm module on powering off.")
(provision '(nvidia))
(requirement '(udev))
(one-shot? #t)
(modules '(((guix build utils) #:select (invoke/quiet))
((rnrs io ports) #:select (get-line))))
(start
#~(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)))))))))))
(requirement '(user-processes))
(start #~(const #t))
(stop #~(lambda _
(let ((rmmod #$(file-append kmod "/bin/rmmod")))
(zero? (system* rmmod "nvidia-uvm"))))))))
(define nvidia-service-type
(service-type
@ -52,13 +44,13 @@
(extensions
(list (service-extension shepherd-root-service-type
nvidia-shepherd-service)
(service-extension profile-service-type
(compose list nvidia-configuration-driver))
(service-extension udev-service-type
(compose list nvidia-configuration-driver))
nvidia-configuration-nvidia-driver)
(service-extension firmware-service-type
(compose list nvidia-configuration-firmware))
nvidia-configuration-nvidia-firmware)
(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))
(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
;;; Copyright © 2020 Alexey Abramov <levenson@mmer.org>
;;; Copyright © 2025 James Kalyan <mjkalyan@proton.me>
(define-module (nongnu services vpn)
#:use-module (guix deprecation)
#:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module (nongnu packages vpn)
#:export (zerotier-service-type
zerotier-one-service))
#:export (zerotier-one-service))
(define %zerotier-action-join
(shepherd-action
@ -50,18 +47,12 @@
(list (string-append #$zerotier "/sbin/zerotier-one"))))
(stop #~(make-kill-destructor))))))
(define zerotier-service-type
(service-type (name 'zerotier)
(define zerotier-one-service-type
(service-type (name 'zerotier-one)
(description "ZeroTier One daemon.")
(extensions
(list (service-extension shepherd-root-service-type
zerotier-one-shepherd-service)))
(default-value '())))
zerotier-one-shepherd-service)))))
(define-deprecated/alias
zerotier-one-service-type
zerotier-service-type)
(define-deprecated (zerotier-one-service #:key (config '()))
zerotier-service-type
(define* (zerotier-one-service #:key (config (list)))
(service zerotier-one-service-type config))

View File

@ -2,46 +2,20 @@
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; 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:
;; $ guix system image --image-type=iso9660 nongnu/system/install.scm
;; $ guix system disk-image nongnu/system/install.scm
(define-module (nongnu system install)
#:use-module (guix channels)
#:use-module (guix gexp)
#:use-module (gnu packages curl)
#:use-module (gnu packages package-management)
#:use-module (gnu packages version-control)
#:use-module (gnu packages vim)
#:use-module (gnu packages zile)
#:use-module (gnu services)
#:use-module (gnu services base)
#:use-module (gnu system)
#:use-module (gnu system install)
#:use-module (nongnu packages linux)
#: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
(operating-system
(inherit installation-os)
@ -53,19 +27,6 @@
git
neovim
zile)
(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)))))))
(operating-system-packages installation-os)))))
installation-os-nonfree

View File

@ -41,11 +41,7 @@
;; Do not use `@' to avoid introducing circular dependencies.
(let ((module (resolve-interface '(gnu packages elf))))
;; Use the older 0.16 version due to an upstream bug which can segfault
;; 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)))
(module-ref module 'patchelf)))
(define (default-glibc)
"Return the default glibc package."

View File

@ -54,12 +54,7 @@
#~(let ((patchelf-inputs
(list #$@(map car inputs))))
(map (lambda (file)
;; Either an entry in WRAPPER-PLAN is just a string which can be
;; 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))))
(cons file (list patchelf-inputs)))
#$wrapper-plan)))
(define* (lower name
@ -141,7 +136,7 @@
(build chromium-binary-build)
(arguments (append
(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
#:key
@ -168,13 +163,7 @@
(substitutable? #t)
allowed-references
disallowed-references)
"Build SOURCE using binary-build-system. WRAPPER-PLAN is a list of strings for
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 '()."
"Build SOURCE using binary-build-system."
(define builder
(with-imported-modules imported-modules
#~(begin

View File

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

View File

@ -4,6 +4,7 @@
(define-module (nonguix build chromium-binary-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module ((nonguix build binary-build-system) #:prefix binary:)
#:use-module (nonguix build utils)
#:use-module (guix build utils)
#:use-module (ice-9 ftw)
#:use-module (ice-9 match)
@ -23,9 +24,9 @@
(nss (assoc-ref inputs "nss"))
(wrap-inputs (map cdr inputs))
(lib-directories
(search-path-as-list '("lib") wrap-inputs))
(build-paths-from-inputs '("lib") wrap-inputs))
(bin-directories
(search-path-as-list
(build-paths-from-inputs
'("bin" "sbin" "libexec")
wrap-inputs)))
(for-each
@ -52,12 +53,7 @@
(list
(string-append nss "/lib/nss")
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
(lambda (exe) (string-append bin "/" exe))
(filter

View File

@ -97,3 +97,23 @@ contents:
(call-with-output-file result
(lambda (port)
(for-each (cut dump <> port) files))))
(define build-paths-for-input
(lambda (dirs input)
(filter-map
(lambda (sub-directory)
(let ((directory
(string-append
input "/" sub-directory)))
(and
(directory-exists? directory)
directory)))
dirs)))
(define build-paths-from-inputs
(lambda (dirs inputs)
(reduce append '()
(map
(lambda (input)
(build-paths-for-input dirs input))
inputs))))

View File

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

View File

@ -4,14 +4,11 @@
(define-module (nonguix utils)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-43)
#:use-module (ice-9 match)
#:use-module (ice-9 textual-ports)
#:use-module (ice-9 popen)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (gnu services)
#:export (with-transformation))
#:use-module (guix packages))
(define-public (to32 package64)
"Build package for i686-linux.
@ -25,45 +22,3 @@ Only x86_64-linux and i686-linux are supported.
(arguments `(#:system "i686-linux"
,@(package-arguments 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)))