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