diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 74e603623412..a6067439a8f3 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -230,6 +230,7 @@ kernel.overrideAttrs (finalAttrs: previousAttrs: { passthru = previousAttrs.passthru or { } // basicArgs // { features = kernelFeatures; inherit commonStructuredConfig structuredExtraConfig extraMakeFlags isZen isHardened isLibre; + isVanilla = !(isHardened || isLibre || isZen); isXen = lib.warn "The isXen attribute is deprecated. All Nixpkgs kernels that support it now have Xen enabled." true; # Adds dependencies needed to edit the config: diff --git a/pkgs/os-specific/linux/zfs/2_1.nix b/pkgs/os-specific/linux/zfs/2_1.nix index 97173a5154a5..d950f5cac15d 100644 --- a/pkgs/os-specific/linux/zfs/2_1.nix +++ b/pkgs/os-specific/linux/zfs/2_1.nix @@ -1,7 +1,6 @@ { callPackage , kernel ? null , stdenv -, linuxKernel , lib , nixosTests , ... @@ -15,9 +14,7 @@ callPackage ./generic.nix args { # this attribute is the correct one for this package. kernelModuleAttribute = "zfs_2_1"; # check the release notes for compatible kernels - kernelCompatible = kernel.kernelOlder "6.8"; - - latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_6; + kernelCompatible = kernel: kernel.kernelOlder "6.8"; # This is a fixed version to the 2.1.x series, move only # if the 2.1.x series moves. diff --git a/pkgs/os-specific/linux/zfs/2_2.nix b/pkgs/os-specific/linux/zfs/2_2.nix index 9e3fde0780f0..469b1cca0968 100644 --- a/pkgs/os-specific/linux/zfs/2_2.nix +++ b/pkgs/os-specific/linux/zfs/2_2.nix @@ -2,7 +2,6 @@ , kernel ? null , stdenv , lib -, linuxKernel , nixosTests , ... } @ args: @@ -15,9 +14,7 @@ callPackage ./generic.nix args { # this attribute is the correct one for this package. kernelModuleAttribute = "zfs_2_2"; # check the release notes for compatible kernels - kernelCompatible = kernel.kernelOlder "6.10"; - - latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_6; + kernelCompatible = kernel: kernel.kernelOlder "6.10"; # this package should point to the latest release. version = "2.2.5"; diff --git a/pkgs/os-specific/linux/zfs/generic.nix b/pkgs/os-specific/linux/zfs/generic.nix index 3adcb97f6a69..b6e0a6d9882e 100644 --- a/pkgs/os-specific/linux/zfs/generic.nix +++ b/pkgs/os-specific/linux/zfs/generic.nix @@ -2,6 +2,7 @@ let genericBuild = { pkgs, lib, stdenv, fetchFromGitHub , autoreconfHook269, util-linux, nukeReferences, coreutils + , linuxKernel , perl , configFile ? "all" @@ -27,8 +28,6 @@ let , kernelModuleAttribute , extraPatches ? [] , rev ? "zfs-${version}" - , isUnstable ? false - , latestCompatibleLinuxPackages , kernelCompatible ? null , maintainers ? (with lib.maintainers; [ amarshall ]) , tests @@ -199,7 +198,13 @@ let outputs = [ "out" ] ++ optionals buildUser [ "dev" ]; passthru = { - inherit enableMail latestCompatibleLinuxPackages kernelModuleAttribute; + inherit enableMail kernelModuleAttribute; + latestCompatibleLinuxPackages = lib.pipe linuxKernel.packages [ + builtins.attrValues + (builtins.filter (kPkgs: (builtins.tryEval kPkgs).success && kPkgs ? kernel && kPkgs.kernel.passthru.isVanilla && kernelCompatible kPkgs.kernel)) + (builtins.sort (a: b: (lib.versionOlder a.kernel.version b.kernel.version))) + lib.last + ]; # The corresponding userspace tools to this instantiation # of the ZFS package set. userspaceTools = genericBuild (outerArgs // { @@ -236,7 +241,7 @@ let mainProgram = "zfs"; # If your Linux kernel version is not yet supported by zfs, try zfs_unstable. # On NixOS set the option `boot.zfs.package = pkgs.zfs_unstable`. - broken = buildKernel && (kernelCompatible != null) && !kernelCompatible; + broken = buildKernel && (kernelCompatible != null) && !(kernelCompatible kernel); }; }; in diff --git a/pkgs/os-specific/linux/zfs/unstable.nix b/pkgs/os-specific/linux/zfs/unstable.nix index 50e1cc1459e9..8ca88c71303c 100644 --- a/pkgs/os-specific/linux/zfs/unstable.nix +++ b/pkgs/os-specific/linux/zfs/unstable.nix @@ -1,7 +1,6 @@ { callPackage , kernel ? null , stdenv -, linuxKernel , nixosTests , fetchpatch , ... @@ -15,9 +14,7 @@ callPackage ./generic.nix args { # this attribute is the correct one for this package. kernelModuleAttribute = "zfs_unstable"; # check the release notes for compatible kernels - kernelCompatible = kernel.kernelOlder "6.11"; - - latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_10; + kernelCompatible = kernel: kernel.kernelOlder "6.11"; # this package should point to a version / git revision compatible with the latest kernel release # IMPORTANT: Always use a tagged release candidate or commits from the @@ -26,7 +23,6 @@ callPackage ./generic.nix args { version = "2.2.5"; # rev = ""; - isUnstable = true; tests = [ nixosTests.zfs.unstable ];