about summary refs log tree commit diff
path: root/pkgs/os-specific/linux/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/firmware')
-rw-r--r--pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch138
-rw-r--r--pkgs/os-specific/linux/firmware/fwupd/default.nix395
-rw-r--r--pkgs/os-specific/linux/firmware/fwupd/efi-app-path.patch13
-rw-r--r--pkgs/os-specific/linux/firmware/fwupd/install-fwupdplugin-to-out.patch14
-rw-r--r--pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch49
-rw-r--r--pkgs/os-specific/linux/firmware/sof-firmware/default.nix12
6 files changed, 7 insertions, 614 deletions
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
deleted file mode 100644
index 4e95ccea8dc11..0000000000000
--- a/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-diff --git a/data/bios-settings.d/meson.build b/data/bios-settings.d/meson.build
-index b0ff5b106..13ac380d0 100644
---- a/data/bios-settings.d/meson.build
-+++ b/data/bios-settings.d/meson.build
-@@ -1,5 +1,5 @@
- if build_standalone and host_machine.system() == 'linux'
- install_data('README.md',
--  install_dir: join_paths(sysconfdir, 'fwupd', 'bios-settings.d')
-+  install_dir: join_paths(sysconfdir_install, 'fwupd', 'bios-settings.d')
- )
- endif
-diff --git a/data/meson.build b/data/meson.build
-index e13da4adf..6858c240f 100644
---- a/data/meson.build
-+++ b/data/meson.build
-@@ -26,7 +26,7 @@ endif
-
- if build_standalone
-   install_data(['fwupd.conf'],
--    install_dir: join_paths(sysconfdir, 'fwupd'),
-+    install_dir: join_paths(sysconfdir_install, 'fwupd'),
-     install_mode: 'rw-r-----',
-   )
-   plugin_quirks += files([
-diff --git a/data/pki/meson.build b/data/pki/meson.build
-index 3649fecea..c3462744b 100644
---- a/data/pki/meson.build
-+++ b/data/pki/meson.build
-@@ -12,13 +12,13 @@ install_data([
-     'GPG-KEY-Linux-Foundation-Firmware',
-     'GPG-KEY-Linux-Vendor-Firmware-Service',
-   ],
--  install_dir: join_paths(sysconfdir, 'pki', 'fwupd')
-+  install_dir: join_paths(sysconfdir_install, 'pki', 'fwupd')
- )
- install_data([
-     'GPG-KEY-Linux-Foundation-Metadata',
-     'GPG-KEY-Linux-Vendor-Firmware-Service',
-   ],
--  install_dir: join_paths(sysconfdir, 'pki', 'fwupd-metadata')
-+  install_dir: join_paths(sysconfdir_install, 'pki', 'fwupd-metadata')
- )
- endif
-
-@@ -26,11 +26,11 @@ if supported_pkcs7
- install_data([
-     'LVFS-CA.pem',
-   ],
--  install_dir: join_paths(sysconfdir, 'pki', 'fwupd')
-+  install_dir: join_paths(sysconfdir_install, 'pki', 'fwupd')
- )
- install_data([
-     'LVFS-CA.pem',
-   ],
--  install_dir: join_paths(sysconfdir, 'pki', 'fwupd-metadata')
-+  install_dir: join_paths(sysconfdir_install, 'pki', 'fwupd-metadata')
- )
- endif
-diff --git a/data/remotes.d/meson.build b/data/remotes.d/meson.build
-index c20a1a05e..5354bac7f 100644
---- a/data/remotes.d/meson.build
-+++ b/data/remotes.d/meson.build
-@@ -15,14 +15,14 @@ if build_standalone and get_option('lvfs') != 'false'
-     output: 'lvfs.conf',
-     configuration: con3,
-     install: true,
--    install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'),
-+    install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'),
-   )
-   configure_file(
-     input: 'lvfs-testing.conf',
-     output: 'lvfs-testing.conf',
-     configuration: con3,
-     install: true,
--    install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'),
-+    install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'),
-   )
-   i18n.merge_file(
-     input: 'lvfs.metainfo.xml',
-@@ -56,12 +56,12 @@ configure_file(
-   output: 'vendor.conf',
-   configuration: con2,
-   install: true,
--  install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'),
-+  install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'),
- )
- configure_file(
-   input: 'vendor-directory.conf',
-   output: 'vendor-directory.conf',
-   configuration: con2,
-   install: true,
--  install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'),
-+  install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'),
- )
-diff --git a/meson.build b/meson.build
-index ca6ccdf92..0a3097d90 100644
---- a/meson.build
-+++ b/meson.build
-@@ -195,6 +195,12 @@ endif
- mandir = join_paths(prefix, get_option('mandir'))
- localedir = join_paths(prefix, get_option('localedir'))
-
-+if get_option('sysconfdir_install') != ''
-+  sysconfdir_install = join_paths(prefix, get_option('sysconfdir_install'))
-+else
-+  sysconfdir_install = sysconfdir
-+endif
-+
- diffcmd = find_program('diff')
- gio = dependency('gio-2.0', version: '>= 2.68.0')
- giounix = dependency('gio-unix-2.0', version: '>= 2.68.0', required: false)
-
-diff --git a/meson_options.txt b/meson_options.txt
-index 877891126..986d0ee31 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -1,3 +1,8 @@
-+option('sysconfdir_install',
-+  type: 'string',
-+  value: '',
-+  description: 'sysconfdir to use during installation'
-+)
- option('build',
-   type: 'combo',
-   choices: [
-diff --git a/plugins/uefi-capsule/meson.build b/plugins/uefi-capsule/meson.build
-index eb196c21e..c9a29f680 100644
---- a/plugins/uefi-capsule/meson.build
-+++ b/plugins/uefi-capsule/meson.build
-@@ -20,7 +20,7 @@ if host_machine.system() == 'linux'
-     output: '35_fwupd',
-     configuration: con2,
-     install: true,
--    install_dir: join_paths(sysconfdir, 'grub.d')
-+    install_dir: join_paths(sysconfdir_install, 'grub.d')
-   )
- elif host_machine.system() == 'freebsd'
-   backend_srcs += 'fu-uefi-backend-freebsd.c'
diff --git a/pkgs/os-specific/linux/firmware/fwupd/default.nix b/pkgs/os-specific/linux/firmware/fwupd/default.nix
deleted file mode 100644
index ac1605f979e72..0000000000000
--- a/pkgs/os-specific/linux/firmware/fwupd/default.nix
+++ /dev/null
@@ -1,395 +0,0 @@
-# Updating? Keep $out/etc synchronized with passthru keys
-
-{ stdenv
-, lib
-, fetchFromGitHub
-, gi-docgen
-, pkg-config
-, gobject-introspection
-, gettext
-, libgudev
-, libdrm
-, polkit
-, libxmlb
-, glib
-, gusb
-, sqlite
-, libarchive
-, libredirect
-, curl
-, libjcat
-, elfutils
-, valgrind
-, meson
-, libuuid
-, ninja
-, gnutls
-, protobufc
-, python3
-, wrapGAppsNoGuiHook
-, ensureNewerSourcesForZipFilesHook
-, json-glib
-, bash-completion
-, shared-mime-info
-, umockdev
-, vala
-, makeFontsConf
-, freefont_ttf
-, pango
-, tpm2-tss
-, bubblewrap
-, efibootmgr
-, flashrom
-, tpm2-tools
-, fwupd-efi
-, nixosTests
-, runCommand
-, unstableGitUpdater
-, modemmanager
-, libqmi
-, libmbim
-, libcbor
-, xz
-, enableFlashrom ? false
-, enablePassim ? false
-}:
-
-let
-  python = python3.withPackages (p: with p; [
-    jinja2
-    pygobject3
-    setuptools
-  ]);
-
-  isx86 = stdenv.hostPlatform.isx86;
-
-  # Dell isn't supported on Aarch64
-  haveDell = isx86;
-
-  # 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
-  haveFlashrom = isx86 && enableFlashrom;
-
-  runPythonCommand =
-    name:
-    buildCommandPython:
-
-    runCommand
-      name
-      {
-        nativeBuildInputs = [ python3 ];
-        inherit buildCommandPython;
-      }
-      ''
-        exec python3 -c "$buildCommandPython"
-      '';
-
-  test-firmware =
-    let
-      version = "unstable-2022-04-02";
-      src = fetchFromGitHub {
-        name = "fwupd-test-firmware-${version}";
-        owner = "fwupd";
-        repo = "fwupd-test-firmware";
-        rev = "39954e434d63e20e85870dd1074818f48a0c08b7";
-        hash = "sha256-d4qG3fKyxkfN91AplRYqARFz+aRr+R37BpE450bPxi0=";
-        passthru = {
-          inherit src version; # For update script
-          updateScript = unstableGitUpdater {
-            url = "${test-firmware.meta.homepage}.git";
-          };
-        };
-      };
-    in
-    src // {
-      meta = src.meta // {
-        # For update script
-        position =
-          let
-            pos = builtins.unsafeGetAttrPos "updateScript" test-firmware;
-          in
-          pos.file + ":" + toString pos.line;
-      };
-    };
-in
-stdenv.mkDerivation (finalAttrs: {
-  pname = "fwupd";
-  version = "1.9.11";
-
-  # 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 = fetchFromGitHub {
-    owner = "fwupd";
-    repo = "fwupd";
-    rev = finalAttrs.version;
-    hash = "sha256-chPZ9nGhFcaExoJDJvFy8terIGZRU6S90RKBYkoWyGQ=";
-  };
-
-  patches = [
-    # Since /etc is the domain of NixOS, not Nix,
-    # we cannot install files there.
-    # Let’s install the files to $prefix/etc
-    # while still reading them from /etc.
-    # NixOS module for fwupd will take take care of copying the files appropriately.
-    ./add-option-for-installation-sysconfdir.patch
-
-    # Install plug-ins and libfwupdplugin to $out output,
-    # 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.
-    ./installed-tests-path.patch
-
-    # EFI capsule is located in fwupd-efi now.
-    ./efi-app-path.patch
-  ];
-
-  nativeBuildInputs = [
-    # required for firmware zipping
-    ensureNewerSourcesForZipFilesHook
-    meson
-    ninja
-    gi-docgen
-    pkg-config
-    gobject-introspection
-    gettext
-    shared-mime-info
-    valgrind
-    gnutls
-    protobufc # for protoc
-    python
-    wrapGAppsNoGuiHook
-    vala
-  ];
-
-  buildInputs = [
-    polkit
-    libxmlb
-    gusb
-    sqlite
-    libarchive
-    libdrm
-    curl
-    elfutils
-    libgudev
-    libjcat
-    libuuid
-    json-glib
-    umockdev
-    bash-completion
-    pango
-    tpm2-tss
-    fwupd-efi
-    protobufc
-    modemmanager
-    libmbim
-    libcbor
-    libqmi
-    xz # for liblzma
-  ] ++ lib.optionals haveFlashrom [
-    flashrom
-  ];
-
-  mesonFlags = [
-    "-Ddocs=enabled"
-    # We are building the official releases.
-    "-Dsupported_build=enabled"
-    "-Dlaunchd=disabled"
-    "-Dudevdir=lib/udev"
-    "-Dsystemd_root_prefix=${placeholder "out"}"
-    "-Dinstalled_test_prefix=${placeholder "installedTests"}"
-    "--localstatedir=/var"
-    "--sysconfdir=/etc"
-    "-Dsysconfdir_install=${placeholder "out"}/etc"
-    "-Defi_os_dir=nixos"
-    "-Dplugin_modem_manager=enabled"
-    # We do not want to place the daemon into lib (cyclic reference)
-    "--libexecdir=${placeholder "out"}/libexec"
-  ] ++ lib.optionals (!enablePassim) [
-    "-Dpassim=disabled"
-  ] ++ lib.optionals (!haveDell) [
-    "-Dplugin_synaptics_mst=disabled"
-  ] ++ lib.optionals (!haveRedfish) [
-    "-Dplugin_redfish=disabled"
-  ] ++ lib.optionals (!haveFlashrom) [
-    "-Dplugin_flashrom=disabled"
-  ] ++ lib.optionals (!haveMSR) [
-    "-Dplugin_msr=disabled"
-  ];
-
-  # TODO: wrapGAppsHook wraps efi capsule even though it is not ELF
-  dontWrapGApps = true;
-
-  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";
-
-  # Phase hooks
-
-  postPatch = ''
-    patchShebangs \
-      contrib/generate-version-script.py \
-      contrib/generate-man.py \
-      po/test-deps
-
-    substituteInPlace data/installed-tests/fwupdmgr-p2p.sh \
-      --replace "gdbus" ${glib.bin}/bin/gdbus
-
-    # tests fail with: Failed to load SMBIOS: neither SMBIOS or DT found
-    sed -i 's/test(.*)//' plugins/lenovo-thinklmi/meson.build
-    sed -i 's/test(.*)//' plugins/mtd/meson.build
-    # fails on amd cpu
-    sed -i 's/test(.*)//' libfwupdplugin/meson.build
-    # in nixos test tries to chmod 0777 $out/share/installed-tests/fwupd/tests/redfish.conf
-    sed -i "s/get_option('tests')/false/" plugins/redfish/meson.build
-
-    # Device tests use device emulation and need to download emulation data from
-    # the internet, which does not work on our test VMs.
-    # It's probably better to disable these tests for NixOS by setting
-    # the device-tests directory to /dev/null.
-    # For more info on device emulation, see:
-    #   https://github.com/fwupd/fwupd/blob/eeeac4e9ba8a6513428b456a551bffd95d533e50/docs/device-emulation.md
-    substituteInPlace data/installed-tests/meson.build \
-      --replace "join_paths(datadir, 'fwupd', 'device-tests')" "'/dev/null'"
-  '';
-
-  preBuild = ''
-    # jcat-tool at buildtime requires a home directory
-    export HOME="$(mktemp -d)"
-  '';
-
-  preCheck = ''
-    addToSearchPath XDG_DATA_DIRS "${shared-mime-info}/share"
-
-    echo "12345678901234567890123456789012" > machine-id
-    export NIX_REDIRECTS=/etc/machine-id=$(realpath machine-id) \
-    LD_PRELOAD=${libredirect}/lib/libredirect.so
-  '';
-
-  postInstall = ''
-    # These files have weird licenses so they are shipped separately.
-    cp --recursive --dereference "${test-firmware}/installed-tests/tests" "$installedTests/libexec/installed-tests/fwupd"
-  '';
-
-  preFixup =
-    let
-      binPath = [
-        efibootmgr
-        bubblewrap
-        tpm2-tools
-      ];
-    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}"
-      )
-    '';
-
-  postFixup = ''
-    # Since we had to disable wrapGAppsHook, we need to wrap the executables manually.
-    find -L "$out/bin" "$out/libexec" -type f -executable -print0 \
-      | while IFS= read -r -d ''' file; do
-      if [[ "$file" != *.efi ]]; then
-        echo "Wrapping program $file"
-        wrapGApp "$file"
-      fi
-    done
-
-    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
-    moveToOutput "share/doc" "$devdoc"
-  '';
-
-  separateDebugInfo = true;
-
-  passthru = {
-    filesInstalledToEtc = [
-      "fwupd/bios-settings.d/README.md"
-      "fwupd/fwupd.conf"
-      "fwupd/remotes.d/lvfs-testing.conf"
-      "fwupd/remotes.d/lvfs.conf"
-      "fwupd/remotes.d/vendor.conf"
-      "fwupd/remotes.d/vendor-directory.conf"
-      "pki/fwupd/GPG-KEY-Linux-Foundation-Firmware"
-      "pki/fwupd/GPG-KEY-Linux-Vendor-Firmware-Service"
-      "pki/fwupd/LVFS-CA.pem"
-      "pki/fwupd-metadata/GPG-KEY-Linux-Foundation-Metadata"
-      "pki/fwupd-metadata/GPG-KEY-Linux-Vendor-Firmware-Service"
-      "pki/fwupd-metadata/LVFS-CA.pem"
-      "grub.d/35_fwupd"
-    ];
-
-    # DisabledPlugins key in fwupd/daemon.conf
-    defaultDisabledPlugins = [
-      "test"
-      "test_ble"
-    ];
-
-    # For updating.
-    inherit test-firmware;
-
-    # For downstream consumers that need the fwupd-efi this was built with.
-    inherit fwupd-efi;
-
-    tests =
-      let
-        listToPy = list: "[${lib.concatMapStringsSep ", " (f: "'${f}'") list}]";
-      in
-      {
-        installedTests = nixosTests.installed-tests.fwupd;
-
-        passthruMatches = runPythonCommand "fwupd-test-passthru-matches" ''
-          import itertools
-          import configparser
-          import os
-          import pathlib
-
-          etc = '${finalAttrs.finalPackage}/etc'
-          package_etc = set(itertools.chain.from_iterable([[os.path.relpath(os.path.join(prefix, file), etc) for file in files] for (prefix, dirs, files) in os.walk(etc)]))
-          passthru_etc = set(${listToPy finalAttrs.passthru.filesInstalledToEtc})
-          assert len(package_etc - passthru_etc) == 0, f'fwupd package contains the following paths in /etc that are not listed in passthru.filesInstalledToEtc: {package_etc - passthru_etc}'
-          assert len(passthru_etc - package_etc) == 0, f'fwupd package lists the following paths in passthru.filesInstalledToEtc that are not contained in /etc: {passthru_etc - package_etc}'
-
-          config = configparser.RawConfigParser()
-          config.read('${finalAttrs.finalPackage}/etc/fwupd/fwupd.conf')
-          package_disabled_plugins = config.get('fwupd', 'DisabledPlugins').rstrip(';').split(';')
-          passthru_disabled_plugins = ${listToPy finalAttrs.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 lib; {
-    homepage = "https://fwupd.org/";
-    maintainers = with maintainers; [ rvdp ];
-    license = licenses.lgpl21Plus;
-    platforms = platforms.linux;
-  };
-})
diff --git a/pkgs/os-specific/linux/firmware/fwupd/efi-app-path.patch b/pkgs/os-specific/linux/firmware/fwupd/efi-app-path.patch
deleted file mode 100644
index f9e65a10e657c..0000000000000
--- a/pkgs/os-specific/linux/firmware/fwupd/efi-app-path.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/meson.build b/meson.build
-index b18108c74..7e674b4d2 100644
---- a/meson.build
-+++ b/meson.build
-@@ -404,7 +404,7 @@ endif
-
- # EFI
- if build_standalone
--  efi_app_location = join_paths(libexecdir, 'fwupd', 'efi')
-+  efi_app_location = join_paths(dependency('fwupd-efi').get_variable(pkgconfig: 'prefix'), 'libexec', 'fwupd', 'efi')
-   conf.set_quoted('EFI_APP_LOCATION', efi_app_location)
-   if host_cpu == 'x86'
-     EFI_MACHINE_TYPE_NAME = 'ia32'
diff --git a/pkgs/os-specific/linux/firmware/fwupd/install-fwupdplugin-to-out.patch b/pkgs/os-specific/linux/firmware/fwupd/install-fwupdplugin-to-out.patch
deleted file mode 100644
index e6269ae840bb9..0000000000000
--- a/pkgs/os-specific/linux/firmware/fwupd/install-fwupdplugin-to-out.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/meson.build b/meson.build
-index 9ae278b66..7cddf1a0d 100644
---- a/meson.build
-+++ b/meson.build
-@@ -507,7 +507,7 @@ if build_standalone
- if host_machine.system() == 'windows'
-   libdir_pkg = 'fwupd-@0@'.format(fwupd_version)
- else
--  libdir_pkg = join_paths(libdir, 'fwupd-@0@'.format(fwupd_version))
-+  libdir_pkg = join_paths(prefix, 'lib', 'fwupd-@0@'.format(fwupd_version))
- endif
- conf.set_quoted('FWUPD_LIBDIR_PKG', libdir_pkg)
- endif
-
diff --git a/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch b/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch
deleted file mode 100644
index 2954f89e14c38..0000000000000
--- a/pkgs/os-specific/linux/firmware/fwupd/installed-tests-path.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff --git a/data/installed-tests/meson.build b/data/installed-tests/meson.build
-index dfce86b1c..5e34c4fa6 100644
---- a/data/installed-tests/meson.build
-+++ b/data/installed-tests/meson.build
-@@ -86,5 +86,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 ca6ccdf92..36b1b47b0 100644
---- a/meson.build
-+++ b/meson.build
-@@ -188,8 +188,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())
-   daemon_dir = join_paths(libexecdir, 'fwupd')
- endif
- mandir = join_paths(prefix, get_option('mandir'))
-@@ -497,6 +497,7 @@ gnome = import('gnome')
- i18n = import('i18n')
- 
- conf.set_quoted('FWUPD_PREFIX', prefix)
-+conf.set_quoted('FWUPD_INSTALLED_TEST_PREFIX', get_option('installed_test_prefix'))
- conf.set_quoted('FWUPD_BINDIR', bindir)
- conf.set_quoted('FWUPD_LIBDIR', libdir)
- conf.set_quoted('FWUPD_LIBEXECDIR', libexecdir)
-diff --git a/meson_options.txt b/meson_options.txt
-index 877891126..bfc5d1afd 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -452,6 +452,10 @@ option('elogind',
-     'false': 'disabled',
-   },
- )
-+option('installed_test_prefix',
-+  type: 'string',
-+  description: 'Prefix for installed tests'
-+)
- option('tests',
-   type: 'boolean',
-   value: true,
diff --git a/pkgs/os-specific/linux/firmware/sof-firmware/default.nix b/pkgs/os-specific/linux/firmware/sof-firmware/default.nix
index 2f33a139c9d3d..737c7b9369356 100644
--- a/pkgs/os-specific/linux/firmware/sof-firmware/default.nix
+++ b/pkgs/os-specific/linux/firmware/sof-firmware/default.nix
@@ -5,11 +5,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "sof-firmware";
-  version = "2.2.6";
+  version = "2023.12";
 
   src = fetchurl {
-    url = "https://github.com/thesofproject/sof-bin/releases/download/v${version}/sof-bin-v${version}.tar.gz";
-    sha256 = "sha256-kyLCp2NtAoRcOyaYTVirj3jWP/THZtCEwxlqWF4ACQU=";
+    url = "https://github.com/thesofproject/sof-bin/releases/download/v${version}/sof-bin-${version}.tar.gz";
+    sha256 = "sha256-VeR+tj5iSNvat9ojK7HjHKLnFVs33BFvbcWxc8ujUDs=";
   };
 
   dontFixup = true; # binaries must not be stripped or patchelfed
@@ -17,8 +17,10 @@ stdenvNoCC.mkDerivation rec {
   installPhase = ''
     runHook preInstall
     mkdir -p $out/lib/firmware/intel
-    cp -av sof-v${version} $out/lib/firmware/intel/sof
-    cp -av sof-tplg-v${version} $out/lib/firmware/intel/sof-tplg
+    cp -av sof $out/lib/firmware/intel/sof
+    cp -av sof-tplg $out/lib/firmware/intel/sof-tplg
+    cp -av sof-ace-tplg $out/lib/firmware/intel/sof-ace-tplg
+    cp -av sof-ipc4 $out/lib/firmware/intel/sof-ipc4
     runHook postInstall
   '';