diff options
Diffstat (limited to 'pkgs/os-specific/linux/firmware')
26 files changed, 452 insertions, 252 deletions
diff --git a/pkgs/os-specific/linux/firmware/b43-firmware-cutter/default.nix b/pkgs/os-specific/linux/firmware/b43-firmware-cutter/default.nix index 7cb5d2a9a40..79de65fcb98 100644 --- a/pkgs/os-specific/linux/firmware/b43-firmware-cutter/default.nix +++ b/pkgs/os-specific/linux/firmware/b43-firmware-cutter/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl }: +{ lib, stdenv, fetchurl }: stdenv.mkDerivation rec { name = "b43-fwcutter-019"; @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { meta = { description = "Firmware extractor for cards supported by the b43 kernel module"; homepage = "http://wireless.kernel.org/en/users/Drivers/b43"; - license = stdenv.lib.licenses.free; - platforms = stdenv.lib.platforms.linux; + license = lib.licenses.free; + platforms = lib.platforms.linux; }; } diff --git a/pkgs/os-specific/linux/firmware/b43-firmware/5.1.138.nix b/pkgs/os-specific/linux/firmware/b43-firmware/5.1.138.nix index 4f03f58b11f..42444d784d5 100644 --- a/pkgs/os-specific/linux/firmware/b43-firmware/5.1.138.nix +++ b/pkgs/os-specific/linux/firmware/b43-firmware/5.1.138.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, b43FirmwareCutter }: +{ lib, stdenv, fetchurl, b43FirmwareCutter }: let version = "5.100.138"; in @@ -23,7 +23,7 @@ stdenv.mkDerivation { meta = { description = "Firmware for cards supported by the b43 kernel module"; homepage = "http://wireless.kernel.org/en/users/Drivers/b43"; - license = stdenv.lib.licenses.unfree; + license = lib.licenses.unfree; }; } diff --git a/pkgs/os-specific/linux/firmware/b43-firmware/6.30.163.46.nix b/pkgs/os-specific/linux/firmware/b43-firmware/6.30.163.46.nix index 3972e52977f..c0226065ea2 100644 --- a/pkgs/os-specific/linux/firmware/b43-firmware/6.30.163.46.nix +++ b/pkgs/os-specific/linux/firmware/b43-firmware/6.30.163.46.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, b43FirmwareCutter }: +{ lib, stdenv, fetchurl, b43FirmwareCutter }: stdenv.mkDerivation rec { pname = "b43-firmware"; @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { b43-fwcutter -w $out *.wl_apsta.o ''; - meta = with stdenv.lib; { + meta = with lib; { description = "Firmware for cards supported by the b43 kernel module"; homepage = "http://wireless.kernel.org/en/users/Drivers/b43"; downloadPage = "http://www.lwfinger.com/b43-firmware"; diff --git a/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix b/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix index 314a6b7521b..5118d0a0b9b 100644 --- a/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix +++ b/pkgs/os-specific/linux/firmware/broadcom-bt-firmware/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, cabextract, bt-fw-converter }: +{ lib, stdenv, fetchurl, cabextract, bt-fw-converter }: # Kernels between 4.2 and 4.7 will not work with # this packages as they expect the firmware to be named "BCM.hcd" @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { outputHashAlgo = "sha256"; outputHash = "042frb2dmrqfj8q83h5p769q6hg2b3i8fgnyvs9r9a71z7pbsagq"; - meta = with stdenv.lib; { + meta = with lib; { description = "Firmware for Broadcom WIDCOMM® Bluetooth devices"; homepage = "http://www.catalog.update.microsoft.com/Search.aspx?q=Broadcom+bluetooth"; license = licenses.unfree; diff --git a/pkgs/os-specific/linux/firmware/bt-fw-converter/default.nix b/pkgs/os-specific/linux/firmware/bt-fw-converter/default.nix index 5b4506a10ea..a28189a9e47 100644 --- a/pkgs/os-specific/linux/firmware/bt-fw-converter/default.nix +++ b/pkgs/os-specific/linux/firmware/bt-fw-converter/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, makeWrapper, perl, perlPackages, bluez }: +{ lib, stdenv, fetchurl, makeWrapper, perl, perlPackages, bluez }: stdenv.mkDerivation rec { pname = "bt-fw-converter"; @@ -25,11 +25,11 @@ stdenv.mkDerivation rec { wrapProgram $out/bin/bt-fw-converter --set PERL5LIB $PERL5LIB ''; - meta = with stdenv.lib; { + meta = with lib; { homepage = "https://github.com/winterheart/broadcom-bt-firmware/"; description = "A tool that converts hex to hcd based on inf file"; license = licenses.mit; platforms = platforms.linux; maintainers = with maintainers; [ zraexy ]; }; -} +} diff --git a/pkgs/os-specific/linux/firmware/facetimehd-firmware/default.nix b/pkgs/os-specific/linux/firmware/facetimehd-firmware/default.nix index 7d735e69f56..1c3d8fbbaf7 100644 --- a/pkgs/os-specific/linux/firmware/facetimehd-firmware/default.nix +++ b/pkgs/os-specific/linux/firmware/facetimehd-firmware/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, cpio, xz, pkgs }: +{ lib, stdenv, fetchurl, cpio, xz, pkgs }: let @@ -43,7 +43,8 @@ stdenv.mkDerivation { curlOpts = "-r ${dmgRange}"; }; - phases = [ "buildPhase" ]; + dontUnpack = true; + dontInstall = true; buildInputs = [ cpio xz ]; @@ -54,7 +55,7 @@ stdenv.mkDerivation { gunzip -c ${firmwareOut}.gz > $out/lib/firmware/facetimehd/${firmwareOut} ''; - meta = with stdenv.lib; { + meta = with lib; { description = "facetimehd firmware"; homepage = "https://support.apple.com/kb/DL1877"; license = licenses.unfree; diff --git a/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix b/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix index e480b449007..4293f53e47d 100644 --- a/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix +++ b/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix @@ -1,13 +1,13 @@ -{ stdenv, fetchgit, lib }: +{ stdenvNoCC, fetchgit, lib }: -stdenv.mkDerivation rec { +stdenvNoCC.mkDerivation rec { pname = "firmware-linux-nonfree"; - version = "2020-05-19"; + version = "2021-07-16"; src = fetchgit { url = "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"; - rev = lib.replaceStrings ["-"] [""] version; - sha256 = "13yrpgfqxp5l457p3s1c61is410nv0kv6picx9r0m8h1b0v6aym3"; + rev = "refs/tags/" + lib.replaceStrings ["-"] [""] version; + sha256 = "185pnaqf2qmhbcdvvldmbar09zgaxhh3h8x9bxn6079bcdpaskn6"; }; installFlags = [ "DESTDIR=$(out)" ]; @@ -17,11 +17,11 @@ stdenv.mkDerivation rec { outputHashMode = "recursive"; outputHashAlgo = "sha256"; - outputHash = "0pjl70nwarnknxah8vikb051c75mkg25a5m4h3344cw86x8hcx10"; + outputHash = "0g470hj2ylpviijfpjqzsndn2k8kkscj27wqwk51xlk8cr3mrahb"; - meta = with stdenv.lib; { + meta = with lib; { description = "Binary firmware collection packaged by kernel.org"; - homepage = "http://packages.debian.org/sid/firmware-linux-nonfree"; + homepage = "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"; license = licenses.unfreeRedistributableFirmware; platforms = platforms.linux; maintainers = with maintainers; [ fpletz ]; diff --git a/pkgs/os-specific/linux/firmware/firmware-manager/default.nix b/pkgs/os-specific/linux/firmware/firmware-manager/default.nix new file mode 100644 index 00000000000..ee36ab57442 --- /dev/null +++ b/pkgs/os-specific/linux/firmware/firmware-manager/default.nix @@ -0,0 +1,38 @@ +{ rustPlatform, lib, fetchFromGitHub, xz, pkg-config, openssl, dbus, glib, udev, cairo, pango, atk, gdk-pixbuf, gtk3, wrapGAppsHook }: +rustPlatform.buildRustPackage rec { + pname = "firmware-manager"; + version = "0.1.2"; + + src = fetchFromGitHub { + owner = "pop-os"; + repo = pname; + rev = version; + sha256 = "sha256-aKatdjHa/k7j48upkR1O6PFxCUfJYE3KhhzZ9Ohe0Jc="; + }; + + nativeBuildInputs = [ pkg-config wrapGAppsHook ]; + + buildInputs = [ xz openssl dbus glib udev cairo pango atk gdk-pixbuf gtk3 ]; + + depsExtraArgs.postPatch = "make prefix='$(out)' toml-gen"; + + postPatch = '' + sed -i 's|etc|$(prefix)/etc|' Makefile + ''; + + buildPhase = "make prefix='$(out)'"; + + installPhase = "make prefix='$(out)' install"; + + cargoSha256 = "sha256-BUo77ERHvuc8IkDdU3Z/gZZicNHT26IbAgEBnVM3O4U="; + + doCheck = false; + + meta = { + description = "Graphical frontend for firmware management"; + homepage = "https://github.com/pop-os/firmware-manager"; + license = lib.licenses.gpl3; + maintainers = [ lib.maintainers.shlevy ]; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch b/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch index a727e5f4a85..cd42f2f44e2 100644 --- a/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch +++ b/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch @@ -1,5 +1,5 @@ diff --git a/data/meson.build b/data/meson.build -index bb749fd4..b611875b 100644 +index 50154569..f8058a8e 100644 --- a/data/meson.build +++ b/data/meson.build @@ -17,7 +17,7 @@ endif @@ -73,10 +73,10 @@ index 826a3c1d..b78db663 100644 + install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'), ) diff --git a/meson.build b/meson.build -index 87ea67e5..3a4374db 100644 +index b075ca89..8d504d3c 100644 --- a/meson.build +++ b/meson.build -@@ -175,6 +175,12 @@ endif +@@ -194,6 +194,12 @@ endif mandir = join_paths(prefix, get_option('mandir')) localedir = join_paths(prefix, get_option('localedir')) @@ -90,30 +90,14 @@ index 87ea67e5..3a4374db 100644 gio = dependency('gio-2.0', version : '>= 2.45.8') giounix = dependency('gio-unix-2.0', version : '>= 2.45.8', required: false) diff --git a/meson_options.txt b/meson_options.txt -index 3da9b6c4..6c80275b 100644 +index bc76c0ab..8a67d012 100644 --- a/meson_options.txt +++ b/meson_options.txt -@@ -24,6 +24,7 @@ option('plugin_coreboot', type : 'boolean', value : true, description : 'enable - option('systemd', type : 'boolean', value : true, description : 'enable systemd support') - option('systemdunitdir', type: 'string', value: '', description: 'Directory for systemd units') - option('elogind', type : 'boolean', value : false, description : 'enable elogind support') +@@ -1,3 +1,4 @@ +option('sysconfdir_install', type: 'string', value: '', description: 'sysconfdir to use during installation') - option('tests', type : 'boolean', value : true, description : 'enable tests') - option('udevdir', type: 'string', value: '', description: 'Directory for udev rules') - option('efi-cc', type : 'string', value : 'gcc', description : 'the compiler to use for EFI modules') -diff --git a/plugins/ata/meson.build b/plugins/ata/meson.build -index 8444bb8a..fa4a8ad1 100644 ---- a/plugins/ata/meson.build -+++ b/plugins/ata/meson.build -@@ -7,7 +7,7 @@ install_data([ - ) - - install_data(['ata.conf'], -- install_dir: join_paths(sysconfdir, 'fwupd') -+ install_dir: join_paths(sysconfdir_install, 'fwupd') - ) - - shared_module('fu_plugin_ata', + option('build', type : 'combo', choices : ['all', 'standalone', 'library'], value : 'all', description : 'build type') + option('agent', type : 'boolean', value : true, description : 'enable the fwupd agent') + option('consolekit', type : 'boolean', value : true, description : 'enable ConsoleKit support') diff --git a/plugins/dell-esrt/meson.build b/plugins/dell-esrt/meson.build index ed4eee70..76dbdb1d 100644 --- a/plugins/dell-esrt/meson.build @@ -126,7 +110,7 @@ index ed4eee70..76dbdb1d 100644 + install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'), ) diff --git a/plugins/redfish/meson.build b/plugins/redfish/meson.build -index 25fc5c7d..77eb9a83 100644 +index 205d1394..3223f404 100644 --- a/plugins/redfish/meson.build +++ b/plugins/redfish/meson.build @@ -27,7 +27,7 @@ shared_module('fu_plugin_redfish', @@ -139,10 +123,10 @@ index 25fc5c7d..77eb9a83 100644 if get_option('tests') diff --git a/plugins/thunderbolt/meson.build b/plugins/thunderbolt/meson.build -index 06ab34ee..297a9182 100644 +index 6b2368fb..2bd06fed 100644 --- a/plugins/thunderbolt/meson.build +++ b/plugins/thunderbolt/meson.build -@@ -46,7 +46,7 @@ executable('tbtfwucli', +@@ -31,7 +31,7 @@ fu_plugin_thunderbolt = shared_module('fu_plugin_thunderbolt', ) install_data(['thunderbolt.conf'], @@ -151,14 +135,14 @@ index 06ab34ee..297a9182 100644 ) # we use functions from 2.52 in the tests if get_option('tests') and umockdev.found() and gio.version().version_compare('>= 2.52') -diff --git a/plugins/uefi/meson.build b/plugins/uefi/meson.build -index 5838cecc..9ba3d5cd 100644 ---- a/plugins/uefi/meson.build -+++ b/plugins/uefi/meson.build -@@ -101,7 +101,7 @@ if get_option('man') +diff --git a/plugins/uefi-capsule/meson.build b/plugins/uefi-capsule/meson.build +index 0b793a07..ebd3e5ea 100644 +--- a/plugins/uefi-capsule/meson.build ++++ b/plugins/uefi-capsule/meson.build +@@ -97,7 +97,7 @@ if get_option('man') endif - install_data(['uefi.conf'], + install_data(['uefi_capsule.conf'], - install_dir: join_paths(sysconfdir, 'fwupd') + install_dir: join_paths(sysconfdir_install, 'fwupd') ) diff --git a/pkgs/os-specific/linux/firmware/fwupd/default.nix b/pkgs/os-specific/linux/firmware/fwupd/default.nix index 0783fb79296..24e23f2b7e9 100644 --- a/pkgs/os-specific/linux/firmware/fwupd/default.nix +++ b/pkgs/os-specific/linux/firmware/fwupd/default.nix @@ -1,21 +1,20 @@ # Updating? Keep $out/etc synchronized with passthru keys -{ stdenv +{ lib, stdenv , fetchurl -, fetchpatch +, fetchFromGitHub , substituteAll , gtk-doc -, pkgconfig +, pkg-config , gobject-introspection -, intltool +, gettext , libgudev , polkit , libxmlb , gusb , sqlite , libarchive -, glib-networking -, libsoup +, curl , help2man , libjcat , libxslt @@ -23,15 +22,15 @@ , libsmbios , efivar , gnu-efi -, libyaml , valgrind , meson , libuuid , colord , docbook_xml_dtd_43 -, docbook_xsl +, docbook-xsl-nons , ninja , gcab +, gnutls , python3 , wrapGAppsHook , json-glib @@ -67,10 +66,6 @@ let requests ]); - fontsConf = makeFontsConf { - fontDirectories = [ freefont_ttf ]; - }; - isx86 = stdenv.isx86_64 || stdenv.isi686; # Dell isn't supported on Aarch64 @@ -79,6 +74,9 @@ let # only redfish for x86_64 haveRedfish = stdenv.isx86_64; + # only use msr if x86 (requires cpuid) + haveMSR = isx86; + # # Currently broken on Aarch64 # haveFlashrom = isx86; # Experimental @@ -93,30 +91,51 @@ let self = stdenv.mkDerivation rec { pname = "fwupd"; - version = "1.4.5"; - - src = fetchurl { - url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz"; - sha256 = "0hpqxwqbbqn440c2swpnc06z8dskisrli4ynsxrzzqyp0dan46xw"; - }; + version = "1.5.7"; # libfwupd goes to lib # daemon, plug-ins and libfwupdplugin go to out # CLI programs go to out outputs = [ "out" "lib" "dev" "devdoc" "man" "installedTests" ]; + src = fetchurl { + url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz"; + sha256 = "16isrrv6zhdgccbfnz7km5g1cnvfnip7aiidkfhf5dlnrnyb2sxh"; + }; + + patches = [ + # Do not try to create useless paths in /var. + ./fix-paths.patch + + # Allow installing + ./add-option-for-installation-sysconfdir.patch + + # Install plug-ins and libfwupdplugin to out, + # they are not really part of the library. + ./install-fwupdplugin-to-out.patch + + # Installed tests are installed to different output + # we also cannot have fwupd-tests.conf in $out/etc since it would form a cycle. + (substituteAll { + src = ./installed-tests-path.patch; + # Needs a different set of modules than po/make-images. + inherit installedTestsPython; + }) + ]; + nativeBuildInputs = [ meson ninja gtk-doc - pkgconfig + pkg-config gobject-introspection - intltool + gettext shared-mime-info valgrind gcab + gnutls docbook_xml_dtd_43 - docbook_xsl + docbook-xsl-nons help2man libxslt python @@ -130,15 +149,13 @@ let gusb sqlite libarchive - libsoup + curl elfutils gnu-efi - libyaml libgudev colord libjcat libuuid - glib-networking json-glib umockdev bash-completion @@ -148,63 +165,29 @@ let pango tpm2-tss efivar - ] ++ stdenv.lib.optionals haveDell [ + ] ++ lib.optionals haveDell [ libsmbios ]; - patches = [ - ./fix-paths.patch - ./add-option-for-installation-sysconfdir.patch - - # Install plug-ins and libfwupdplugin to out, - # they are not really part of the library. - ./install-fwupdplugin-to-out.patch - - # Installed tests are installed to different output - # we also cannot have fwupd-tests.conf in $out/etc since it would form a cycle. - (substituteAll { - src = ./installed-tests-path.patch; - # Needs a different set of modules than po/make-images. - inherit installedTestsPython; - }) - ]; - - postPatch = '' - patchShebangs \ - contrib/get-version.py \ - contrib/generate-version-script.py \ - meson_post_install.sh \ - po/make-images \ - po/make-images.sh \ - po/test-deps - ''; - - # /etc/os-release not available in sandbox - # doCheck = true; - - preFixup = let - binPath = [ - efibootmgr - bubblewrap - tpm2-tools - ] ++ stdenv.lib.optional haveFlashrom flashrom; - in '' - gappsWrapperArgs+=( - --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" - # See programs reached with fu_common_find_program_in_path in source - --prefix PATH : "${stdenv.lib.makeBinPath binPath}" - ) - ''; - mesonFlags = [ "-Dgtkdoc=true" "-Dplugin_dummy=true" + # We are building the official releases. + "-Dsupported_build=true" + # Would dlopen libsoup to preserve compatibility with clients linking against older fwupd. + # https://github.com/fwupd/fwupd/commit/173d389fa59d8db152a5b9da7cc1171586639c97 + "-Dsoup_session_compat=false" "-Dudevdir=lib/udev" "-Dsystemd_root_prefix=${placeholder "out"}" "-Dinstalled_test_prefix=${placeholder "installedTests"}" "-Defi-libdir=${gnu-efi}/lib" "-Defi-ldsdir=${gnu-efi}/lib" "-Defi-includedir=${gnu-efi}/include/efi" + "-Defi_sbat_distro_id=nixos" + "-Defi_sbat_distro_summary=NixOS" + "-Defi_sbat_distro_pkgname=fwupd" + "-Defi_sbat_distro_version=${version}" + "-Defi_sbat_distro_url=https://search.nixos.org/packages?channel=unstable&show=fwupd&from=0&size=50&sort=relevance&query=fwupd" "--localstatedir=/var" "--sysconfdir=/etc" "-Dsysconfdir_install=${placeholder "out"}/etc" @@ -214,29 +197,83 @@ let # Our builder only adds $lib/lib to rpath but some things link # against libfwupdplugin which is in $out/lib. "-Dc_link_args=-Wl,-rpath,${placeholder "out"}/lib" - ] ++ stdenv.lib.optionals (!haveDell) [ + ] ++ lib.optionals (!haveDell) [ "-Dplugin_dell=false" "-Dplugin_synaptics=false" - ] ++ stdenv.lib.optionals (!haveRedfish) [ + ] ++ lib.optionals (!haveRedfish) [ "-Dplugin_redfish=false" - ] ++ stdenv.lib.optionals haveFlashrom [ + ] ++ lib.optionals haveFlashrom [ "-Dplugin_flashrom=true" + ] ++ lib.optionals (!haveMSR) [ + "-Dplugin_msr=false" ]; - FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file + # TODO: wrapGAppsHook wraps efi capsule even though it is not ELF + dontWrapGApps = true; + + # /etc/os-release not available in sandbox + # doCheck = true; + + # Environment variables + + # Fontconfig error: Cannot load default config file + FONTCONFIG_FILE = + let + fontsConf = makeFontsConf { + fontDirectories = [ freefont_ttf ]; + }; + in fontsConf; # error: “PolicyKit files are missing” # https://github.com/NixOS/nixpkgs/pull/67625#issuecomment-525788428 PKG_CONFIG_POLKIT_GOBJECT_1_ACTIONDIR = "/run/current-system/sw/share/polkit-1/actions"; - # TODO: wrapGAppsHook wraps efi capsule even though it is not elf - dontWrapGApps = true; + # Phase hooks + + postPatch = '' + patchShebangs \ + contrib/get-version.py \ + contrib/generate-version-script.py \ + meson_post_install.sh \ + plugins/uefi-capsule/efi/generate_sbat.py \ + plugins/uefi-capsule/efi/generate_binary.py \ + po/make-images \ + po/make-images.sh \ + po/test-deps + ''; preCheck = '' addToSearchPath XDG_DATA_DIRS "${shared-mime-info}/share" ''; - # so we need to wrap the executables manually + postInstall = + let + testFw = fetchFromGitHub { + owner = "fwupd"; + repo = "fwupd-test-firmware"; + rev = "c13bfb26cae5f4f115dd4e08f9f00b3cb9acc25e"; + sha256 = "US81i7mtLEe85KdWz5r+fQTk61IhqjVkzykBaBPuKL4="; + }; + in '' + # These files have weird licenses so they are shipped separately. + cp --recursive --dereference "${testFw}/installed-tests/tests" "$installedTests/libexec/installed-tests/fwupd" + ''; + + preFixup = let + binPath = [ + efibootmgr + bubblewrap + tpm2-tools + ] ++ lib.optional haveFlashrom flashrom; + in '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + # See programs reached with fu_common_find_program_in_path in source + --prefix PATH : "${lib.makeBinPath binPath}" + ) + ''; + + # Since we had to disable wrapGAppsHook, we need to wrap the executables manually. postFixup = '' find -L "$out/bin" "$out/libexec" -type f -executable -print0 \ | while IFS= read -r -d ''' file; do @@ -247,18 +284,18 @@ let done ''; + separateDebugInfo = true; + passthru = { filesInstalledToEtc = [ - "fwupd/ata.conf" "fwupd/daemon.conf" - "fwupd/redfish.conf" "fwupd/remotes.d/lvfs-testing.conf" "fwupd/remotes.d/lvfs.conf" "fwupd/remotes.d/vendor.conf" "fwupd/remotes.d/vendor-directory.conf" "fwupd/thunderbolt.conf" "fwupd/upower.conf" - "fwupd/uefi.conf" + "fwupd/uefi_capsule.conf" "pki/fwupd/GPG-KEY-Hughski-Limited" "pki/fwupd/GPG-KEY-Linux-Foundation-Firmware" "pki/fwupd/GPG-KEY-Linux-Vendor-Firmware-Service" @@ -266,18 +303,21 @@ let "pki/fwupd-metadata/GPG-KEY-Linux-Foundation-Metadata" "pki/fwupd-metadata/GPG-KEY-Linux-Vendor-Firmware-Service" "pki/fwupd-metadata/LVFS-CA.pem" - ] ++ stdenv.lib.optionals haveDell [ + ] ++ lib.optionals haveDell [ "fwupd/remotes.d/dell-esrt.conf" + ] ++ lib.optionals haveRedfish [ + "fwupd/redfish.conf" ]; - # BlacklistPlugins key in fwupd/daemon.conf - defaultBlacklistedPlugins = [ + # DisabledPlugins key in fwupd/daemon.conf + defaultDisabledPlugins = [ "test" + "test_ble" "invalid" ]; tests = let - listToPy = list: "[${stdenv.lib.concatMapStringsSep ", " (f: "'${f}'") list}]"; + listToPy = list: "[${lib.concatMapStringsSep ", " (f: "'${f}'") list}]"; in { installedTests = nixosTests.installed-tests.fwupd; @@ -295,19 +335,19 @@ let config = configparser.RawConfigParser() config.read('${self}/etc/fwupd/daemon.conf') - package_blacklisted_plugins = config.get('fwupd', 'BlacklistPlugins').rstrip(';').split(';') - passthru_blacklisted_plugins = ${listToPy passthru.defaultBlacklistedPlugins} - assert package_blacklisted_plugins == passthru_blacklisted_plugins, f'Default blacklisted plug-ins in the package {package_blacklisted_plugins} do not match those listed in passthru.defaultBlacklistedPlugins {passthru_blacklisted_plugins}' + package_disabled_plugins = config.get('fwupd', 'DisabledPlugins').rstrip(';').split(';') + passthru_disabled_plugins = ${listToPy passthru.defaultDisabledPlugins} + assert package_disabled_plugins == passthru_disabled_plugins, f'Default disabled plug-ins in the package {package_disabled_plugins} do not match those listed in passthru.defaultDisabledPlugins {passthru_disabled_plugins}' pathlib.Path(os.getenv('out')).touch() ''; }; }; - meta = with stdenv.lib; { + meta = with lib; { homepage = "https://fwupd.org/"; maintainers = with maintainers; [ jtojnar ]; - license = [ licenses.gpl2 ]; + license = licenses.lgpl21Plus; platforms = platforms.linux; }; }; diff --git a/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch b/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch index 432056cbe7f..d8f1a533b82 100644 --- a/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch +++ b/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch @@ -1,3 +1,5 @@ +diff --git a/data/device-tests/hardware.py b/data/device-tests/hardware.py +index 7f1e1907..10fee1b8 100755 --- a/data/device-tests/hardware.py +++ b/data/device-tests/hardware.py @@ -1,4 +1,4 @@ @@ -6,25 +8,41 @@ # pylint: disable=wrong-import-position,too-many-locals,unused-argument,wrong-import-order # # Copyright (C) 2017 Richard Hughes <richard@hughsie.com> +diff --git a/data/installed-tests/meson.build b/data/installed-tests/meson.build +index adadbcdd..1b51bb9c 100644 --- a/data/installed-tests/meson.build +++ b/data/installed-tests/meson.build -@@ -1,4 +1,4 @@ --installed_test_datadir = join_paths(datadir, 'installed-tests', 'fwupd') -+installed_test_datadir = join_paths(get_option('installed_test_prefix'), 'share', 'installed-tests', 'fwupd') - - con2 = configuration_data() - con2.set('installedtestsdir', installed_test_datadir) -@@ -52,5 +52,5 @@ configure_file( +@@ -65,5 +65,5 @@ configure_file( output : 'fwupd-tests.conf', configuration : con2, install: true, - install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'), + install_dir: join_paths(get_option('installed_test_prefix'), 'etc', 'fwupd', 'remotes.d'), ) +diff --git a/meson.build b/meson.build +index 772b7bbe..f59302cd 100644 +--- a/meson.build ++++ b/meson.build +@@ -177,8 +177,8 @@ else + datadir = join_paths(prefix, get_option('datadir')) + sysconfdir = join_paths(prefix, get_option('sysconfdir')) + localstatedir = join_paths(prefix, get_option('localstatedir')) +- installed_test_bindir = join_paths(libexecdir, 'installed-tests', meson.project_name()) +- installed_test_datadir = join_paths(datadir, 'installed-tests', meson.project_name()) ++ installed_test_bindir = join_paths(get_option('installed_test_prefix'), 'libexec', 'installed-tests', meson.project_name()) ++ installed_test_datadir = join_paths(get_option('installed_test_prefix'), 'share', 'installed-tests', meson.project_name()) + endif + mandir = join_paths(prefix, get_option('mandir')) + localedir = join_paths(prefix, get_option('localedir')) +diff --git a/meson_options.txt b/meson_options.txt +index 0a0e2853..5f68d78b 100644 --- a/meson_options.txt +++ b/meson_options.txt -@@ -1,3 +1,4 @@ -+option('installed_test_prefix', type: 'string', value: '', description: 'Prefix for installed tests') - option('build', type : 'combo', choices : ['all', 'standalone', 'library'], value : 'all', description : 'build type') - option('agent', type : 'boolean', value : true, description : 'enable the fwupd agent') - option('consolekit', type : 'boolean', value : true, description : 'enable ConsoleKit support') +@@ -25,6 +26,7 @@ option('plugin_coreboot', type : 'boolean', value : true, description : 'enable + option('systemd', type : 'boolean', value : true, description : 'enable systemd support') + option('systemd_root_prefix', type: 'string', value: '', description: 'Directory to base systemd’s installation directories on') + option('elogind', type : 'boolean', value : false, description : 'enable elogind support') ++option('installed_test_prefix', type: 'string', description: 'Prefix for installed tests') + option('tests', type : 'boolean', value : true, description : 'enable tests') + option('tpm', type : 'boolean', value : true, description : 'enable TPM support') + option('udevdir', type: 'string', value: '', description: 'Directory for udev rules') diff --git a/pkgs/os-specific/linux/firmware/openelec-dvb-firmware/default.nix b/pkgs/os-specific/linux/firmware/openelec-dvb-firmware/default.nix index ff0081a71e1..4ef9370c844 100644 --- a/pkgs/os-specific/linux/firmware/openelec-dvb-firmware/default.nix +++ b/pkgs/os-specific/linux/firmware/openelec-dvb-firmware/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl }: +{ lib, stdenv, fetchurl }: stdenv.mkDerivation rec { pname = "openelec-dvb-firmware"; @@ -9,14 +9,16 @@ stdenv.mkDerivation rec { sha256 = "cef3ce537d213e020af794cecf9de207e2882c375ceda39102eb6fa2580bad8d"; }; - phases = [ "unpackPhase" "installPhase" ]; - installPhase = '' + runHook preInstall + DESTDIR="$out" ./install find $out \( -name 'README.*' -or -name 'LICEN[SC]E.*' -or -name '*.txt' \) | xargs rm + + runHook postInstall ''; - meta = with stdenv.lib; { + meta = with lib; { description = "DVB firmware from OpenELEC"; homepage = "https://github.com/OpenELEC/dvb-firmware"; license = licenses.unfreeRedistributableFirmware; diff --git a/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix b/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix index 23338684764..e6a03ef7df5 100644 --- a/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix +++ b/pkgs/os-specific/linux/firmware/raspberrypi-wireless/default.nix @@ -1,23 +1,23 @@ -{ stdenv, fetchFromGitHub }: +{ lib, stdenv, fetchFromGitHub }: stdenv.mkDerivation { pname = "raspberrypi-wireless-firmware"; - version = "2019-08-16"; + version = "2021-01-28"; srcs = [ (fetchFromGitHub { name = "bluez-firmware"; owner = "RPi-Distro"; repo = "bluez-firmware"; - rev = "96eefffcccc725425fd83be5e0704a5c32b79e54"; - sha256 = "05h57gcxhb2c84h99cyxxx4mzi6kd5fm8pjqkz3nq5vs3nv8cqhr"; + rev = "e7fd166981ab4bb9a36c2d1500205a078a35714d"; + sha256 = "1dkg8mzn7n4afi50ibrda2s33nw2qj52jjjdv9w560q601gms47b"; }) (fetchFromGitHub { name = "firmware-nonfree"; owner = "RPi-Distro"; repo = "firmware-nonfree"; - rev = "130cb86fa30cafbd575d38865fa546350d4c5f9c"; - sha256 = "0jmhgbpldzz8n8lncpzwfl5ym8zgss05y952rfpwcf9v5c7vgabx"; + rev = "83938f78ca2d5a0ffe0c223bb96d72ccc7b71ca5"; + sha256 = "1l4zz86y2hjyvdwjy75abyjwh3wqknd71y3vh1iw5nd0hws8ranp"; }) ]; @@ -41,10 +41,10 @@ stdenv.mkDerivation { outputHashMode = "recursive"; outputHashAlgo = "sha256"; - outputHash = "1r4alf1fbj6vkkf54d0anm47ymb6gn2ykl4a2hhd34b0hnf1dnhn"; + outputHash = "0a54gyrq6jfxxvimaa4yjfiyfwf7wv58v0a32l74yrzyarr3ldby"; - meta = with stdenv.lib; { - description = "Firmware for builtin Wifi/Bluetooth devices in the Raspberry Pi 3 and Zero W"; + meta = with lib; { + description = "Firmware for builtin Wifi/Bluetooth devices in the Raspberry Pi 3+ and Zero W"; homepage = "https://github.com/RPi-Distro/firmware-nonfree"; license = licenses.unfreeRedistributableFirmware; platforms = platforms.linux; diff --git a/pkgs/os-specific/linux/firmware/raspberrypi/armstubs.nix b/pkgs/os-specific/linux/firmware/raspberrypi/armstubs.nix new file mode 100644 index 00000000000..52fa4266577 --- /dev/null +++ b/pkgs/os-specific/linux/firmware/raspberrypi/armstubs.nix @@ -0,0 +1,51 @@ +{ lib, stdenv, fetchFromGitHub, cmake, pkg-config }: + +let + inherit (lib) optionals; +in +stdenv.mkDerivation { + pname = "raspberrypi-armstubs"; + version = "2020-10-08"; + + src = fetchFromGitHub { + owner = "raspberrypi"; + repo = "tools"; + rev = "fc0e73c13865450e95edd046200e42a6e52d8256"; + sha256 = "1g6ikpjcrm5x0rk5aiwjdd8grf997qkvgamcrdxy6k9ln746h25s"; + }; + + NIX_CFLAGS_COMPILE = [ + "-march=armv8-a+crc" + ]; + + preConfigure = '' + cd armstubs + ''; + + makeFlags = [ + "CC8=${stdenv.cc.targetPrefix}cc" + "LD8=${stdenv.cc.targetPrefix}ld" + "OBJCOPY8=${stdenv.cc.targetPrefix}objcopy" + "OBJDUMP8=${stdenv.cc.targetPrefix}objdump" + "CC7=${stdenv.cc.targetPrefix}cc" + "LD7=${stdenv.cc.targetPrefix}ld" + "OBJCOPY7=${stdenv.cc.targetPrefix}objcopy" + "OBJDUMP7=${stdenv.cc.targetPrefix}objdump" + ] + ++ optionals (stdenv.isAarch64) [ "armstub8.bin" "armstub8-gic.bin" ] + ++ optionals (stdenv.isAarch32) [ "armstub7.bin" "armstub8-32.bin" "armstub8-32-gic.bin" ] + ; + + installPhase = '' + mkdir -vp $out/ + cp -v *.bin $out/ + ''; + + meta = with lib; { + description = "Firmware related ARM stubs for the Raspberry Pi"; + homepage = https://github.com/raspberrypi/tools; + license = licenses.bsd3; + platforms = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ]; + maintainers = with maintainers; [ samueldr ]; + }; +} diff --git a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix index 77a28444636..6a826f63966 100644 --- a/pkgs/os-specific/linux/firmware/raspberrypi/default.nix +++ b/pkgs/os-specific/linux/firmware/raspberrypi/default.nix @@ -1,14 +1,15 @@ -{ stdenv, fetchFromGitHub }: +{ lib, stdenvNoCC, fetchFromGitHub }: -stdenv.mkDerivation rec { +stdenvNoCC.mkDerivation rec { + # NOTE: this should be updated with linux_rpi pname = "raspberrypi-firmware"; - version = "1.20200601"; + version = "1.20210303"; src = fetchFromGitHub { owner = "raspberrypi"; repo = "firmware"; rev = version; - sha256 = "1vm038f9digwg8gdxl2bypzlip3ycjb6bl56274gh5i9abl6wjvf"; + sha256 = "0pgiw93hq4gfph5dnwbi8w59g0f7yhmagwzam971k529mh5yl86m"; }; installPhase = '' @@ -16,11 +17,14 @@ stdenv.mkDerivation rec { cp -R boot/* $out/share/raspberrypi/boot ''; - meta = with stdenv.lib; { + dontConfigure = true; + dontBuild = true; + dontFixup = true; + + meta = with lib; { description = "Firmware for the Raspberry Pi board"; homepage = "https://github.com/raspberrypi/firmware"; license = licenses.unfreeRedistributableFirmware; # See https://github.com/raspberrypi/firmware/blob/master/boot/LICENCE.broadcom - platforms = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ]; - maintainers = with maintainers; [ dezgeg tavyc ]; + maintainers = with maintainers; [ dezgeg ]; }; } diff --git a/pkgs/os-specific/linux/firmware/raspberrypi/tools.nix b/pkgs/os-specific/linux/firmware/raspberrypi/tools.nix deleted file mode 100644 index 6c4d49e4e24..00000000000 --- a/pkgs/os-specific/linux/firmware/raspberrypi/tools.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ stdenv, fetchFromGitHub, cmake, pkgconfig }: - -stdenv.mkDerivation { - pname = "raspberrypi-tools"; - version = "2020-05-28"; - - src = fetchFromGitHub { - owner = "raspberrypi"; - repo = "userland"; - rev = "f97b1af1b3e653f9da2c1a3643479bfd469e3b74"; - sha256 = "1r7n05rv96hqjq0rn0qzchmfqs0j7vh3p8jalgh66s6l0vms5mwy"; - }; - - nativeBuildInputs = [ cmake pkgconfig ]; - - preConfigure = '' - cmakeFlagsArray+=("-DVMCS_INSTALL_PREFIX=$out") - '' + stdenv.lib.optionalString stdenv.isAarch64 '' - cmakeFlagsArray+=("-DARM64=1") - ''; - - meta = with stdenv.lib; { - description = "Userland tools for the Raspberry Pi board"; - homepage = "https://github.com/raspberrypi/userland"; - license = licenses.bsd3; - platforms = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ]; - maintainers = with maintainers; [ dezgeg tavyc ]; - }; -} diff --git a/pkgs/os-specific/linux/firmware/rt5677/default.nix b/pkgs/os-specific/linux/firmware/rt5677/default.nix index af0c07d1059..f5d84179fd2 100644 --- a/pkgs/os-specific/linux/firmware/rt5677/default.nix +++ b/pkgs/os-specific/linux/firmware/rt5677/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchgit }: +{ lib, stdenv, fetchgit }: stdenv.mkDerivation { name = "rt5677-firmware"; @@ -15,7 +15,7 @@ stdenv.mkDerivation { cp ./firmware/rt5677_elf_vad $out/lib/firmware ''; - meta = with stdenv.lib; { + meta = with lib; { description = "Firmware for Realtek rt5677 device"; license = licenses.unfreeRedistributableFirmware; maintainers = [ maintainers.zohl ]; diff --git a/pkgs/os-specific/linux/firmware/rtl8192su-firmware/default.nix b/pkgs/os-specific/linux/firmware/rtl8192su-firmware/default.nix index 9b68a49266f..34c2b683ea4 100644 --- a/pkgs/os-specific/linux/firmware/rtl8192su-firmware/default.nix +++ b/pkgs/os-specific/linux/firmware/rtl8192su-firmware/default.nix @@ -1,5 +1,5 @@ -{ stdenv, fetchFromGitHub }: -with stdenv.lib; +{ lib, stdenv, fetchFromGitHub }: +with lib; stdenv.mkDerivation { name = "rtl8192su-unstable-2016-10-05"; @@ -26,7 +26,7 @@ stdenv.mkDerivation { done ''; - meta = with stdenv.lib; { + meta = with lib; { description = "Firmware for Realtek RTL8188SU/RTL8191SU/RTL8192SU"; homepage = "https://github.com/chunkeey/rtl8192su"; license = licenses.unfreeRedistributableFirmware; diff --git a/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix b/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix index f95d1efcef7..36580d4b1b9 100644 --- a/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix +++ b/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix @@ -1,5 +1,5 @@ -{ stdenv, linuxPackages }: -with stdenv.lib; +{ lib, stdenv, linuxPackages }: +with lib; stdenv.mkDerivation { name = "rtl8723bs-firmware-${linuxPackages.rtl8723bs.version}"; inherit (linuxPackages.rtl8723bs) src; @@ -12,7 +12,7 @@ stdenv.mkDerivation { cp rtl8723bs_wowlan.bin "$out/lib/firmware/rtlwifi" ''; - meta = with stdenv.lib; { + meta = with lib; { description = "Firmware for RealTek 8723bs"; homepage = "https://github.com/hadess/rtl8723bs"; license = licenses.unfreeRedistributableFirmware; diff --git a/pkgs/os-specific/linux/firmware/rtl8761b-firmware/default.nix b/pkgs/os-specific/linux/firmware/rtl8761b-firmware/default.nix new file mode 100644 index 00000000000..f2dd36a0e06 --- /dev/null +++ b/pkgs/os-specific/linux/firmware/rtl8761b-firmware/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchFromGitHub }: + +stdenv.mkDerivation { + name = "rtl8761b-firmware"; + + src = fetchFromGitHub { + owner = "Realtek-OpenSource"; + repo = "android_hardware_realtek"; + rev = "rtk1395"; + sha256 = "sha256-vd9sZP7PGY+cmnqVty3sZibg01w8+UNinv8X85B+dzc="; + }; + + installPhase = '' + install -D -pm644 \ + bt/rtkbt/Firmware/BT/rtl8761b_fw \ + $out/lib/firmware/rtl_bt/rtl8761b_fw.bin + + install -D -pm644 \ + bt/rtkbt/Firmware/BT/rtl8761b_config \ + $out/lib/firmware/rtl_bt/rtl8761b_config.bin + ''; + + meta = with lib; { + description = "Firmware for Realtek RTL8761b"; + license = licenses.unfreeRedistributableFirmware; + maintainers = with maintainers; [ edibopp ]; + platforms = with platforms; linux; + }; +} diff --git a/pkgs/os-specific/linux/firmware/rtlwifi_new-firmware/default.nix b/pkgs/os-specific/linux/firmware/rtlwifi_new-firmware/default.nix deleted file mode 100644 index 673ef686e48..00000000000 --- a/pkgs/os-specific/linux/firmware/rtlwifi_new-firmware/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ stdenv, lib, linuxPackages }: - -with lib; - -stdenv.mkDerivation rec { - name = "rtlwifi_new-firmware-${linuxPackages.rtlwifi_new.version}"; - inherit (linuxPackages.rtlwifi_new) src; - - dontBuild = true; - - installPhase = '' - mkdir -p "$out/lib/firmware" - cp -rf firmware/rtlwifi/ "$out/lib/firmware" - ''; - - meta = { - description = "Firmware for the newest Realtek rtlwifi codes"; - inherit (src.meta) homepage; - license = licenses.unfreeRedistributableFirmware; - platforms = with platforms; linux; - maintainers = with maintainers; [ tvorog ]; - }; -} diff --git a/pkgs/os-specific/linux/firmware/rtw88-firmware/default.nix b/pkgs/os-specific/linux/firmware/rtw88-firmware/default.nix new file mode 100644 index 00000000000..b4e07624b6e --- /dev/null +++ b/pkgs/os-specific/linux/firmware/rtw88-firmware/default.nix @@ -0,0 +1,25 @@ +{ stdenvNoCC, lib, linuxPackages }: + +stdenvNoCC.mkDerivation { + pname = "rtw88-firmware"; + inherit (linuxPackages.rtw88) version src; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib/firmware/rtw88 + cp *.bin $out/lib/firmware/rtw88 + + runHook postInstall + ''; + + meta = with lib; { + description = "Firmware for the newest Realtek rtlwifi codes"; + homepage = "https://github.com/lwfinger/rtw88"; + license = licenses.unfreeRedistributableFirmware; + maintainers = with maintainers; [ tvorog ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/os-specific/linux/firmware/rtw89-firmware/default.nix b/pkgs/os-specific/linux/firmware/rtw89-firmware/default.nix new file mode 100644 index 00000000000..8e71770df9c --- /dev/null +++ b/pkgs/os-specific/linux/firmware/rtw89-firmware/default.nix @@ -0,0 +1,25 @@ +{ stdenvNoCC, lib, linuxPackages }: + +stdenvNoCC.mkDerivation { + pname = "rtw89-firmware"; + inherit (linuxPackages.rtw89) version src; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib/firmware/rtw89 + cp *.bin $out/lib/firmware/rtw89 + + runHook postInstall + ''; + + meta = with lib; { + description = "Driver for Realtek 8852AE, an 802.11ax device"; + homepage = "https://github.com/lwfinger/rtw89"; + license = licenses.unfreeRedistributableFirmware; + maintainers = with maintainers; [ tvorog ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/os-specific/linux/firmware/sof-firmware/default.nix b/pkgs/os-specific/linux/firmware/sof-firmware/default.nix index a9fc44e48cc..2409d9b1aba 100644 --- a/pkgs/os-specific/linux/firmware/sof-firmware/default.nix +++ b/pkgs/os-specific/linux/firmware/sof-firmware/default.nix @@ -1,33 +1,29 @@ -{ stdenv, fetchFromGitHub }: +{ lib, stdenv, fetchFromGitHub }: -with stdenv.lib; stdenv.mkDerivation rec { pname = "sof-firmware"; - version = "1.5.1"; + version = "1.7"; src = fetchFromGitHub { owner = "thesofproject"; repo = "sof-bin"; - rev = "ae61d2778b0a0f47461a52da0d1f191f651e0763"; - sha256 = "0j6bpwz49skvdvian46valjw4anwlrnkq703n0snkbngmq78prba"; + rev = "v${version}"; + sha256 = "sha256-Z0Z4HLsIIuW8E1kFNhAECmzj1HkJVfbEw13B8V7PZLk="; }; - phases = [ "unpackPhase" "installPhase" ]; + dontFixup = true; # binaries must not be stripped or patchelfed installPhase = '' - mkdir -p $out/lib/firmware/intel - - sed -i 's/ROOT=.*$/ROOT=$out/g' go.sh - sed -i 's/VERSION=.*$/VERSION=v${version}/g' go.sh - - ./go.sh + mkdir -p $out/lib/firmware/intel/ + cp -a sof-v${version} $out/lib/firmware/intel/sof + cp -a sof-tplg-v${version} $out/lib/firmware/intel/sof-tplg ''; - meta = with stdenv.lib; { + meta = with lib; { description = "Sound Open Firmware"; homepage = "https://www.sofproject.org/"; license = with licenses; [ bsd3 isc ]; - maintainers = with maintainers; [ lblasc evenbrenden ]; + maintainers = with maintainers; [ lblasc evenbrenden hmenke ]; platforms = with platforms; linux; }; } diff --git a/pkgs/os-specific/linux/firmware/system76-firmware/default.nix b/pkgs/os-specific/linux/firmware/system76-firmware/default.nix new file mode 100644 index 00000000000..ca750d89cc5 --- /dev/null +++ b/pkgs/os-specific/linux/firmware/system76-firmware/default.nix @@ -0,0 +1,39 @@ +{ rustPlatform, lib, fetchFromGitHub, xz, pkg-config, openssl, dbus, efibootmgr, makeWrapper }: +rustPlatform.buildRustPackage rec { + pname = "system76-firmware"; + # Check Makefile when updating, make sure postInstall matches make install + version = "1.0.24"; + + src = fetchFromGitHub { + owner = "pop-os"; + repo = pname; + rev = version; + sha256 = "sha256-Poe18HKEQusvN3WF4ZAV1WCvU8/3HKpHEqDsfDO62V0="; + }; + + nativeBuildInputs = [ pkg-config makeWrapper ]; + + buildInputs = [ xz openssl dbus ]; + + cargoBuildFlags = [ "--workspace" ]; + + cargoSha256 = "sha256-gGw3zpxLxQZ3rglpDERO0fSxBOez1Q10Fljis6nyB/4="; + + # Purposefully don't install systemd unit file, that's for NixOS + postInstall = '' + install -D -m -0644 data/system76-firmware-daemon.conf $out/etc/dbus-1/system.d/system76-firmware-daemon.conf + + for bin in $out/bin/system76-firmware-* + do + wrapProgram $bin --prefix PATH : "${efibootmgr}/bin" + done + ''; + + meta = with lib; { + description = "Tools for managing firmware updates for system76 devices"; + homepage = "https://github.com/pop-os/system76-firmware"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ shlevy ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/pkgs/os-specific/linux/firmware/zd1211/default.nix b/pkgs/os-specific/linux/firmware/zd1211/default.nix index d6963c8eb78..15e53557126 100644 --- a/pkgs/os-specific/linux/firmware/zd1211/default.nix +++ b/pkgs/os-specific/linux/firmware/zd1211/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchzip }: +{ lib, fetchzip }: let pname = "zd1211-firmware"; @@ -19,6 +19,6 @@ in fetchzip rec { description = "Firmware for the ZyDAS ZD1211(b) 802.11a/b/g USB WLAN chip"; homepage = "https://sourceforge.net/projects/zd1211/"; license = "GPL"; - platforms = stdenv.lib.platforms.linux; + platforms = lib.platforms.linux; }; } |