Compare commits

..

1 Commits

Author SHA1 Message Date
John Kehayias
2fdfb97f4e
nongnu: Add heroic.
* nongnu/packages/steam-client.scm: Rename to ...
* nongnu/packages/game-client.scm: ... this.
(heroic-client, heroic-extra-client-libs, heroic-container,
heroic-nvidia-container, heroic, heroic-nvidia): New variables.
* nonguix/multi-arch-container.scm (make-container-wrapper): Preserve "^SSL_"
for heroic to use curl.
(make-internal-script): Add symlink for "/usrshare/glib-2.0".
2023-10-10 13:43:02 -04:00
51 changed files with 1519 additions and 4191 deletions

View File

@ -1,5 +1,4 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
;; Per-directory local variables for GNU Emacs 23 and later.
((nil
@ -10,17 +9,11 @@
;; For use with 'bug-reference-prog-mode'.
(bug-reference-url-format . "https://gitlab.com/nonguix/nonguix/issues/%s")
(bug-reference-bug-regexp
. "\\(#\\([0-9]+\\)\\)")
(geiser-insert-actual-lambda . nil)))
. "\\(#\\([0-9]+\\)\\)")))
(c-mode . ((c-file-style . "gnu")))
(scheme-mode
.
;; Note this next setting will use the current guix as the geiser binary;
;; one working with a local guix checkout may want something different.
((geiser-guile-binary . ("guix" "repl"))
(indent-tabs-mode . nil)
((indent-tabs-mode . nil)
(eval . (put 'eval-when 'scheme-indent-function 1))
(eval . (put 'call-with-prompt 'scheme-indent-function 1))
(eval . (put 'test-assert 'scheme-indent-function 1))

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"))))

View File

@ -94,20 +94,19 @@ your configuration.
** Installation image
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:
(e.g. unsupported wifi). You can generate an installation image running the
nonfree Linux kernel and nonfree firmware 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 +123,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 +217,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 +256,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.

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,44 +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)"))
(body
(en "The nonguix container has a new environment variable
@code{GUIX_SANDBOX_EXTRA_SHARES} which is a @code{:} delimited list of
directories to share with the container. These directories will be available
at the same path as the host. For instance, you can set this to another drive
you want to have a Steam library in by either setting this variable in your
environment or launching Steam with:
@example
GUIX_SANDBOX_EXTRA_SHARES=/some/other/drive steam
@end example
This should allow you to select @code{/some/other/drive} in Steam for a game
library. This is an experimental feature and just provides a basic way to add
shares to the container, so please test and report any difficulties or
suggestions to improve.")))
(entry (commit "1591c3d1d10b2884da29ab7d1252304f2ce1514b")
(title
(en "(nongnu packages steam-client) module renamed"))
(body
(en "The (nongnu packages steam-client) module has been renamed to (nongnu packages
game-client). This is to better reflect the contents with the addition of the
Heroic client in a following commit.")))
(entry (commit "9456c59cfa580399ab450ca0057321e2d81f3319")
(title
(en "Linux LTS kernel updated to 6.1")

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.1.1")
(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"))))
"1ai58fsivb8al1279bayl800qavy0kfj40rjhf87g902ap3p4bhh"))))
(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

@ -15,7 +15,6 @@
#:use-module (gnu packages linux)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages photo)
#:use-module (gnu packages qt)
#:use-module (gnu packages video)
#:use-module (gnu packages wget)
#:use-module (gnu packages xiph)
@ -56,19 +55,24 @@
'("chrome"
"chrome-sandbox"
"chrome_crashpad_handler"
"nacl_helper"
"libEGL.so"
"libGLESv2.so"
"liboptimization_guide_internal.so"
"libqt5_shim.so"
"libqt6_shim.so"
"libvk_swiftshader.so"
"libvulkan.so.1"
"WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so")))
"libGLESv2.so")))
#:install-plan
#~'(("opt/" "/share")
("usr/share/" "/share"))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'unpack-deb
(lambda* (#:key inputs #:allow-other-keys)
(invoke "ar" "x" #$source)
(invoke "rm" "-v" "control.tar.xz"
"debian-binary"
(string-append "google-chrome-" #$repo "_"
#$version
"-1_amd64.deb"))
(invoke "tar" "xf" "data.tar.xz")
(invoke "rm" "-vrf" "data.tar.xz" "etc")))
(add-before 'install 'patch-assets
;; Many thanks to
;; https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/browsers/google-chrome/default.nix
@ -115,13 +119,13 @@
(symlink chrome-target exe)
(wrap-program exe
'("CHROME_WRAPPER" = (#$appname)))))))))
(native-inputs (list tar))
(inputs
(list bzip2
curl
flac
font-liberation
gdk-pixbuf
gtk
harfbuzz
libexif
libglvnd
@ -131,8 +135,6 @@
opus
pciutils
pipewire
qtbase-5
qtbase
snappy
util-linux
xdg-utils
@ -144,10 +146,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" "116.0.5845.110" "08hqymyzah1wiyag56iivvydy1zph4jzicjjjyh6br07lpfps7nk"))
(define-public google-chrome-beta
(make-google-chrome "beta" "132.0.6834.32" "0ncjyg3vxsjspb0i1nsflcry9sfsffnqiwa2y7cgh46xamdq6f2c"))
(make-google-chrome "beta" "116.0.5845.50" "047wsszg4c23vxq93a335iymiqpy7lw5izzz4f0zk1a4sijafd59"))
(define-public google-chrome-unstable
(make-google-chrome "unstable" "133.0.6847.2" "1z15maqs1g8lhi7dm9hn4r272nl0g967a11igmw2sj14zl3n9j6g"))
(make-google-chrome "unstable" "119.0.6034.6" "156rsklyi1z014pyximwyjsnc2rhdky1kck9g63738vnhcv398b0"))

View File

@ -26,15 +26,15 @@
#:use-module (srfi srfi-1))
(define-public chromium-embedded-framework
(let ((git-revision "5053a95")
(chromium-version "117.0.5938.150")
(let ((git-revision "d0bbcbb")
(chromium-version "103.0.5060.114")
(arch (match (or (%current-target-system) (%current-system))
("aarch64-linux" "linuxarm64")
("armhf-linux" "linuxarm")
(_ "linux64"))))
(package
(name "chromium-embedded-framework")
(version "117.2.4")
(version "103.0.9")
(source (origin
(method url-fetch)
(uri (string-append
@ -45,7 +45,7 @@
"_" arch "_minimal.tar.bz2"))
(sha256
(base32
"0vzzwq1k6bv9d209yg3samvfnfwj7s58y9r3p3pd98wxa9iyzf4j"))))
"143x0jmasl4z16bkxlrbz874chd9x9xpc5qylb9h7j80gfcrzlsi"))))
(build-system binary-build-system)
(arguments
`(#:patchelf-plan

View File

@ -2,7 +2,6 @@
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (nongnu packages clojure)
#:use-module (gnu packages compression)
@ -12,7 +11,6 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (nonguix build-system binary)
@ -87,7 +85,7 @@ lets you focus on your code.")
(define-public clj-kondo
(package
(name "clj-kondo")
(version "2025.01.16")
(version "2023.01.20")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append
@ -95,87 +93,26 @@ lets you focus on your code.")
version "/clj-kondo-" version "-linux-amd64.zip"))
(sha256
(base32
"0w9a2lz9xr5446bav2fp70jfinlm9zrl0iv9s0h0b6jczqx2f977"))))
"0i91qaqjnrg7ad0rs1r4rjwi77pr16dhck9bflb4kiyggcbs4dds"))))
(build-system binary-build-system)
(arguments
(list #:patchelf-plan `'(("clj-kondo" ("gcc" "zlib")))
#:install-plan `'(("./clj-kondo" "/bin/"))
#:phases #~(modify-phases %standard-phases
`(#:patchelf-plan
'(("clj-kondo" ("gcc:lib" "zlib")))
#:install-plan
'(("clj-kondo" "/bin/"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chmod
(lambda _
(chmod "clj-kondo" #o755))))))
(native-inputs
(list unzip))
`(("unzip" ,unzip)))
(inputs
(list `(,gcc "lib")
zlib))
`(("gcc:lib" ,gcc "lib")
("zlib" ,zlib)))
(supported-systems '("x86_64-linux"))
(home-page "https://github.com/clj-kondo/clj-kondo")
(synopsis "Linter for Clojure 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)
@ -8,45 +8,33 @@
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module ((guix licenses) :prefix license:)
#:use-module (nonguix build-system chromium-binary)
#:use-module (ice-9 match))
#:use-module (nonguix build-system chromium-binary))
(define-public vscodium
(package
(name "vscodium")
(version "1.92.1.24225")
(version "1.81.1.23222")
(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
(string-append
"https://github.com/VSCodium/vscodium/releases/download/" version
"/VSCodium-linux-" arch "-" version ".tar.gz"))
"/VSCodium-linux-x64-" version ".tar.gz"))
(sha256
(base32 hash)))))
(base32 "0wx53ajjwil82s3nl6wvpdf01mh33yqasf1ia54s1rfzz10fa1m6"))))
(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 +60,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,8 +71,15 @@
#:startup-w-m-class "Code"
#:comment
'(("en" "Code Editing. Redefined.")
(#f "Code Editing. Redefined.")))))))))
(supported-systems '("armhf-linux" "aarch64-linux" "x86_64-linux"))
(#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"))
":")))))))))
(native-inputs
(list tar))
(inputs

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 "25.3.1")
(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 "0x6asi81gwxx33mhpm74l31xzf1lbzbf7s97fay0l35fg73kkw9n"))))
(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

@ -35,22 +35,28 @@
#~'("lib/LycheeSlicer/lycheeslicer")
#:phases
#~(modify-phases %standard-phases
(add-after 'binary-unpack 'setup-cwd
(replace 'unpack
(lambda _
(invoke "ar" "x" #$source)
(invoke "tar" "xvf" "data.tar.xz")
;; Use the more standard lib directory for everything.
(rename-file "opt/" "lib")
(mkdir-p "share")
(copy-recursively "usr/share" "share")
;; Remove unneeded files.
(delete-file-recursively "usr")))
(add-after 'setup-cwd 'fix-desktop-file
(delete-file-recursively "usr")
(delete-file "control.tar.gz")
(delete-file "data.tar.xz")
(delete-file "debian-binary")))
(add-after 'unpack 'fix-desktop-file
(lambda _
;; Fix the .desktop file binary location.
(substitute* '("share/applications/lycheeslicer.desktop")
(("/opt/LycheeSlicer")
(string-append #$output "/lib/LycheeSlicer")))))
(add-before 'install-wrapper 'symlink-binary-file
(add-before 'install-wrapper 'symlink-binary-file-and-cleanup
(lambda _
(delete-file (string-append #$output "/environment-variables"))
(mkdir-p (string-append #$output "/bin"))
(symlink (string-append #$output "/lib/LycheeSlicer/lycheeslicer")
(string-append #$output "/bin/lycheeslicer"))))
@ -62,6 +68,7 @@
(list
(string-append #$output "/lib/LycheeSlicer"))
":")))))))))
(native-inputs (list tar))
(inputs
(list libxscrnsaver))
(home-page "https://mango3d.io")

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

@ -4,10 +4,9 @@
;;; Copyright © 2021 pineapples
;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
;;; Copyright © 2021 Kozo <kozodev@runbox.com>
;;; Copyright © 2021, 2022, 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2021, 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2023 Elijah Malaby
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
(define-module (nongnu packages game-client)
#:use-module ((guix licenses) #:prefix license:)
@ -55,10 +54,10 @@
#:use-module (nonguix multiarch-container)
#:use-module (nonguix utils))
(define heroic-client
(define-public heroic-client
(package
(name "heroic-client")
(version "2.15.2")
(version "2.9.1")
(source
(origin
(method url-fetch)
@ -67,37 +66,54 @@
version "/heroic_" version "_amd64.deb"))
(sha256
(base32
"1bzdb9nqmr9w092c22n57ldykm00n98d78rhqzypf430lrl0kzcj"))))
"128x6bqp85nib7v6ldnyy39qrxppqjgwmfvi59lbf0jr5pa546jg"))))
(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
(replace 'unpack
(lambda _
(invoke "ar" "x" #$source)
(invoke "tar" "xvf" "data.tar.xz")
(copy-recursively "usr/" ".")
;; Use the more standard lib directory for everything.
(rename-file "opt/" "lib")
;; Remove unneeded files.
(delete-file-recursively "usr")))
;; Fix the .desktop file "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)
(add-after 'install 'symlink-binary-file
(delete-file-recursively "usr")
(delete-file "control.tar.gz")
(delete-file "data.tar.xz")
(delete-file "debian-binary")
;; Fix the .desktop file binary location.
(substitute* '("share/applications/heroic.desktop")
(("/opt/Heroic/")
(string-append #$output "/bin/")))))
(add-after 'install 'symlink-binary-file-and-cleanup
(lambda _
(delete-file (string-append #$output "/environment-variables"))
(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"))
":")))))))))
(native-inputs (list tar))
(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.")
@ -106,7 +122,7 @@ implementation with gogdl and Amazon Games using Nile.")
(define steam-client
(package
(name "steam-client")
(version "1.0.0.78")
(version "1.0.0.75")
(source
(origin
(method url-fetch)
@ -114,7 +130,7 @@ implementation with gogdl and Amazon Games using Nile.")
version ".tar.gz"))
(sha256
(base32
"0390qy8vy7sx35hxl51yrbk6mvdz1vvpy96v07qva4bjbmsmjhhh"))
"19rn29slsxv7b5fisr1jzn79bskzifbj5hmxqn2436ivwfjna9g5"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(arguments
@ -131,6 +147,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 +163,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"))
@ -158,9 +174,30 @@ implementation with gogdl and Amazon Games using Nile.")
(description "Steam is a digital software distribution platform created by Valve.")
(license (license:nonfree "file:///share/doc/steam/steam_subscriber_agreement.txt"))))
;; After guix commit to add a replacement for libx11 (security fixes),
;; 5ff0c8997a2ddf71af477883584a5f9ccd9b757f, a profile collision happens with
;; the propagated libx11 (now grafted) from mesa and its propagated-input
;; libxdamage. See previous upstream report (when this occurred for expat and
;; fontconfig) at <https://issues.guix.gnu.org/53406>. So we define explicit
;; replacement packages to workaround this issue.
;; TODO: remove once upstream bug is fixed or libx11 is ungrafted.
(define libxdamage-fixed
(package
(inherit libxdamage)
(propagated-inputs
(modify-inputs (package-propagated-inputs libxdamage)
(replace "libx11" libx11-fixed)))))
(define mesa-fixed
(package
(inherit mesa)
(propagated-inputs
(modify-inputs (package-propagated-inputs mesa)
(replace "libx11" libx11-fixed)
(replace "libxdamage" libxdamage-fixed)))))
(define steam-client-libs
`(("at-spi2-core" ,at-spi2-core) ; Required (often) for SteamVR interface.
("bash" ,bash) ; Required for steam startup.
`(("bash" ,bash) ; Required for steam startup.
("coreutils" ,coreutils)
("diffutils" ,diffutils)
("dbus-glib" ,dbus-glib) ; Required for steam browser.
@ -169,18 +206,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.
@ -190,7 +219,9 @@ implementation with gogdl and Amazon Games using Nile.")
("libvdpau-va-gl" ,libvdpau-va-gl) ; Additional VDPAU support.
("llvm" ,llvm-for-mesa) ; Required for mesa.
("lsof" ,lsof) ; Required for some friend's list actions.
("mesa" ,mesa) ; Required for steam startup.
;; TODO: Set back to mesa once libx11 is ungrafted upstream or once
;; <https://issues.guix.gnu.org/53406> is fixed.
("mesa" ,mesa-fixed) ; Required for steam startup.
("nss-certs" ,nss-certs) ; Required for steam login.
("pciutils" ,pciutils) ; Tries to run lspci at steam startup.
("procps" ,procps)
@ -216,42 +247,25 @@ 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).
("gtk+" ,gtk+))) ; Required for Heroic interface (gtk filechooser schema).
(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,13 +274,18 @@ 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"))
(link-files '("share/applications/steam.desktop"
"share/applications/steam-asound32.desktop"))
(description "Steam is a digital software distribution platform created by
Valve. This package provides a script for launching Steam in a Guix container
which will use the directory @file{$HOME/.local/share/guix-sandbox-home} where
@ -276,18 +295,8 @@ all games will be installed.")))
(nonguix-container
(inherit steam-container)
(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))
@ -299,22 +308,22 @@ all games will be installed.")))
(run "/bin/heroic")
(ld.so.conf steam-ld.so.conf)
(ld.so.cache steam-ld.so.cache)
;; TODO: Probably can remove some of the packages from these lists, at
;; least changing the client libraries as Heroic is rather different from
;; Steam. However, a good number will be needed to run games anyway. A
;; better separation and testing in Steam as well would be helpful to
;; differentiate what packages are needed for what in general. For now,
;; this is easier and works.
(union64
(fhs-union `(,@heroic-extra-client-libs
,@steam-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.
;; Don't include heroic-client-libs as they are not needed in 32-bit and
;; cause profile collisions with gtk+ and the libx11 graft (which is deep
;; and wide spread in the dependency tree).
(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"))
(link-files '("share/applications/heroic.desktop"))
(description "Heroic is an Open Source Game Launcher. Right now it supports launching
games from the Epic Games Store using Legendary, GOG Games using our custom
implementation with gogdl and Amazon Games using Nile. This package provides
@ -326,17 +335,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-steam-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.11")
(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 "0mcwl6vfyy91sq1816j4v3lhf06dz1rr58hsq8hqx217z102s86d"))))
(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))))))
@ -145,17 +145,17 @@ view logs.")
such as Kubernetes (or OpenShift).")
(license license:expat)))
(define-public helm-kubernetes
(define-public helm
(package
(name "helm-kubernetes")
(version "3.15.4")
(name "helm")
(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, 2021, 2022 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>
@ -23,20 +23,13 @@
;;; Copyright © 2023 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2023 Adam Kandur <rndd@tuta.io>
;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space>
;;; Copyright © 2023 Ada Stevenson <adanskana@gmail.com>
;;; Copyright © 2023 Tomas Volf <~@wolfsden.cz>
;;; Copyright © 2023 PRESFIL <presfil@protonmail.com>
;;; 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)
@ -52,48 +45,22 @@
#:use-module (srfi srfi-1)
#:export (corrupt-linux))
(define %default-extra-linux-options
(@@ (gnu packages linux) %default-extra-linux-options))
(define config->string
(@@ (gnu packages linux) config->string))
(define (linux-url version)
"Return a URL for Linux VERSION."
(string-append "mirror://kernel.org"
"/linux/kernel/v" (version-major version) ".x"
"/linux-" version ".tar.xz"))
;;; If you are corrupting the kernel on your own, consider using output of
;;; this procedure as a base for your options:
;;; (corrupt-linux linux-libre-lts
;;; #:configs (cons* "CONFIG_FOO=y"
;;; (nonguix-extra-linux-options linux-libre-lts)
(define-public (nonguix-extra-linux-options linux-or-version)
"Return a list containing additional options that nonguix sets by default
for a corrupted linux package of specified version. linux-or-version can be
some freedo package or an output of package-version procedure."
(define linux-version
(if (package? linux-or-version)
(package-version linux-or-version)
linux-or-version))
(reverse (fold (lambda (opt opts)
(if (version>=? linux-version (car opt))
(cons* (cdr opt) opts)
opts))
'()
;; List of additional options for nonguix corrupted linux.
;; Each member is a pair of a minimal version (>=) and the
;; option itself. Option has to be in a format suitable for
;; (@ (guix build kconfig) modify-defconfig) procedure.
;;
;; Do note that this list is intended for enabling use of
;; hardware requiring non-free firmware. If a configuration
;; option does work under linux-libre, it should go into Guix
;; actual.
'(
;; Driver for MediaTek mt7921e wireless chipset
("5.15" . "CONFIG_MT7921E=m")))))
(define* (corrupt-linux freedo
#:key
(name "linux")
(configs (nonguix-extra-linux-options freedo))
(configs '())
(defconfig #f))
;; TODO: This very directly depends on guix internals.
@ -122,7 +89,6 @@ some freedo package or an output of package-version procedure."
(inherit
(customize-linux
#:name name
#:linux freedo
#:source (origin
(method url-fetch)
(uri url)
@ -136,14 +102,11 @@ 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.5
(corrupt-linux linux-libre-6.5))
(define-public linux-6.12
(corrupt-linux linux-libre-6.12))
(define-public linux-6.6
(corrupt-linux linux-libre-6.6))
(define-public linux-6.4
(corrupt-linux linux-libre-6.4))
(define-public linux-6.1
(corrupt-linux linux-libre-6.1))
@ -157,9 +120,15 @@ 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-4.14
(corrupt-linux linux-libre-4.14))
(define-public linux linux-6.4)
;; 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"))
@ -175,79 +144,41 @@ on hardware which requires nonfree software to function."))))
;;; Linux-XanMod
;;;
(define* (make-linux-xanmod-source version xanmod-revision
#:key xanmod-branch kernel-hash xanmod-hash)
(define %upstream-linux-source
(@@ (gnu packages linux) %upstream-linux-source))
(define kernel-source
(%upstream-linux-source (version-major+minor version) kernel-hash))
(define xanmod-patch
(define (make-linux-xanmod-source version xanmod-revision hash-string)
(origin
(method url-fetch)
(uri (string-append
"mirror://sourceforge/xanmod/releases/" xanmod-branch "/"
version "-" xanmod-revision "/patch-"
version "-" xanmod-revision ".xz"))
(sha256 xanmod-hash)))
(origin
(inherit kernel-source)
(modules '((guix build utils)))
(snippet
#~(begin
(let* ((xz-name (basename #+xanmod-patch))
(patch-xz-name (string-append (string-drop-right xz-name 3)
".patch.xz"))
(patch-name (string-drop-right patch-xz-name 3)))
(copy-file #+xanmod-patch patch-xz-name)
(invoke #+(file-append xz "/bin/unxz") patch-xz-name)
(invoke #+(file-append patch "/bin/patch")
"--force" "--no-backup-if-mismatch"
#+@(origin-patch-flags kernel-source)
"--input" patch-name)
(for-each delete-file
(list patch-name
;; EXTRAVERSION is used instead.
"localversion")))))))
(uri (string-append "https://gitlab.com/xanmod/linux/-/archive/"
version "-" xanmod-revision ".tar.bz2"))
(sha256 hash-string)))
(define* (make-linux-xanmod version xanmod-revision source
#:key
(name "linux-xanmod")
(xanmod-defconfig "config_x86-64-v1"))
(define %default-extra-linux-options
((@@ (gnu packages linux) default-extra-linux-options) version))
(define config->string
(@@ (gnu packages linux) config->string))
(define base-kernel
(customize-linux
#:name name
(let ((defconfig xanmod-defconfig) ;to be used in phases.
(base (customize-linux #:name name
#:source source
#:defconfig xanmod-defconfig
;; EXTRAVERSION is used instead.
#:configs (config->string
'(("CONFIG_LOCALVERSION" . "")))
#:extra-version xanmod-revision))
#:extra-version xanmod-revision)))
(package
(inherit base-kernel)
(inherit base)
(version version)
(arguments
(substitute-keyword-arguments (package-arguments base-kernel)
(substitute-keyword-arguments (package-arguments base)
((#:phases phases)
#~(modify-phases #$phases
;; Since `customize-linux' replaces the configure phase, we add
;; XanMod defconfig beforehand to ensure compatibility of the
;; resulting package with `customize-linux'.
;; EXTRAVERSION is used instead.
(add-after 'unpack 'remove-localversion
(lambda _
(when (file-exists? "localversion")
(delete-file "localversion"))))
(add-before 'configure 'add-xanmod-defconfig
(lambda _
(rename-file
(string-append "CONFIGS/xanmod/gcc/" #$xanmod-defconfig)
(string-append "CONFIGS/xanmod/gcc/" #$defconfig)
".config")
;; Adapted from `make-linux-libre*'.
@ -255,49 +186,47 @@ on hardware which requires nonfree software to function."))))
(let ((port (open-file ".config" "a"))
(extra-configuration
#$(config->string
(append %default-extra-linux-options
;; NOTE: These are configs expected by Guix
;; but missing from XanMod defconfig.
'(("CONFIG_BLK_DEV_NVME" . #t))))))
;; FIXME: There might be other support missing.
(append '(("CONFIG_BLK_DEV_NVME" . #t)
("CONFIG_CRYPTO_XTS" . m)
("CONFIG_VIRTIO_CONSOLE" . m))
%default-extra-linux-options))))
(display extra-configuration port)
(close-port port))
(invoke "make" "oldconfig")
(rename-file
".config"
(string-append "arch/x86/configs/" #$xanmod-defconfig))))))))
(string-append "arch/x86/configs/" #$defconfig))))))))
(native-inputs
(modify-inputs (package-native-inputs base-kernel)
(modify-inputs (package-native-inputs base)
;; cpio is needed for CONFIG_IKHEADERS.
(prepend cpio zstd)))
(append cpio zstd)))
(home-page "https://xanmod.org/")
(supported-systems '("x86_64-linux"))
(synopsis "Linux kernel distribution with custom settings and new features")
(synopsis
"Linux kernel distribution with custom settings and new features")
(description
"This package provides XanMod kernel, a general-purpose Linux kernel
distribution with custom settings and new features. It's built to provide a
stable, responsive and smooth desktop experience.")))
stable, responsive and smooth desktop experience."))))
;; Linux-XanMod sources
(define-public linux-xanmod-version "6.12.13")
(define-public linux-xanmod-version "6.4.3")
(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")))
(base32 "0z6f7lnwbw2y7wwfr253d6gg4kz0l62s71pj266hb9c0dj15xl0r")))
(define-public linux-xanmod-lts-version "6.6.72")
(define-public linux-xanmod-lts-version "6.1.38")
(define-public linux-xanmod-lts-revision "xanmod1")
(define-public linux-xanmod-lts-source
(make-linux-xanmod-source
linux-xanmod-lts-version
linux-xanmod-lts-revision
#:xanmod-branch "lts"
#:kernel-hash (base32 "1l2nisx9lf2vdgkq910n5ldbi8z25ky1zvl67zgwg2nxcdna09nr")
#:xanmod-hash (base32 "119jvwmxpjfpifg7mhqirjc1g1q769584hv2xc8wyg2iklhhs653")))
(base32 "0c56jmvzzn8jakxffifnrj6pixywrlcwq6sxriylqxfq96bb8can")))
;; Linux-XanMod packages
(define-public linux-xanmod
@ -318,44 +247,21 @@ stable, responsive and smooth desktop experience.")))
(define-public linux-firmware
(package
(name "linux-firmware")
(version "20250211")
(version "20230919")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/linux/kernel/firmware/"
"linux-firmware-" version ".tar.xz"))
(sha256
(base32
"0z998nxplnc22nbj3yzdyjjs433p92rzvq2x5i9rv0xzjxc39q9d"))))
"1bc4y0w2xa9r3wb7bprdmy6vqj7swxbc9p542zhc9bxx086xmylp"))))
(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)
(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))
(modify-phases %standard-phases
(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 +275,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 +309,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 +366,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 +542,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 +563,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 +584,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 +599,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 +700,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 "865656c3a1d1aee8c4ba459ce7608756d17c712f")
(revision "5"))
(package
(name "rtl8192eu-linux-module")
(version (git-version "0.0.0" revision commit))
@ -914,7 +714,7 @@ package contains nonfree firmware for the following chips:
(file-name (git-file-name name version))
(sha256
(base32
"0d2qzf7xbipjdp1zm2ffqhnda8wasqriqnv6dkl0mhqn2f8za3i8"))))
"08nq0wlrpzm8n2g14c4jlxs0crr6s5ls1n14bc17zmpy9vlarhfx"))))
(build-system linux-module-build-system)
(arguments
`(#:make-flags
@ -937,8 +737,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 +751,7 @@ network adapters.")
(file-name (git-file-name name version))
(sha256
(base32
"03336fzhcyfkxa32rx0calzlyzamvinql5f19wwm61aijrmlmyhi"))))
"00cn87jjrcxjqr3n8jv4w3n64zksmzz05fdr1gdvnbx1ab5739f6"))))
(build-system linux-module-build-system)
(arguments
(list #:make-flags
@ -979,63 +779,9 @@ network adapters.")
;; hal/rtl8821c/hal8821c_fw.c
(license gpl2))))
(define-public rtl8821cu-linux-module
(let ((commit "4f6004af4c4171882f37e2e5d8fb3609fe260617")
(revision "2"))
(package
(name "rtl8821cu-linux-module")
(version (git-version "0.0.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/morrownr/8821cu-20210916")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "09ig0rrkkn00i3d1n6p62n1610kcjgb2h9kbcqdsrmpnlnw5kfl2"))))
(build-system linux-module-build-system)
(arguments
(list
#:make-flags #~(list (string-append "CC="
#$(cc-for-target))
(string-append "KSRC="
(assoc-ref %build-inputs
"linux-module-builder")
"/lib/modules/build"))
#:phases #~(modify-phases %standard-phases
(replace 'build
(lambda* (#:key (make-flags '())
(parallel-build? #t) #:allow-other-keys)
(apply invoke "make"
`(,@(if parallel-build?
`("-j" ,(number->string (parallel-job-count)))
'()) ,@make-flags)))))
#:tests? #f))
(home-page "https://github.com/morrownr/8821cu-20210916")
(synopsis "Linux driver for Realtek USB WiFi adapters")
(description
"Linux driver for USB WiFi adapters that are based on the
Realtek RTL8811CU, RTL8821CU, RTL8821CUH and RTL8731AU chipsets.
To work, in addition to installing the driver, you need
to disable the conflicting rtw88 driver:
@example
(operating-system
;; ...
;; Blacklist conflicting kernel modules.
(kernel-arguments '(\"modprobe.blacklist=rtw88_8821cu\"))
(kernel-loadable-modules (list rtl8821cu-linux-module)))
@end example")
;; Rejected by Guix beause it contains a binary blob in:
;; hal/rtl8821c/hal8821c_fw.c
(license (nonfree
"https://github.com/morrownr/8821cu-20210916/blob/main/LICENSE")))))
(define-public rtl8812au-aircrack-ng-linux-module
(let ((commit "63cf0b4584aa8878b0fe8ab38017f31c319bde3d")
(revision "13"))
(let ((commit "35308f4dd73e77fa572c48867cce737449dd8548")
(revision "11"))
(package
(inherit rtl8821ce-linux-module)
(name "rtl8812au-aircrack-ng-linux-module")
@ -1048,7 +794,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
@ -1072,7 +818,7 @@ RTL8812AU, RTL8821AU, and RTL8814AU chips.")
(define-public r8168-linux-module
(package
(name "r8168-linux-module")
(version "8.052.01")
(version "8.051.02")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1081,9 +827,19 @@ RTL8812AU, RTL8821AU, and RTL8814AU chips.")
(file-name (git-file-name name version))
(sha256
(base32
"01mi7hh92nc7jaxkfrpz7j0ci78djrhgmq0im4k1270mwmvr0yzj"))))
"16mpr0np6xbmzdnwg4p3q6yli2gh032k98g4vplya33hrn50vh52"))))
(arguments
(list #:tests? #f))
(list #:tests? #f
#:phases #~(modify-phases %standard-phases
(add-after 'unpack 'enter-src-directory
(lambda _
(chdir "src")))
;; Needed to compile module for linux >= 6.1
(add-before 'build 'fix-build
(lambda _
(substitute* "r8168.h"
(("netif_napi_add\\(ndev, &priv->napi, function, weight\\)")
"netif_napi_add(ndev, &priv->napi, function)")))))))
(build-system linux-module-build-system)
(home-page "https://github.com/mtorromeo/r8168")
(synopsis "Linux driver for Realtek PCIe network adapters")
@ -1097,9 +853,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 +870,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 +893,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 +1038,7 @@ chipsets from Broadcom:
(define-public facetimehd
(package
(name "facetimehd")
(version "0.6.8.2")
(version "0.5.18")
(source
(origin
(method git-fetch)
@ -1294,7 +1048,7 @@ chipsets from Broadcom:
(file-name (git-file-name "facetimehd" version))
(sha256
(base32
"1mk9zw100258khc3510jzgm8rci3l26ad0lx4fcqrd8ksq8k03kp"))))
"1598pzjnbij3knvqmk2yslj26wmqiqjqgqgcw9p9jx6z7bdjvvsh"))))
(build-system linux-module-build-system)
(arguments
'(#:tests? #f))
@ -1318,7 +1072,7 @@ driver:
(define-public intel-microcode
(package
(name "intel-microcode")
(version "20241112")
(version "20230808")
(source
(origin
(method git-fetch)
@ -1329,7 +1083,7 @@ driver:
(commit (string-append "microcode-" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1i2pfw1vfnws76dpdik5x9kn3rysq8ggb4c16c2lmxzz4phyvxbn"))))
(base32 "1n0w6q46xag7a9iddl3v1gh1rzv9h6kiyy739ac6vg3v8lazh9n7"))))
(build-system copy-build-system)
(arguments
(list #:install-plan
@ -1353,12 +1107,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 +1125,20 @@ documented in the respective processor revision guides.")
(define-public sof-firmware
(package
(name "sof-firmware")
(version "2024.09")
(version "2.2.3")
(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"))))
"0hnvzbjgib8f0m2gw345vk0p4h9ba34g7vciih1jgcz2y5kgs7sr"))))
(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 "ec8e3610be26d2d7312fab7d59d840e550b221f2")
(revision "1"))
(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 "0bmnh0xl5pvjv4pdb4a37x87zlyzr5fy7cyaws69p4p4rgzszzv8"))))
(build-system asdf-build-system/sbcl)
(inputs (list electron
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\""))))))))
(native-inputs (list ;; sbcl-lisp-unit2
sbcl))
(inputs (list electron node
sbcl-cl-json sbcl-iolib sbcl-nclasses
sbcl-parenscript sbcl-bordeaux-threads))
(synopsis "Common Lisp interface to Electron")
(home-page "https://github.com/atlas-engineer/cl-electron")
(description "@command{cl-electron} is a binding to Electron for

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 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.41")
(source
(origin
(method url-fetch)
@ -46,31 +45,47 @@
"https://packages.riot.im/debian/pool/main/e/" name "/" name "_" version
"_amd64.deb"))
(sha256
(base32 "0riavl8qq59s45xxdk0s1n6i1wymsx1zfdz5dp3ccr8xpzw77abq"))))
(base32 "1m07b1ykmxly16irca171z4f718as7hqsccp1q7qrqj9b5lkmv64"))))
(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
(replace 'unpack
(lambda _
(invoke "ar" "x" #$source)
(invoke "tar" "xvf" "data.tar.xz")
(copy-recursively "usr/" ".")
;; Use the more standard lib directory for everything.
(rename-file "opt/" "lib")
;; Remove unneeded files.
(delete-file-recursively "usr")
(delete-file "control.tar.gz")
(delete-file "data.tar.xz")
(delete-file "debian-binary")
;; Fix the .desktop file binary location.
(substitute* '("share/applications/element-desktop.desktop")
(("/opt/Element/")
(string-append #$output "/bin/")))))
(add-after 'install 'symlink-binary-file
(add-after 'install 'symlink-binary-file-and-cleanup
(lambda _
(delete-file (string-append #$output "/environment-variables"))
(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"))
":")))))))))
(native-inputs (list tar))
(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 +98,7 @@ its core.")
(define-public signal-desktop
(package
(name "signal-desktop")
(version "7.41.0")
(version "6.30.2")
(source
(origin
(method url-fetch)
@ -92,31 +107,47 @@ its core.")
"https://updates.signal.org/desktop/apt/pool/s/" name "/" name "_" version
"_amd64.deb"))
(sha256
(base32 "1ainlhhzf427f0jqdh83m8519ywihnxyiw505n4msgyhpwgwj5n0"))))
(base32 "1kxxb6s7h2llksmqrjbk9nhp55r0v7573h3qz44ssb2kx8xxwgdb"))))
(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
(replace 'unpack
(lambda _
(invoke "ar" "x" #$source)
(invoke "tar" "xvf" "data.tar.xz")
(copy-recursively "usr/" ".")
;; Use the more standard lib directory for everything.
(rename-file "opt/" "lib")
;; Remove unneeded files.
(delete-file-recursively "usr")
(delete-file "control.tar.gz")
(delete-file "data.tar.xz")
(delete-file "debian-binary")
(delete-file "environment-variables")
;; Fix the .desktop file binary location.
(substitute* '("share/applications/signal-desktop.desktop")
(("/opt/Signal/")
(string-append #$output "/bin/")))))
(add-after 'install 'symlink-binary-file
(add-after 'install 'symlink-binary-file-and-cleanup
(lambda _
(delete-file (string-append #$output "/environment-variables"))
(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"))
":")))))))))
(native-inputs (list tar))
(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
@ -129,14 +160,14 @@ or iOS.")
(define-public zoom
(package
(name "zoom")
(version "5.17.5.2543")
(version "5.15.12.7665")
(source
(origin
(method url-fetch)
(uri (string-append "https://cdn.zoom.us/prod/" version "/zoom_x86_64.tar.xz"))
(file-name (string-append name "-" version "-x86_64.tar.xz"))
(sha256
(base32 "06m53d3jrpiq1z5wd7m61lb3w8m8g72iaqx5sixnzn290gyyzgim"))))
(base32 "1pmxgfafwlxnrcw1fay91krjqbf1kaf5ng4f3na0p6liyd5c6fhq"))))
(supported-systems '("x86_64-linux"))
(build-system binary-build-system)
(arguments
@ -189,8 +220,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")))
@ -212,9 +243,6 @@ or iOS.")
"libxrender"
"zlib")))))
(wrap-program (string-append #$output "/lib/zoom/zoom")
'("QML2_IMPORT_PATH" = ())
'("QT_PLUGIN_PATH" = ())
'("QT_SCREEN_SCALE_FACTORS" = ())
`("FONTCONFIG_PATH" ":" prefix
(,(string-join
(list

View File

@ -14,17 +14,14 @@
;;; 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)
@ -67,46 +64,50 @@
#:use-module (gnu packages python)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
#:use-module (gnu packages speech)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages video)
#:use-module (nongnu packages wasm)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg))
;;; 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 "20230928000000")
(define-public firefox-esr
(package
(name "firefox-esr")
(version "128.7.0esr")
(version "115.3.1esr")
(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 "0lqymabkhxpdhmgz81if8za1hdakh8nlm4cmsir4y1fa95p2bnkx"))))
(build-system gnu-build-system)
(arguments
(list
@ -138,11 +139,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"
@ -158,7 +154,6 @@
"--disable-elf-hack"))
#:imported-modules %cargo-utils-modules
#:modules `((ice-9 regex)
(ice-9 string-fun)
(ice-9 ftw)
(srfi srfi-1)
(srfi srfi-26)
@ -166,7 +161,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 +180,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,24 +228,8 @@
;; 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 _
(let* ((lib "libspeechd.so.2")
(file "dom/media/webspeech/synth/speechd/SpeechDispatcherService.cpp")
(old-content (call-with-input-file file get-string-all)))
(substitute
file
`((,(format #f "~s" lib)
. ,(lambda (line _)
(string-replace-substring
line
lib
(string-append #$speech-dispatcher "/lib/" lib))))))
(if (string=? old-content
(call-with-input-file file get-string-all))
(error "substitute did nothing, phase requires an update")))))
(add-before 'configure 'set-build-id
;; Firefox will write the timestamp to output, which is harmful
;; for reproducibility, so change it to a fixed date. Use a
@ -291,9 +265,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 +359,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 +379,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)
@ -475,9 +442,8 @@
pipewire
pixman
pulseaudio
speech-dispatcher
sqlite
startup-notification
sqlite
eudev
unzip
zip
@ -487,7 +453,7 @@
alsa-lib
autoconf-2.13
`(,rust-firefox-esr "cargo")
clang-18
clang
llvm
wasm32-wasi-clang-toolchain
m4
@ -497,14 +463,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 +512,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 "20230928000000")
(define-public firefox
(package
(inherit firefox-esr)
(name "firefox")
(version "135.0")
(version "118.0.1")
(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 "15gxg5nk62fn5sp77i0b0jfn8qa2a3ikkis0lwaxc19ns5bdmx53"))))
(arguments
(substitute-keyword-arguments (package-arguments firefox-esr)
((#:phases phases)
@ -581,9 +533,6 @@ 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)
@ -592,7 +541,38 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
"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.
(define-public firefox-wayland
(deprecated-package "firefox-wayland" firefox))
(define-public firefox/wayland
(package
(inherit firefox)
(name "firefox-wayland")
(native-inputs '())
(inputs
`(("bash" ,bash-minimal)
("firefox" ,firefox)))
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let* ((bash (assoc-ref %build-inputs "bash"))
(firefox (assoc-ref %build-inputs "firefox"))
(out (assoc-ref %outputs "out"))
(exe (string-append out "/bin/firefox")))
(mkdir-p (dirname exe))
(call-with-output-file exe
(lambda (port)
(format port "#!~a
MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
(string-append bash "/bin/bash")
(string-append firefox "/bin/firefox"))))
(chmod exe #o555)
;; Provide the manual and .desktop file.
(copy-recursively (string-append firefox "/share")
(string-append out "/share"))
(substitute* (string-append
out "/share/applications/firefox.desktop")
((firefox) out))
#t))))))

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,7 +1,7 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2021 Kahka F
;;; Copyright © 2021, 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2021 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (nongnu packages printers)
#:use-module (gnu packages)
@ -40,7 +40,7 @@
;; hplip is updated in Guix.
(sha256
(base32
"0zq66hm7ni6w1c3cxy1gxrxzvyvfn0lhjnia8p4azvz2r309j9s0")))))
"09kixd9pb0p94bw3xyqy9h62gwqnbwcjjsvb2g3wvl6zxp4j1fvy")))))
(package-native-inputs hplip)))
(arguments
(substitute-keyword-arguments (package-arguments hplip)

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.35.2")
(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=127051615"))
(file-name (string-append "anytype-" version ".deb"))
(sha256
(base32
"0djyvz6y4pk277xa2mc4w6w029i3f7zd2d1pniyrpayhnna6f670"))))
"12lfy5rygnaachax62j40b1ns9qsysa94f0hgqhsjaij50kw3dlc"))))
(build-system chromium-binary-build-system)
(arguments
(list
@ -55,35 +52,29 @@
"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
(string-append "opt/Anytype/resources/app.asar.unpacked/"
"node_modules/keytar/build/node_gyp_bins/python3"))))
(add-after 'unpack 'unpack-deb
(lambda* (#:key inputs #:allow-other-keys)
(invoke "ar" "x" #$source)
(invoke "rm" "-v" "control.tar.gz"
"debian-binary"
(string-append "anytype-" #$version ".deb"))
(invoke "tar" "xvf" "data.tar.xz")
(invoke "rm" "-vrf" "data.tar.xz")))
(add-before 'install 'patch-assets
(lambda _
(let* ((bin (string-append #$output "/bin"))
(icon (string-append #$output "/share/icons/hicolor/0x0/apps/anytype.png"))
(usr/share "./usr/share")
(old-exe "/opt/Anytype/anytype")
(exe (string-append bin "/anytype")))
(substitute* (string-append usr/share "/applications/anytype.desktop")
(("^Icon=anytype") (string-append "Icon=" icon))
(((string-append "^Exec=" old-exe)) (string-append "Exec=" exe))))))
(add-before 'install-wrapper 'symlink-entrypoint
(lambda _
@ -95,6 +86,7 @@
(symlink target exe)
(wrap-program exe
`("LD_LIBRARY_PATH" = (,share)))))))))
(native-inputs (list tar))
(inputs
(list bzip2
flac
@ -119,118 +111,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

@ -13,7 +13,7 @@
(define-public helix-core
(package
(name "helix-core")
(version "r23.1")
(version "r22.1")
(source (origin
(method url-fetch)
(uri (string-append "https://ftp.perforce.com/perforce/" version
@ -28,7 +28,7 @@
("i686-linux"
"0f5qs55rspw86axnmml3nxx551lwbxwz1cgi9kmy2f9g5rrplnkn")
(_
"1vqfkhgbx6ch7710w8mmm7hydl6jmd9qgzs0gfjg8gvd5gnh1csr"))))))
"077rfbjgyhdgv76i2727s3yk3p52y75nml8n9wv8g7mvhfs9ypa9"))))))
(build-system binary-build-system)
(arguments
`(#:strip-binaries? #f

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

@ -1,15 +1,12 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; 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 +113,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")))
@ -140,42 +133,10 @@ The inputs are optional when the file is an executable."
patchelf-plan)))
#t)
(define (deb-file? binary-file)
(string-suffix? ".deb" binary-file))
(define (unpack-deb deb-file)
(invoke "ar" "x" deb-file)
(let ((data-file (find file-exists?
(list "data.tar.xz" "data.tar.gz"
"data.tar.bz2"))))
(invoke "tar" "xvf" data-file)
(invoke "rm" "-rfv" "control.tar.gz"
data-file
deb-file
"debian-binary")))
(define* (binary-unpack #:key source #:allow-other-keys)
(let* ((files (filter (lambda (f)
(not (string=? (basename f) "environment-variables")))
(find-files (getcwd))))
(binary-file (car files)))
(when (= 1 (length files))
(mkdir "binary")
(chdir "binary")
(match binary-file
((? deb-file?) (unpack-deb binary-file))
(_
(begin
(format #t "Unknown file type: ~a~%" (basename binary-file))
;; Cleanup after ourselves
(chdir "..")
(rmdir "binary")))))))
(define %standard-phases
;; Everything is as with the GNU Build System except for the `binary-unpack',
;; `configure', `build', `check' and `install' phases.
;; Everything is as with the GNU Build System except for the `configure'
;; , `build', `check' and `install' phases.
(modify-phases gnu:%standard-phases
(add-after 'unpack 'binary-unpack binary-unpack)
(delete 'bootstrap)
(delete 'configure)
(delete 'build)

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

@ -8,7 +8,6 @@
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2023 Attila Lendvai <attila@lendvai.name>
;;; Copyright © 2023 Elijah Malaby
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
;;; The script provided by this package may optionally be started as
;;; a shell instead of automatically launching the wrapped entrypoint by setting
@ -42,6 +41,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)
@ -50,7 +50,6 @@
#:export (nonguix-container
nonguix-container?
ngc-name
ngc-binary-name
ngc-version
ngc-wrap-package
ngc-run
@ -83,7 +82,6 @@
nonguix-container make-nonguix-container
nonguix-container? this-nonguix-container
(name ngc-name)
(binary-name ngc-binary-name (default (ngc-name this-nonguix-container)) (thunked))
(version ngc-version (default #f))
(wrap-package ngc-wrap-package)
(run ngc-run)
@ -209,7 +207,7 @@ in a sandboxed FHS environment."
(manifest-target (assoc-ref %build-inputs "fhs-manifest"))
(manifest-dest (string-append out "/etc/" ,(ngc-manifest-name container)))
(wrapper-target (assoc-ref %build-inputs "fhs-wrapper"))
(wrapper-dest (string-append out "/bin/" ,(ngc-binary-name container)))
(wrapper-dest (string-append out "/bin/" ,(ngc-name container)))
(link-files ',(ngc-link-files container)))
(mkdir-p (string-append out "/sbin"))
(mkdir-p (string-append out "/etc"))
@ -238,7 +236,6 @@ in a sandboxed FHS environment."
in a sandboxed FHS environment."
(program-file
(ngc-wrapper-name container)
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
(define (preserve-var var)
@ -259,25 +256,10 @@ 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.
;; For startup of added non-Steam games as it
;; seems they start in an early environment
;; before our additional settings. (Likely
;; this can be removed when rewritten to use
;; --emulate-fhs from upstream.) Note that
;; this is explicitly set below. We could
;; preserve what is set before launching the
;; container, but any such directories would
;; need to be shared with the container as
;; well; this is not needed currently.
"^LD_LIBRARY_PATH$"
"^LIBVA_DRIVERS_PATH$" ; For VA-API drivers.
"^MANGOHUD" ; For MangoHud configuration.
"^PRESSURE_VESSEL_" ; For pressure vessel options.
"_PROXY$"
"_proxy$"
@ -290,16 +272,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$"
"^G_MESSAGES_DEBUG$"
@ -314,7 +292,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,34 +315,30 @@ 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 #\:)
#f))
(args (cdr (command-line)))
(command (if DEBUG '()
`("--" ,run ,@args))))
;; Set this so Steam's pressure-vessel container does not need to
;; generate locales, improving startup time. This needs to be set to
;; the "usual" path, probably so they are included in the
;; pressure-vessel container.
(setenv "GUIX_LOCPATH" "/usr/lib/locale")
;; By default 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")
;; TODO: Remove once upstream change is merged and in stable pressure-vessel
;; (although may want to hold off for anyone using older pressure-vessel versions
;; for whatever reason), see:
;; https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/merge_requests/406
(setenv "PRESSURE_VESSEL_FILESYSTEMS_RO" "/gnu/store")
;; 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"
@ -373,11 +346,9 @@ in a sandboxed FHS environment."
,@(map add-path expose)
,@(map (lambda (item)
(add-path item #:writable? #t))
(if extra-shares
(append share extra-shares)
share))
share)
"-m" ,manifest-file
,@command)))))))
,@command))))))
(define (make-container-manifest container fhs-internal)
"Return a scheme file-like object to be used as package manifest for FHS
@ -461,9 +432,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 +442,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"))
@ -499,8 +464,8 @@ application."
'("/run/current-system/profile/etc"
"/run/current-system/profile/share"
"/sbin"
"/usr/lib"
"/usr/share"))
"/usr/share/vulkan/icd.d"
"/usr/share/vulkan/implicit_layer.d")) ; Implicit layers like MangoHud
(for-each
new-symlink
`((,ld.so.cache . "/etc/ld.so.cache")
@ -514,65 +479,32 @@ application."
((,union64 "lib") . "/lib64")
((,union64 "lib") . "/run/current-system/profile/lib64")
((,union64 "lib/locale") . "/run/current-system/locale")
;; Despite using GUIX_LOCPATH, stil need locales in their
;; expected location for pressure-vessel to use them.
((,union64 "lib/locale") . "/usr/lib/locale")
((,union64 "sbin/ldconfig") . "/sbin/ldconfig")
((,union64 "share/mime") . "/usr/share/mime") ; Steam tray icon.
((,union64 "share/glib-2.0") . "/usr/share/glib-2.0") ; Heroic interface.
((,union64 "share/drirc.d") . "/usr/share/drirc.d")
((,union64 "share/fonts") . "/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")
;; The MangoHud layer has the same file name for 64- and 32-bit,
;; so create links with different names.
((,union64 "share/vulkan/implicit_layer.d/MangoHud.json") .
"/usr/share/vulkan/implicit_layer.d/MangoHud.json")
((,union32 "share/vulkan/implicit_layer.d/MangoHud.json") .
"/usr/share/vulkan/implicit_layer.d/MangoHud.x86.json")))
(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).
(if (file-exists? ".steam/root/bootstrap.tar.xz")
(chmod ".steam/root/bootstrap.tar.xz" #o644))
;; TODO: Should other environment setup also happen inside the
;; container rather than before container is launched?
;;
;; Set this so that e.g. non-Steam games added to Steam will
;; launch properly. It seems otherwise they don't make it to
;; launching Steam's pressure-vessel container (for Proton
;; games). Wait to set this inside the container to not cause
;; issues on foreign distros, see
;; <https://gitlab.com/nonguix/nonguix/-/issues/303>
(setenv "LD_LIBRARY_PATH"
(string-append "/lib64:/lib:/lib64/nss:/lib/nss:"
"/lib64/vdpau:/lib/vdpau"))
;; Process FHS-specific command line options.
(let* ((options (getopt-long (or fhs-args '("")) fhs-option-spec))
@ -581,7 +513,7 @@ application."
(if asound32-opt
(display "\n\n/etc/asound.conf configured for 32-bit.\n\n\n")
(display (string-append "\n\n/etc/asound.conf configured for 64-bit.\nLaunch "
#$(ngc-binary-name container)
#$(ngc-name container)
" with \""
(basename #$(ngc-run container))
" -- --asound32\" to use 32-bit instead.\n\n\n")))

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)))