66 lines
2.1 KiB
Nix
66 lines
2.1 KiB
Nix
{ lib, pkgs, inputs, config, ... }:
|
|
let
|
|
# Two-stage callPackage matches nixos-hardware apple/t2 generic.nix.
|
|
linuxT2GenericFromDir =
|
|
{ lib, ... }@args:
|
|
{ kernel, t2linuxPatchesSrc }:
|
|
let
|
|
patchNames = lib.sort lib.lessThan (
|
|
lib.filter (n: builtins.match "^[0-9]{4}-.*\\.patch$" n != null) (
|
|
lib.attrNames (builtins.readDir t2linuxPatchesSrc)
|
|
)
|
|
);
|
|
t2Patches = map
|
|
(name: {
|
|
inherit name;
|
|
patch = "${t2linuxPatchesSrc}/${name}";
|
|
})
|
|
patchNames;
|
|
in
|
|
kernel.override (
|
|
args
|
|
// {
|
|
pname = "linux-t2";
|
|
structuredExtraConfig = with lib.kernel; {
|
|
# In-tree staging driver disabled; we ship deqrocks/apple-bce via boot.extraModulePackages.
|
|
APPLE_BCE = no;
|
|
APPLE_GMUX = module;
|
|
APFS_FS = module;
|
|
BRCMFMAC = module;
|
|
BT_BCM = module;
|
|
BT_HCIBCM4377 = module;
|
|
BT_HCIUART_BCM = yes;
|
|
BT_HCIUART = module;
|
|
HID_APPLETB_BL = module;
|
|
HID_APPLETB_KBD = module;
|
|
HID_APPLE = module;
|
|
HID_MAGICMOUSE = module;
|
|
DRM_APPLETBDRM = module;
|
|
HID_SENSOR_ALS = module;
|
|
SND_PCM = module;
|
|
STAGING = yes;
|
|
};
|
|
kernelPatches = t2Patches ++ (args.kernelPatches or [ ]);
|
|
argsOverride.extraMeta = {
|
|
description = "The Linux kernel (with patches from the T2 Linux project)";
|
|
maintainers = with lib.maintainers; [ soopyc ];
|
|
};
|
|
}
|
|
// (args.argsOverride or { })
|
|
);
|
|
|
|
linuxT2Kernel = (pkgs.callPackage linuxT2GenericFromDir { }) {
|
|
kernel = pkgs.linux_6_19;
|
|
t2linuxPatchesSrc = inputs.t2linux-patches;
|
|
};
|
|
in
|
|
{
|
|
boot.kernelPackages = lib.mkForce (pkgs.linuxPackagesFor linuxT2Kernel);
|
|
|
|
# https://github.com/deqrocks/apple-bce (branch no-state-suspend) — BCE + suspend-oriented fixes.
|
|
# README also mentions companion userspace: t2-upower, t2-kbd-tb (not packaged here yet).
|
|
boot.extraModulePackages = [
|
|
(config.boot.kernelPackages.callPackage ./apple-bce.nix { })
|
|
];
|
|
}
|