{ lib, buildPackages, fetchFromGitHub, fetchpatch, perl, buildLinux, ... } @ args:

buildLinux (args // {
  # NOTE: bcachefs-tools should be updated simultaneously to preserve compatibility
  version = "5.13.0-2021.10.01";
  modDirVersion = "5.13.0";

  src = fetchFromGitHub {
    owner = "koverstreet";
    repo = "bcachefs";
    rev = "4114ced1db465b8f4e7f4d6a78aa11416a9ab5d9";
    sha256 = "sha256-viFC3HHIcjUTDPvloSKKsz9PuSLyvxfYnrtkVUB79mQ=";
  };

  extraConfig = "BCACHEFS_FS m";

  extraMeta = {
    branch = "master";
    hydraPlatforms = []; # Should the testing kernels ever be built on Hydra?
    maintainers = with lib.maintainers; [ davidak chiiruno ];
    platforms = [ "x86_64-linux" ];
  };

} // (args.argsOverride or {}))

{ lib
, fetchpatch
, kernel
, date ? "2021-07-08"
, commit ? "3693b2ca83ff9eda49660b31299d2bebe3a1075f"
, diffHash ? "1sfq3vwc2kxa761s292f2cqrm0vvqvkdx6drpyn5yaxwnapwidcw"
, kernelPatches # must always be defined in bcachefs' all-packages.nix entry because it's also a top-level attribute supplied by callPackage
, argsOverride ? {}
, ...
} @ args:

# NOTE: bcachefs-tools should be updated simultaneously to preserve compatibility
(kernel.override ( args // {
  argsOverride = {
    version = "${kernel.version}-bcachefs-unstable-${date}";
    extraMeta = {
      branch = "master";
      maintainers = with lib.maintainers; [ davidak chiiruno ];
      platforms = [ "x86_64-linux" ];
    };
  } // argsOverride;

  kernelPatches = [ {
      name = "bcachefs-${commit}";
      patch = fetchpatch {
        name = "bcachefs-${commit}.diff";
        url = "https://evilpiepirate.org/git/bcachefs.git/rawdiff/?id=${commit}&id2=v${lib.versions.majorMinor kernel.version}";
        sha256 = diffHash;
      };
      extraConfig = "BCACHEFS_FS m";
    } ] ++ kernelPatches;

})).overrideAttrs ({ meta ? {}, ... }: { meta = meta // { broken = true; }; })

Revert "linux_testing_bcachefs: upstream tarballs rather patchsets"
Revert "linux_testing_bcachefs: upstream tarballs rather patchsets"

This reverts commit 98ae18fa62979ac9837629a39fb18234fcc74772.

Appearantly the consens is that a broken kernel is preferred over a
working one that is based on an outdated kernel:

https://github.com/NixOS/nixpkgs/commit/98ae18fa62979ac9837629a39fb18234fcc74772
