I usually have the latest zfs-compatible Kernel and this work pretty well with the NVIDIA driver (I’m running 23.05).
From my config:
let
# use latest kernel, but keep ZFS compatibility, actual version is at most:
# nix eval nixos#legacyPackages.x86_64-linux.zfs.latestCompatibleLinuxPackages.kernel.version
myKernelVersion = pkgs:
let
zfs_version = pkgs.zfs.latestCompatibleLinuxPackages.kernel.version;
latest_kernel_version = pkgs.linuxPackages_latest.kernel.version;
preferred_version =
if pkgs.lib.versionAtLeast zfs_version latest_kernel_version
then pkgs.linuxPackages_latest
else pkgs.zfs.latestCompatibleLinuxPackages;
enforce_version = {version ? preferred_version}: version;
in
# or whatever NVIDIA compiles with
enforce_version { }; # enforce_version { version = pkgs.linuxPackages_6_0; };
in
boot.kernelPackages = myKernelVersion pkgs;
hardware.nvidia.package = (myKernelVersion pkgs_unfree).nvidiaPackages.legacy_470;