nix: basic packaging
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I6a6a6964c848d4871ead297560a06c2e1dd2f14d
This commit is contained in:
parent
3294fff13c
commit
6abac69e75
3 changed files with 199 additions and 0 deletions
76
nix/kmod.nix
Normal file
76
nix/kmod.nix
Normal file
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
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";
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue