diff --git a/libvirt-regression-input-default-bus.patch b/libvirt-regression-input-default-bus.patch
deleted file mode 100644
index eb687e5..0000000
--- a/libvirt-regression-input-default-bus.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From c9056e682a8a67dc29e39eb01392fcf8ee978c31 Mon Sep 17 00:00:00 2001
-From: Jonathan Wright <jonathan@almalinux.org>
-Date: Wed, 3 Jan 2024 09:26:59 -0600
-Subject: [PATCH] conf: Restore setting default bus for input devices
-
-Prior to v9.3.0-rc1~30 we used to set default bus for <input/>
-devices, during XML parsing. In the commit this code was moved to
-a post parse callback. But somehow the line that sets the bus in
-one specific case disappeared. Bring it back.
-
-Resolves: https://gitlab.com/libvirt/libvirt/-/issues/577
-Fixes: c4bc4d3b82fbe22e03c986ca896090f481df5c10
-Signed-off-by: Jonathan Wright <jonathan@almalinux.org>
-Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
----
- src/conf/domain_postparse.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/conf/domain_postparse.c b/src/conf/domain_postparse.c
-index e79913b73f..ee27023f3e 100644
---- a/src/conf/domain_postparse.c
-+++ b/src/conf/domain_postparse.c
-@@ -657,6 +657,7 @@ virDomainInputDefPostParse(virDomainInputDef *input,
-             if ((input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ||
-                  input->type == VIR_DOMAIN_INPUT_TYPE_KBD) &&
-                 (ARCH_IS_X86(def->os.arch) || def->os.arch == VIR_ARCH_NONE)) {
-+                    input->bus = VIR_DOMAIN_INPUT_BUS_PS2;
-             } else if (ARCH_IS_S390(def->os.arch) ||
-                        input->type == VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH) {
-                 input->bus = VIR_DOMAIN_INPUT_BUS_VIRTIO;
--- 
diff --git a/libvirt.spec b/libvirt.spec
index c9fc8ab..a74b516 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -96,6 +96,7 @@
 %define with_sanlock          0
 %define with_numad            0
 %define with_nbdkit           0
+%define with_nbdkit_config_default 0
 %define with_firewalld_zone   0
 %define with_netcf            0
 %define with_libssh2          0
@@ -174,15 +175,23 @@
     %endif
 %endif
 
-# We should only enable nbdkit support if the OS ships a SELinux policy that
-# allows libvirt to launch it. Right now that's not the case anywhere, but
-# things should be fine by the time Fedora 40 is released.
-#
-# TODO: add RHEL 9 once a minor release that contains the necessary SELinux
-#       bits exists (we only support the most recent minor release)
+# We want to build with nbdkit support, but should only enable nbdkit by
+# default if the OS ships a SELinux policy that allows libvirt to launch it.
+# Right now that's not the case anywhere, but things should be fine by the time
+# Fedora 40 is released.
 %if %{with_qemu}
-    %if 0%{?fedora} >= 40
+    # rhel-8 lacks pidfd_open
+    %if 0%{?fedora} || 0%{?rhel} >= 9
         %define with_nbdkit 0%{!?_without_nbdkit:1}
+
+        # setting 'with_nbdkit_config_default' must be done only when compiling
+        # in nbdkit support
+        #
+        # TODO: add RHEL 9 once a minor release that contains the necessary SELinux
+        #       bits exists (we only support the most recent minor release)
+        %if 0%{?fedora} >= 40
+            %define with_nbdkit_config_default 0%{!?_without_nbdkit_config_default:1}
+        %endif
     %endif
 %endif
 
@@ -260,8 +269,8 @@
 
 Summary: Library providing a simple virtualization API
 Name: libvirt
-Version: 9.10.0
-Release: 4%{?dist}
+Version: 10.0.0
+Release: 1%{?dist}
 License: GPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND OFL-1.1
 URL: https://libvirt.org/
 
@@ -270,10 +279,6 @@ URL: https://libvirt.org/
 %endif
 Source: https://download.libvirt.org/%{?mainturl}libvirt-%{version}.tar.xz
 
-# Fix regression in default input bus
-# https://gitlab.com/libvirt/libvirt/-/issues/577
-Patch1: libvirt-regression-input-default-bus.patch
-
 Requires: libvirt-daemon = %{version}-%{release}
 Requires: libvirt-daemon-config-network = %{version}-%{release}
 Requires: libvirt-daemon-config-nwfilter = %{version}-%{release}
@@ -396,9 +401,6 @@ BuildRequires: libssh2-devel >= 1.3.0
     %if %{with_netcf}
 BuildRequires: netcf-devel >= 0.2.2
     %endif
-    %if 0%{?fedora} || 0%{?rhel} >= 9
-BuildRequires: passt
-    %endif
     %if %{with_esx}
 BuildRequires: libcurl-devel
     %endif
@@ -412,8 +414,6 @@ BuildRequires: systemtap-sdt-devel
 BuildRequires: util-linux
 # For showmount in FS driver (netfs discovery)
 BuildRequires: nfs-utils
-# For storage wiping with different algorithms
-BuildRequires: scrub
     %if %{with_numad}
 BuildRequires: numad
     %endif
@@ -435,8 +435,6 @@ BuildRequires: mingw32-filesystem
 BuildRequires: mingw32-gcc
 BuildRequires: mingw32-binutils
 BuildRequires: mingw32-glib2 >= 2.48
-BuildRequires: mingw32-libgpg-error
-BuildRequires: mingw32-libgcrypt
 BuildRequires: mingw32-gnutls
 BuildRequires: mingw32-gettext
 BuildRequires: mingw32-libxml2
@@ -450,8 +448,6 @@ BuildRequires: mingw64-filesystem
 BuildRequires: mingw64-gcc
 BuildRequires: mingw64-binutils
 BuildRequires: mingw64-glib2 >= 2.48
-BuildRequires: mingw64-libgpg-error
-BuildRequires: mingw64-libgcrypt
 BuildRequires: mingw64-gnutls
 BuildRequires: mingw64-gettext
 BuildRequires: mingw64-libxml2
@@ -654,6 +650,8 @@ Requires: libvirt-libs = %{version}-%{release}
 Requires: nfs-utils
 # For mkfs
 Requires: util-linux
+# For storage wiping with different algorithms
+Requires: scrub
     %if %{with_qemu}
 # From QEMU RPMs
 Requires: /usr/bin/qemu-img
@@ -1218,6 +1216,12 @@ exit 1
     %define arg_nbdkit -Dnbdkit=disabled
 %endif
 
+%if %{with_nbdkit_config_default}
+    %define arg_nbdkit_config_default -Dnbdkit_config_default=enabled
+%else
+    %define arg_nbdkit_config_default -Dnbdkit_config_default=disabled
+%endif
+
 %if %{with_fuse}
     %define arg_fuse -Dfuse=enabled
 %else
@@ -1333,6 +1337,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
            %{?arg_sanlock} \
            -Dlibpcap=enabled \
            %{?arg_nbdkit} \
+           %{?arg_nbdkit_config_default} \
            -Dlibnl=enabled \
            -Daudit=enabled \
            -Ddtrace=enabled \
@@ -1398,6 +1403,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
   -Dhost_validate=disabled \
   -Dlibiscsi=disabled \
   -Dnbdkit=disabled \
+  -Dnbdkit_config_default=disabled \
   -Dlibnl=disabled \
   -Dlibpcap=disabled \
   -Dlibssh2=disabled \
@@ -2558,6 +2564,9 @@ exit 0
 
 
 %changelog
+* Tue Jan 16 2024 Cole Robinson <crobinso@redhat.com> - 10.0.0-1
+- Update to version 10.0.0
+
 * Wed Jan 03 2024 Jonathan Wright <jonathan@almalinux.org> - 9.10.0-4
 - conf: fix regression for default input bus
 
diff --git a/sources b/sources
index 6a9762a..c02b15d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libvirt-9.10.0.tar.xz) = d35d14810a29aef9319d894e60d493c9011930e0b45d832861c8f8669ee66c0539cdd49f8e0a94801b510ae0f1ed150e4d6a03ea03cc23e8cb2e5456edd76f68
+SHA512 (libvirt-10.0.0.tar.xz) = 4ab28539ff0e9a78ac231b11b4ec88b91d76ff2607cabd0226f04aaece73b05cab4aa9cfcf05073cd257ea270a377cd5d2cb915971583dbec04dadf2cf7ad252