deepcool/nix/kmod.nix
NotAShelf 6abac69e75
nix: basic packaging
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6a6a6964c848d4871ead297560a06c2e1dd2f14d
2025-10-06 21:01:43 +03:00

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";
};
}