Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I6a6a6964c848d4871ead297560a06c2e1dd2f14d
76 lines
2 KiB
Nix
76 lines
2 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
linuxPackages_latest,
|
|
kernel ? linuxPackages_latest.kernel,
|
|
...
|
|
}: let
|
|
pname = "deepcool";
|
|
version = "0.1.0";
|
|
in
|
|
stdenv.mkDerivation {
|
|
inherit pname version;
|
|
|
|
src = let
|
|
fs = lib.fileset;
|
|
sp = ../.;
|
|
in
|
|
fs.toSource {
|
|
root = sp;
|
|
fileset = fs.unions [
|
|
(sp + /deepcool.c)
|
|
(sp + /Makefile)
|
|
];
|
|
};
|
|
|
|
enableParallelBuilding = true;
|
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
|
hardeningDisable = ["pic" "format"];
|
|
|
|
env = {
|
|
KVERSION = kernel.modDirVersion;
|
|
INSTALL_MOD_PATH = builtins.placeholder "out";
|
|
};
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
echo "Kernel version: $KVERSION"
|
|
make -C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build \
|
|
M=$(pwd) \
|
|
modules
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
echo "Module Installation Path: $INSTALL_MOD_PATH"
|
|
make -C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build \
|
|
M=$(pwd) \
|
|
modules_install
|
|
runHook postInstall
|
|
'';
|
|
|
|
postInstall = ''
|
|
if [ -d $out/lib/modules/${kernel.modDirVersion}/extra ]; then
|
|
mkdir -p $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/hid
|
|
find $out/lib/modules/${kernel.modDirVersion}/extra -name "*.ko*" \
|
|
-exec mv {} $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/hid/ \;
|
|
rmdir $out/lib/modules/${kernel.modDirVersion}/extra 2>/dev/null || true
|
|
fi
|
|
'';
|
|
|
|
passthru = {
|
|
inherit kernel;
|
|
kernelVersion = kernel.modDirVersion;
|
|
moduleName = "deepcool_digital";
|
|
modulePath = "kernel/drivers/hid/deepcool_digital.ko";
|
|
};
|
|
|
|
meta = {
|
|
description = "Linux kernel module for Deepcool Digital USB HID devices";
|
|
license = lib.licenses.gpl2Plus;
|
|
maintainers = [];
|
|
platforms = lib.platforms.linux;
|
|
broken = lib.versionOlder kernel.version "5.10";
|
|
};
|
|
}
|