;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu installer hardware) #:use-module (gnu build linux-modules) #:use-module (guix i18n) #:use-module (srfi srfi-1) #:use-module (srfi srfi-71) #:export (unsupported-pci-device? pci-device-description)) (define %unsupported-linux-modules ;; List of Linux modules that are useless without non-free firmware. ;; ;; Currently only drivers for PCI devices are listed. USB devices such as ;; "btintel" would require support to list USB devices and read the USB ;; device ID database. Punt for now as this is usually less critical. ;; ;; This list is currently manually maintained based on information on ;; non-free firmware available from ;; . '(;; WiFi. "brcmfmac" "ipw2100" "ipw2200" "iwlwifi" "mwl8k" "rtl8188ee" "rtl818x_pci" "rtl8192ce" "rtl8192de" "rtl8192ee" ;; Ethernet. "bnx2" "bnx2x" "liquidio" ;; Graphics. "amdgpu" "radeon" ;; Multimedia. "ivtv")) (define unsupported-pci-device? ;; Arrange to load the module alias database only once. (let ((aliases (delay (known-module-aliases)))) (lambda (device) "Return true if DEVICE is known to not be supported by free software." (any (lambda (module) (member module %unsupported-linux-modules)) (matching-modules (pci-device-module-alias device) (force aliases)))))) (define (pci-device-description pci-database) "Return a procedure that, given a PCI device, returns a string describing it." (define (with-fallback lookup) (lambda (vendor-id id) (let ((vendor name (lookup vendor-id id))) (values (or vendor (number->string vendor-id 16)) (or name (number->string id 16)))))) (define pci-lookup (with-fallback (load-pci-device-database pci-database))) (lambda (device) (let ((vendor name (pci-lookup (pci-device-vendor device) (pci-device-id device)))) (if (network-pci-device? device) ;; TRANSLATORS: The two placeholders are the manufacturer ;; and name of a PCI device. (format #f (G_ "~a ~a (networking device)") vendor name) (string-append vendor " " name))))) python-protobuf-3.6): ... this. (protobuf-3.5): New public variable. * gnu/packages/machine-learning.scm (grpc)[native-inputs]: Change from PROTOBUF-NEXT to PROTOBUF. (tensorflow)[native-inputs, propagated-inputs]: Adjust for renamed PROTOBUF-NEXT. * gnu/packages/robotics.scm (aseba)[inputs]: Change from PROTOBUF to PROTOBUF-3.5. * gnu/packages/telephony.scm (mumble)[inputs]: Likewise. Marius Bakke 2018-03-16gnu: All snippets report errors using exceptions, else return #t....* gnu/packages/admin.scm, gnu/packages/algebra.scm, gnu/packages/audio.scm, gnu/packages/backup.scm, gnu/packages/base.scm, gnu/packages/bioinformatics.scm, gnu/packages/cdrom.scm, gnu/packages/chez.scm, gnu/packages/code.scm, gnu/packages/compression.scm, gnu/packages/cross-base.scm, gnu/packages/crypto.scm, gnu/packages/cups.scm, gnu/packages/databases.scm, gnu/packages/dns.scm, gnu/packages/emacs.scm, gnu/packages/emulators.scm, gnu/packages/engineering.scm, gnu/packages/enlightenment.scm, gnu/packages/fpga.scm, gnu/packages/freedesktop.scm, gnu/packages/ftp.scm, gnu/packages/games.scm, gnu/packages/gcc.scm, gnu/packages/geo.scm, gnu/packages/ghostscript.scm, gnu/packages/gl.scm, gnu/packages/glib.scm, gnu/packages/gnome.scm, gnu/packages/gnuzilla.scm, gnu/packages/graphics.scm, gnu/packages/gtk.scm, gnu/packages/guile.scm, gnu/packages/irc.scm, gnu/packages/java.scm, gnu/packages/kerberos.scm, gnu/packages/linux.scm, gnu/packages/lisp.scm, gnu/packages/lxde.scm, gnu/packages/machine-learning.scm, gnu/packages/mail.scm, gnu/packages/maths.scm, gnu/packages/messaging.scm, gnu/packages/monitoring.scm, gnu/packages/mp3.scm, gnu/packages/music.scm, gnu/packages/netpbm.scm, gnu/packages/networking.scm, gnu/packages/node.scm, gnu/packages/nvi.scm, gnu/packages/ocaml.scm, gnu/packages/pdf.scm, gnu/packages/perl.scm, gnu/packages/php.scm, gnu/packages/plotutils.scm, gnu/packages/pretty-print.scm, gnu/packages/profiling.scm, gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm, gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/robotics.scm, gnu/packages/sawfish.scm, gnu/packages/scanner.scm, gnu/packages/scheme.scm, gnu/packages/scribus.scm, gnu/packages/sdl.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/slang.scm, gnu/packages/smalltalk.scm, gnu/packages/ssh.scm, gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/tbb.scm, gnu/packages/terminals.scm, gnu/packages/texinfo.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/tls.scm, gnu/packages/unrtf.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vpn.scm, gnu/packages/web.scm, gnu/packages/wm.scm, gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xorg.scm: In all snippets, report errors using exceptions, or else return #t. Mark H Weaver 2018-01-30gnu: Add Aseba....* gnu/packages/robotics.scm (aseba): New variable. Ludovic Courtès 2018-01-30gnu: Add Enki....* gnu/packages/robotics.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. Ludovic Courtès