Toggle diff (606 lines)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 8d9dc01839..ef0c0f861e 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net>
;;; Copyright © 2021 B. Wilson <elaexuotee@wilsonb.com>
;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
-;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2021, 2022 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages admin)
+ ;; TODO: move 'bc' to 'base' to avoid this import
#:use-module (gnu packages algebra)
- #:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
- #:use-module (gnu packages avahi)
- #:use-module (gnu packages backup)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
- #:use-module (gnu packages boost)
- #:use-module (gnu packages calendar)
- #:use-module (gnu packages check)
#:use-module (gnu packages cpio)
- #:use-module (gnu packages crypto)
- #:use-module (gnu packages cryptsetup)
#:use-module (gnu packages compression)
#:use-module (gnu packages dbm)
- #:use-module (gnu packages datastructures)
- #:use-module (gnu packages docbook)
- #:use-module (gnu packages documentation)
#:use-module (gnu packages elf)
#:use-module (gnu packages flex)
#:use-module (gnu packages file)
- #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
- #:use-module (gnu packages gnupg)
- #:use-module (gnu packages golang)
#:use-module (gnu packages gperf)
- #:use-module (gnu packages gstreamer)
- #:use-module (gnu packages gtk)
- #:use-module (gnu packages haskell-apps)
- #:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages libusb)
#:use-module (gnu packages llvm)
- #:use-module (gnu packages lua)
#:use-module (gnu packages man)
- #:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
- #:use-module (gnu packages netpbm)
- #:use-module (gnu packages networking)
#:use-module (gnu packages ninja)
#:use-module (gnu packages nss)
#:use-module (gnu packages perl)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
- #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
- #:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
- #:use-module (gnu packages rrdtool)
- #:use-module (gnu packages samba)
- #:use-module (gnu packages sdl)
- #:use-module (gnu packages serialization)
#:use-module (gnu packages slang)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils)
- #:use-module (gnu packages tls)
- #:use-module (gnu packages valgrind)
- #:use-module (gnu packages video)
- #:use-module (gnu packages vulkan)
- #:use-module (gnu packages web)
- #:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
- #:use-module (gnu packages xdisorg)
- #:use-module (gnu packages xorg)
#:use-module (gnu packages groff)
#:use-module (gnu packages selinux)
#:use-module (gnu packages swig)
#:use-module (ice-9 match)
#:use-module (ice-9 regex))
+;; Avoid importing (gnu packages audio) to avoid increasing
+;; the module closure when all we need is 'linux-libre-headers'.
+(define (module-variable-resolver module)
+ (module-ref (resolve-interface module) variable)))
+(define audio-package (module-variable-resolver '(gnu packages audio)))
+(define avahi-package (module-variable-resolver '(gnu packages avahi)))
+(define backup-package (module-variable-resolver '(gnu packages backup)))
+(define boost-package (module-variable-resolver '(gnu packages boost)))
+(define calendar-package (module-variable-resolver '(gnu packages calendar)))
+(define check-package (module-variable-resolver '(gnu packages check)))
+(define crypto-package (module-variable-resolver '(gnu packages crypto)))
+(define cryptsetup-package
+ (module-variable-resolver '(gnu packages cryptsetup)))
+(define datastructures-package
+ (module-variable-resolver '(gnu packages datastructures)))
+ (module-variable-resolver '(gnu packages docbook)))
+(define documentation-package
+ (module-variable-resolver '(gnu packages documentation)))
+(define freedesktop-package
+ (module-variable-resolver '(gnu packages freedesktop)))
+(define gnupg-package (module-variable-resolver '(gnu packages gnupg)))
+(define golang-package (module-variable-resolver '(gnu packages golang)))
+(define gstreamer-package (module-variable-resolver '(gnu packages gstreamer)))
+(define gtk-package (module-variable-resolver '(gnu packages gtk)))
+(define haskell-apps-package
+ (module-variable-resolver '(gnu packages haskell-apps)))
+(define haskell-xyz-package
+ (module-variable-resolver '(gnu packages haskell-xyz)))
+(define lua-package (module-variable-resolver '(gnu packages lua)))
+(define maths-package (module-variable-resolver '(gnu packages maths)))
+ (module-variable-resolver '(gnu packages netpbm)))
+(define networking-package
+ (module-variable-resolver '(gnu packages networking)))
+(define pulseaudio-package
+ (module-variable-resolver '(gnu packages pulseaudio)))
+(define python-xyz-package
+ (module-variable-resolver '(gnu packages python-xyz)))
+(define samba-package (module-variable-resolver '(gnu packages samba)))
+(define rrdtool-package (module-variable-resolver '(gnu packages rrdtool)))
+(define sdl-package (module-variable-resolver '(gnu packages sdl)))
+(define serialization-package
+ (module-variable-resolver '(gnu packages serialization)))
+(define tls-package (module-variable-resolver '(gnu packages tls)))
+(define valgrind-package (module-variable-resolver '(gnu packages valgrind)))
+(define video-package (module-variable-resolver '(gnu packages video)))
+(define xdisorg-package (module-variable-resolver '(gnu packages xdisorg)))
+(define xorg-package (module-variable-resolver '(gnu packages xorg)))
+(define vulkan-package (module-variable-resolver '(gnu packages vulkan)))
+(define web-package (module-variable-resolver '(gnu packages web)))
(define-public (system->linux-architecture arch)
"Return the Linux architecture name for ARCH, a Guix system name such as
\"x86_64-linux\" or a target triplet such as \"arm-linux-gnueabihf\"."
@@ -791,7 +810,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
+ ("openssl" ,(tls-package 'openssl))
("elfutils" ,elfutils) ; Needed to enable CONFIG_STACK_VALIDATION
@@ -1680,7 +1699,7 @@ at login. Local and dynamic reconfiguration are its key features.")
+ (list (check-package 'python-pytest)))
(home-page "https://github.com/minrk/pamela")
(synopsis "PAM interface using ctypes")
(description "This package provides a PAM interface using @code{ctypes}.")
@@ -1701,7 +1720,7 @@ at login. Local and dynamic reconfiguration are its key features.")
"1bf91gi6zmfzzmczxm7pajxdlgnikasvg5xsd3j0a368rcr7lf9l"))))
(build-system gnu-build-system)
- (list gnupg linux-pam))
+ (list (gnupg-package 'gnupg) linux-pam))
(list autoconf automake libtool))
@@ -2562,7 +2581,7 @@ MIDI functionality to the Linux-based operating system.")
`(("gettext" ,gettext-minimal)))
- (list libsamplerate ncurses alsa-lib xmlto))
+ (list (pulseaudio-package 'libsamplerate) ncurses alsa-lib xmlto))
(home-page "http://www.alsa-project.org/")
(synopsis "Utilities for the Advanced Linux Sound Architecture (ALSA)")
@@ -2625,11 +2644,11 @@ MIDI functionality to the Linux-based operating system.")
- speex ; libspeexdsp resampling plugin
- libsamplerate ; libsamplerate resampling plugin
- ffmpeg ; libavcodec resampling plugin, a52 plugin
- pulseaudio)) ; PulseAudio plugin
+ (audio-package 'jack-1)
+ (pulseaudio-package 'speex) ; libspeexdsp resampling plugin
+ (pulseaudio-package 'libsamplerate) ; libsamplerate resampling plugin
+ (video-package 'ffmpeg) ; libavcodec resampling plugin, a52 plugin
+ (pulseaudio-package 'pulseaudio))) ; PulseAudio plugin
(home-page "http://www.alsa-project.org/")
@@ -3469,7 +3488,7 @@ file system is as easy as logging into the server with an SSH client.")
(base32 "1cy5b6qril9c3ry6fv7ir87s8iyy5vxxmbyx90dm86fbra0vjaf5"))))
(build-system gnu-build-system)
- (inputs (list fuse libarchive))
+ (inputs (list fuse (backup-package 'libarchive)))
(native-inputs (list pkg-config))
(home-page "https://www.cybernoia.de/software/archivemount.html")
(synopsis "Tool for mounting archive files with FUSE")
@@ -3771,12 +3790,12 @@ from the module-init-tools project.")
;; To generate the manpage.
(if (or (target-x86-64?) (target-x86-32?))
+ (list (haskell-xyz-package 'pandoc))
+ (check-package 'cppcheck)
+ (golang-package 'go))))
(home-page "https://github.com/rfjakob/earlyoom")
(synopsis "Simple out of memory (OOM) daemon for the Linux kernel")
(description "Early OOM is a minimalist out of memory (OOM) daemon that
@@ -3846,8 +3865,8 @@ to the in-kernel OOM killer.")
("python" ,python-wrapper)
- ("docbook-xml" ,docbook-xml-4.2)
- ("docbook-xsl" ,docbook-xsl)
+ ("docbook-xml" ,(docbook-package 'docbook-xml-4.2))
+ ("docbook-xsl" ,(docbook-package 'docbook-xsl))
("libxml2" ,libxml2) ;for $XML_CATALOG_FILES
@@ -3917,7 +3936,8 @@ devices that can inject events directly into the input subsystem.")
- (list boost libevdev eudev yaml-cpp))
+ (list (boost-package 'boost) (xorg-package 'libevdev) eudev
+ (serialization-package 'yaml-cpp)))
`(#:tests? #f)) ; no test suite
(synopsis "Utilities for operating on input events of evdev devices")
@@ -3951,7 +3971,7 @@ devices that can inject events directly into the input subsystem.")
"0s49vbg3j4rwh78i8rx8qr7myql09p7b3lhrjl0p7dd98xp6ann6"))))
(build-system gnu-build-system)
- (list libevdev yaml-cpp))
+ (list (xorg-package 'libevdev) (serialization-package 'yaml-cpp)))
`(#:make-flags (list ,(string-append "CC=" (cc-for-target))
,(string-append "CXX=" (cxx-for-target))
@@ -4121,7 +4141,7 @@ mapper. Kernel components are part of Linux-libre.")
("autoreconf" ,autoconf)))
- (list boost expat libaio))
+ (list (boost-package 'boost) expat libaio))
(synopsis "Tools for manipulating the metadata of device-mapper targets")
(description "A suite of tools for manipulating the metadata of the
dm-thin, dm-cache and dm-era device-mapper targets.")
@@ -4372,7 +4392,8 @@ country-specific regulations for the wireless spectrum.")
(base32 "1ipf6wjx037sqyhy0r5jh4983h216anq9l68ckn2x5c3qc4wfmzn"))
(patches (search-patches "lm-sensors-hwmon-attrs.patch"))))
(build-system gnu-build-system)
- (inputs (list rrdtool perl kmod gnuplot))
+ (inputs (list (rrdtool-package 'rrdtool) perl kmod
+ (maths-package 'gnuplot)))
(native-inputs (list pkg-config flex bison which))
(outputs '("lib" ; avoid perl in closure
@@ -4516,7 +4537,7 @@ SMBus access.")
"1siplsfgvcxamyqf44h71jx6jdfmvhfm7mh0y1q8ps4zs6pj2zwh"))))
(build-system gnu-build-system)
(inputs `(("lm-sensors" ,lm-sensors "lib")
+ ("gtk" ,(gtk-package 'gtk+-2))))
(native-inputs (list pkg-config))
@@ -4589,9 +4610,9 @@ in a digital read-out.")
numactl ;for 'perf bench numa mem'
libxml2 ;for $XML_CATALOG_FILES
+ (docbook-package 'docbook-xsl)
+ (documentation-package 'asciidoc)))
(home-page "https://perf.wiki.kernel.org/")
(synopsis "Linux profiling with performance counters")
@@ -4699,7 +4720,7 @@ thanks to the use of namespaces.")
out "/bin/singularity")))
- `(("libarchive" ,libarchive)
+ `(("libarchive" ,(backup-package 'libarchive))
("python" ,python-wrapper)
("squashfs-tools" ,squashfs-tools)))
@@ -5213,13 +5234,13 @@ arrays when needed.")
(delete 'configure)))) ; no configure script
- (list perl pkg-config valgrind
+ (list perl pkg-config (valgrind-package 'valgrind)
+ (check-package 'cmocka)))
+ `(("json-c" ,(web-package 'json-c))
+ ("liburcu" ,(datastructures-package 'liburcu))
@@ -5323,7 +5344,7 @@ applications.")
+ ("gnuplot" ,(maths-package 'gnuplot))
("python" ,python-wrapper))) ;for 'bno_plot.py'
(synopsis "Block layer IO tracing mechanism")
(description "Blktrace is a block layer IO tracing mechanism which provides
@@ -5345,7 +5366,7 @@ event traces from the kernel (via the relaying through the debug file system).")
"1liig5856crb331dps18mp0s13zbkv7yh007zqhq97m94fcddfhc"))))
(build-system gnu-build-system)
+ (list (pulseaudio-package 'libsndfile)))
(home-page "https://www.kernel.org/pub/linux/bluetooth/")
@@ -5411,10 +5432,10 @@ Bluetooth audio output devices like headphones or loudspeakers.")
`(("pkg-config" ,pkg-config)
- ("rst2man" ,python-docutils)
+ ("rst2man" ,(python-xyz-package 'python-docutils))
("gettext" ,gettext-minimal)))
- (list glib dbus eudev libical readline))
+ (list glib dbus eudev (calendar-package 'libical) readline))
(home-page "http://www.bluez.org/")
(synopsis "Linux Bluetooth protocol stack")
@@ -5575,12 +5596,12 @@ and copy/paste text in the console and in xterm.")
("zstd:static" ,zstd "static")))
(native-inputs `(("pkg-config" ,pkg-config)
+ ("asciidoc" ,(documentation-package 'asciidoc))
;; For building documentation.
- ("docbook-xsl" ,docbook-xsl)
+ ("docbook-xsl" ,(docbook-package 'docbook-xsl))
@@ -5912,7 +5933,8 @@ feature, and a laptop with an accelerometer. It has no effect on SSDs.")
- (list libatasmart yaml-cpp))
+ (list (freedesktop-package 'libatasmart)
+ (serialization-package 'yaml-cpp)))
(home-page "https://github.com/vmatare/thinkfan")
(synopsis "Simple fan control program")
@@ -6204,7 +6226,8 @@ from the ntfs-3g package. It is meant to be used in initrds.")
("pkg-config" ,pkg-config)
("python" ,python-wrapper)
- ("python-docutils" ,python-docutils))) ;for 'rst2man'
+ ("python-docutils" ,(python-xyz-package 'python-docutils))))
@@ -6304,7 +6327,7 @@ The collection contains a set of bandwidth and latency benchmark such as:
(list autoconf automake pkg-config))
`(("libsysfs" ,sysfsutils)
+ ("openssl" ,(tls-package 'openssl))))
(synopsis "Random number generator daemon")
"Monitor a hardware random number generator, and supply entropy
@@ -6345,7 +6368,7 @@ from that to the system kernel's @file{/dev/random} machinery.")
"PACKAGE_BUGREPORT=bug-guix@gnu.org"))
(native-inputs `(("gettext" ,gettext-minimal)))
- (inputs (list pciutils))
+ (inputs (list (xorg-package 'pciutils)))
(home-page (package-home-page linux-libre))
(synopsis "CPU frequency and voltage scaling tools for Linux")
@@ -6484,10 +6507,10 @@ not as a replacement for it.")
(list intltool perl ; for pod2man
- `(("keyutils" ,keyutils)
+ `(("keyutils" ,(crypto-package 'keyutils))
("utils-linux" ,util-linux)
- ("cryptsetup" ,cryptsetup)
+ ("cryptsetup" ,(cryptsetup-package 'cryptsetup))
(home-page "https://ecryptfs.org/")
@@ -6626,12 +6649,13 @@ exceeded.")
#~(list "--enable-unit-tests"))))
- (list cmocka pkg-config))
+ (list (check-package 'cmocka)
`(("acl" ,acl) ; extended attributes (xattr)
("libuuid" ,util-linux "lib")
- ("openssl" ,openssl) ; optional crypto support
+ ("openssl" ,(tls-package 'openssl)) ; optional crypto support
(build-system gnu-build-system)
@@ -6708,7 +6732,9 @@ developers.")
`(("gettext" ,gettext-minimal)
("pkg-config" ,pkg-config)))
- (list libdrm libpciaccess libxcb ncurses))
+ (list (xdisorg-package 'libdrm)
+ (xorg-package 'libpciaccess)
+ (xorg-package 'libxcb) ncurses))
(home-page "https://github.com/clbr/radeontop/")
(synopsis "Usage monitor for AMD Radeon graphics")
(description "RadeonTop monitors resource consumption on supported AMD
@@ -6924,7 +6950,7 @@ set the screen to be pitch black at a value of 0 (or higher).
+ (list (freedesktop-package 'elogind)))
(synopsis "Backlight and LED brightness control")
"This program allows you read and control device brightness. Devices
@@ -6949,11 +6975,11 @@ interface in sysfs, which can be accomplished with the included udev rules.")
(base32 "0cssclk2brhwvn9dm7h5snm2svwy0c8cfr4z2cgkdkac2pfaaxw4"))))
+ (list (haskell-apps-package 'shellcheck)))
+ ("ethtool" ,(networking-package 'ethtool))
@@ -7111,9 +7137,10 @@ every time the power supply source is changed.")
(wrap-program (string-append out "/bin/tlpui")
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
- (list `(,glib "bin") gobject-introspection python-discover))
+ (list `(,glib "bin") gobject-introspection
+ (check-package 'python-discover)))
- (list gtk+ python-pygobject tlp))
+ (list (gtk-package 'gtk+) python-pygobject tlp))
(home-page "https://github.com/d4nj1/TLPUI")
(synopsis "User interface for TLP written in Python")
@@ -7349,8 +7376,8 @@ userspace queueing component and the logging subsystem.")
;; For rst2man, used to generate the manual page.
- (inputs (list libarchive talloc))
+ (python-xyz-package 'python-docutils)))
+ (inputs (list (backup-package 'libarchive) (samba-package 'talloc)))
(home-page "https://github.com/proot-me/PRoot")
(synopsis "Unprivileged chroot, bind mount, and binfmt_misc")
@@ -7371,7 +7398,7 @@ available in the kernel Linux.")
"Unprivileged chroot, bind mount, and binfmt_misc (statically linked)")
- (inputs `(("talloc" ,talloc/static)))
+ (inputs `(("talloc" ,(samba-package 'talloc/static))))
(substitute-keyword-arguments (package-arguments proot)
@@ -7463,7 +7490,7 @@ the MTP device as a file system.")
+ (check-package 'check) groff))
(list expat libcap libselinux))
(synopsis "Utility to show process environment")
@@ -7623,7 +7650,7 @@ relevant @file{/dev/vcs*} file(s).")
;; The ‘fbgrab’ wrapper can use one of several PPM-to-PNG converters. We
;; choose netpbm simply because it's the smallest. It still adds ~94 MiB
;; to an otherwise tiny package, so we put ‘fbgrab’ in its own output.
- `(("pnmtopng" ,netpbm)))
+ `(("pnmtopng" ,(netpbm-package 'netpbm))))
(outputs (list "out" "fbgrab"))
@@ -7863,7 +7890,8 @@ management tools in userspace.")
`(#:import-path "github.com/vishvananda/netlink"))
- (list go-golang-org-x-sys go-netns))
+ (list (golang-package 'go-golang-org-x-sys)
+ (networking-package 'go-netns)))
(home-page "https://github.com/vishvananda/netlink")
(synopsis "Simple netlink library for Go")
(description "The netlink package provides a simple netlink library for
@@ -7952,7 +7980,7 @@ compatible with Python's ConfigParser style of .INI files, including RFC
`(("gettext" ,gettext-minimal)))
+ ("liburcu" ,(datastructures-package 'liburcu))
("libuuid" ,util-linux "lib")
("python" ,python-wrapper)))
(home-page "https://xfs.wiki.kernel.org/")
@@ -8257,12 +8285,12 @@ types and interfaces and translates so that the X server can use them.")
+ (video-package 'ffmpeg)
+ (gstreamer-package 'gstreamer)
+ (gstreamer-package 'gst-plugins-base)
(home-page "https://pipewire.org/")
(synopsis "Server and user space API to deal with multimedia pipelines")
@@ -8301,13 +8329,13 @@ of Linux application development.")
;; Skip shrink-runpath, otherwise validate-runpath fails.
(delete 'shrink-runpath))))
(inputs (modify-inputs (package-inputs pipewire)
+ (prepend (avahi-package 'avahi)
+ (audio-package 'jack-1)
+ (audio-package 'ldacbt)
+ (pulseaudio-package 'pulseaudio)
+ (vulkan-package 'vulkan-loader)
+ (vulkan-package 'vulkan-headers))))))
(define-public wireplumber
@@ -8330,7 +8358,8 @@ of Linux application development.")
- (inputs (list dbus elogind glib lua pipewire-0.3))
+ (inputs (list dbus (freedesktop-package 'elogind) glib
+ (lua-package 'lua) pipewire-0.3))
(home-page "https://gitlab.freedesktop.org/pipewire/wireplumber")
(synopsis "Session / policy manager implementation for PipeWire")
(description "WirePlumber is a modular session / policy manager for
@@ -8499,7 +8528,7 @@ headers.")
;; archives, only object files.
;; https://github.com/iovisor/bcc/issues/504
+ ("luajit" ,(lua-package 'luajit))
("python-wrapper" ,python-wrapper)))
`(;; Tests all require root permissions and a "standard" file hierarchy.
base-commit: 9a31942cabb5c73174aee96ecd873fcf89955a9d