1
0
Fork 0
forked from denis/a811
a811/kernel_module/default.nix
2024-08-31 23:14:20 +02:00

60 lines
1.6 KiB
Nix

{ stdenv, pkgs, lib, kernel }:
stdenv.mkDerivation rec {
pname = "redragon_m811_battery";
version = "0.1";
src = ./.;
hardeningDisable = [ "pic" "format" ]; # 1
nativeBuildInputs = kernel.moduleBuildDependencies; # 2
makeFlags = [
"KERNELRELEASE=${kernel.modDirVersion}" # 3
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" # 4
"INSTALL_MOD_PATH=$(out)" # 5
];
configurePhase =
let makefile = pkgs.writeTextFile { name = ''Makefile''; text = ''
KERNELRELEASE ?= $(shell uname -r)
KERNEL_DIR ?= /lib/modules/$(KERNELRELEASE)/build
PWD := $(shell pwd)
obj-m += redragon_m811_battery.o
all:
${"\t"}$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
install:
${"\t"}$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules_install
clean:
${"\t"}$(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean
insmod:
${"\t"}sudo insmod redragon_m811_battery.ko
rmmod:
${"\t"}sudo rmmod redragon_m811_battery.ko
''; };
in ''
cp "${makefile}" Makefile
'';
buildPhase = ''
make -C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build M=$(pwd)
'';
installPhase = ''
mkdir -p $out/lib/modules/${kernel.modDirVersion}/extra
cp -v *.ko $out/lib/modules/${kernel.modDirVersion}/extra/
'';
meta = with lib; {
description = "A kernel module for the Redragon M811 Mouse battery status";
license = licenses.gpl3;
maintainers = [ ];
platforms = platforms.linux;
};
}