{ description = "A flake to build a kernel module"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; }; outputs = { self, nixpkgs }: let pkgs = import nixpkgs { system = "x86_64-linux"; }; in { packages.x86_64-linux = { default = pkgs.stdenv.mkDerivation rec { pname = "redragon_m811_battery"; version = "0.1"; kernel = pkgs.linuxPackages_zen.kernel; 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 ''; }; }; }; }