a811/kernel_module/flake.nix
2024-08-31 23:14:20 +02:00

61 lines
1.7 KiB
Nix

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