Skip to content

Commit

Permalink
msi-ec-kmods: init at 0-unstable-2024-09-19
Browse files Browse the repository at this point in the history
Adds msi-ec-kmods kernel module for msi embedded controllers.
  • Loading branch information
m1dugh committed Oct 6, 2024
1 parent 245a23b commit 6fc5caa
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 0 deletions.
52 changes: 52 additions & 0 deletions pkgs/os-specific/linux/msi-ec/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
stdenv,
lib,
fetchFromGitHub,
linuxPackages,
kernel ? linuxPackages.kernel,
}:
stdenv.mkDerivation {
pname = "msi-ec-kmods";
version = "0-unstable-2024-09-19";

src = fetchFromGitHub {
owner = "BeardOverflow";
repo = "msi-ec";
rev = "94c2a45c04a07096e10d7cb1240e1a201a025dc0";
hash = "sha256-amJUoIf5Sl62BLyHLeam2fzN1s+APoWh2dH5QVfJhCs=";
};

dontMakeSourcesWritable = false;

postPatch =
let
targets = builtins.filter (v: v != "") [
(lib.strings.optionalString (kernel.kernelOlder "6.2") "older-kernel-patch")
(lib.strings.optionalString (kernel.kernelAtLeast "6.11") "6.11-kernel-patch")
];
commands = builtins.map (target: "make ${target}") targets;
in
lib.concatStringsSep "\n" ([ "cp ${./patches/Makefile} ./Makefile" ] ++ commands);

hardeningDisable = [ "pic" ];

makeFlags = kernel.makeFlags ++ [
"KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
"INSTALL_MOD_PATH=$(out)"
"ccflags-y+=-Wno-error=incompatible-pointer-types"
];

nativeBuildInputs = kernel.moduleBuildDependencies;

installTargets = [ "modules_install" ];

enableParallelBuilding = true;

meta = {
description = "Kernel modules for MSI Embedded controller";
homepage = "https://github.com/m1dugh/msi-ec";
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.m1dugh ];
platforms = lib.platforms.linux;
};
}
27 changes: 27 additions & 0 deletions pkgs/os-specific/linux/msi-ec/patches/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Out of the box, the build with this Makefile only works in FHS environments,
# such as on Ubuntu or Debian. On NixOS, you either need to open an FHS
# environment using a Nix shell or build this from a specially crafted Nix
# derivation.
#
# This file follows the conventions written down here:
# https://docs.kernel.org/kbuild/modules.html
# Make it possible to override the kernel src tree location from Nix derivation.
KERNEL ?= $(shell uname -r)
KERNELDIR ?= /lib/modules/$(KERNEL)/build/
ccflags-y := -std=gnu11 -Wno-declaration-after-statement
.PHONY: default
default: modules
# -m: Build as module.
obj-m = msi-ec.o
.PHONY: modules
modules:
@#"M=": Module source. Special variable of the kernel's main Makefile.
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
.PHONY: modules_install
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
6.11-kernel-patch:
git apply 6.11-kernel.patch

older-kernel-patch:
git apply older-kernel.patch
2 changes: 2 additions & 0 deletions pkgs/top-level/linux-kernels.nix
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,8 @@ in {

nullfs = callPackage ../os-specific/linux/nullfs { };

msi-ec = callPackage ../os-specific/linux/msi-ec { };

} // lib.optionalAttrs config.allowAliases {
ati_drivers_x11 = throw "ati drivers are no longer supported by any kernel >=4.1"; # added 2021-05-18;
hid-nintendo = throw "hid-nintendo was added in mainline kernel version 5.16"; # Added 2023-07-30
Expand Down

0 comments on commit 6fc5caa

Please sign in to comment.