nixos/bcachefs: soft-deprecate 'linuxPackages_testing_bcachefs'

'bcachefs' is included in the linux kernel since 6.7-rc1

Madoura 890cf0a7 0adbda28

Changed files
+29 -3
nixos
modules
tasks
filesystems
pkgs
+26 -3
nixos/modules/tasks/filesystems/bcachefs.nix
···
};
};
+
assertions = [
+
{
+
assertion = let
+
kernel = config.boot.kernelPackages.kernel;
+
in (
+
kernel.kernelAtLeast "6.7" || (
+
lib.elem (kernel.structuredExtraConfig.BCACHEFS_FS or null) [
+
lib.kernel.module
+
lib.kernel.yes
+
lib.kernel.option.yes
+
]
+
)
+
);
+
+
message = "Linux 6.7-rc1 at minimum or a custom linux kernel with bcachefs support is required";
+
}
+
];
in
{
config = lib.mkIf (lib.elem "bcachefs" config.boot.supportedFilesystems) (lib.mkMerge [
{
+
inherit assertions;
# needed for systemd-remount-fs
system.fsPackages = [ pkgs.bcachefs-tools ];
-
# use kernel package with bcachefs support until it's in mainline
-
# TODO replace with requireKernelConfig
-
boot.kernelPackages = pkgs.linuxPackages_testing_bcachefs;
+
# FIXME: Replace this with `linuxPackages_testing` after NixOS 23.11 is released
+
# FIXME: Replace this with `linuxPackages_latest` when 6.7 is released, remove this line when the LTS version is at least 6.7
+
boot.kernelPackages = lib.mkDefault (
+
# FIXME: Remove warning after NixOS 23.11 is released
+
lib.warn "Please upgrade to Linux 6.7-rc1 or later: 'linuxPackages_testing_bcachefs' is deprecated. Use 'boot.kernelPackages = pkgs.linuxPackages_testing;' to silence this warning"
+
pkgs.linuxPackages_testing_bcachefs
+
);
systemd.services = lib.mapAttrs' (mkUnits "") (lib.filterAttrs (n: fs: (fs.fsType == "bcachefs") && (!utils.fsNeededForBoot fs)) config.fileSystems);
}
(lib.mkIf ((lib.elem "bcachefs" config.boot.initrd.supportedFilesystems) || (bootFs != {})) {
+
inherit assertions;
# chacha20 and poly1305 are required only for decryption attempts
boot.initrd.availableKernelModules = [ "bcachefs" "sha256" "chacha20" "poly1305" ];
boot.initrd.systemd.extraBin = {
+1
pkgs/top-level/all-packages.nix
···
linuxPackages_testing = linuxKernel.packages.linux_testing;
linux_testing = linuxKernel.kernels.linux_testing;
+
# FIXME: Remove and alias to `linux(Packages)_testing`` after 23.11 is released
linuxPackages_testing_bcachefs = linuxKernel.packages.linux_testing_bcachefs;
linux_testing_bcachefs = linuxKernel.kernels.linux_testing_bcachefs;
+2
pkgs/top-level/linux-kernels.nix
···
then latest
else testing;
+
# FIXME: Remove after 23.11 is released
linux_testing_bcachefs = callPackage ../os-specific/linux/kernel/linux-testing-bcachefs.nix {
# Pinned on the last version which Kent's commits can be cleany rebased up.
kernel = linux_6_5;
···
# Intentionally lacks recurseIntoAttrs, as -rc kernels will quite likely break out-of-tree modules and cause failed Hydra builds.
linux_testing = packagesFor kernels.linux_testing;
+
# FIXME: Remove after 23.11 is released
linux_testing_bcachefs = recurseIntoAttrs (packagesFor kernels.linux_testing_bcachefs);
linux_hardened = recurseIntoAttrs (packagesFor kernels.linux_hardened);