nixpkgs now throws an error for this, the other variant in stdenv also exists in the previous release
35 lines
921 B
Nix
35 lines
921 B
Nix
{
|
|
lib,
|
|
pkgs,
|
|
config,
|
|
...
|
|
}:
|
|
|
|
let
|
|
isUnstable = config.boot.zfs.package == pkgs.zfsUnstable;
|
|
zfsCompatibleKernelPackages = lib.filterAttrs (
|
|
name: kernelPackages:
|
|
(builtins.match "linux_[0-9]+_[0-9]+" name) != null
|
|
&& (builtins.tryEval kernelPackages).success
|
|
&& (
|
|
let
|
|
zfsPackage =
|
|
if isUnstable then
|
|
kernelPackages.zfs_unstable
|
|
else
|
|
kernelPackages.${pkgs.zfs.kernelModuleAttribute};
|
|
in
|
|
!(zfsPackage.meta.broken or false)
|
|
)
|
|
) pkgs.linuxKernel.packages;
|
|
latestKernelPackage = lib.last (
|
|
lib.sort (a: b: (lib.versionOlder a.kernel.version b.kernel.version)) (
|
|
builtins.attrValues zfsCompatibleKernelPackages
|
|
)
|
|
);
|
|
in
|
|
{
|
|
# Note this might jump back and worth as kernel get added or removed.
|
|
boot.kernelPackages = lib.mkIf (lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.zfs) latestKernelPackage;
|
|
}
|