1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 fetchpatch,
6 kernel,
7 writeScript,
8 coreutils,
9 gnugrep,
10 jq,
11 curl,
12 common-updater-scripts,
13 runtimeShell,
14}:
15
16stdenv.mkDerivation rec {
17 name = "tp_smapi-${version}-${kernel.version}";
18 version = "0.43";
19
20 src = fetchFromGitHub {
21 owner = "linux-thinkpad";
22 repo = "tp_smapi";
23 rev = "tp-smapi/${version}";
24 sha256 = "1rjb0njckczc2mj05cagvj0lkyvmyk6bw7wkiinv81lw8m90g77g";
25 };
26
27 patches = [
28 # update DEFINE_SEMAPHORE usage for linux 6.4+
29 # https://github.com/linux-thinkpad/tp_smapi/pull/45
30 (fetchpatch {
31 url = "https://github.com/linux-thinkpad/tp_smapi/commit/0c3398b1acf2a2cabd9cee91dc3fe3d35805fa8b.patch";
32 hash = "sha256-J/WvijrpHGwFOZMMxnHdNin5eh8vViTcNb4nwsCqsLs=";
33 })
34 ];
35
36 nativeBuildInputs = kernel.moduleBuildDependencies;
37
38 hardeningDisable = [ "pic" ];
39
40 makeFlags = [
41 "KBASE=${kernel.dev}/lib/modules/${kernel.modDirVersion}"
42 "SHELL=${stdenv.shell}"
43 "HDAPS=1"
44 ];
45
46 installPhase = ''
47 install -v -D -m 644 thinkpad_ec.ko "$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/firmware/thinkpad_ec.ko"
48 install -v -D -m 644 tp_smapi.ko "$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/firmware/tp_smapi.ko"
49 install -v -D -m 644 hdaps.ko "$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/firmware/hdapsd.ko"
50 '';
51
52 dontStrip = true;
53
54 enableParallelBuilding = true;
55
56 passthru.updateScript = import ./update.nix {
57 inherit
58 lib
59 writeScript
60 coreutils
61 gnugrep
62 jq
63 curl
64 common-updater-scripts
65 runtimeShell
66 ;
67 };
68
69 meta = {
70 description = "IBM ThinkPad hardware functions driver";
71 homepage = "https://github.com/linux-thinkpad/tp_smapi";
72 license = lib.licenses.gpl2Plus;
73 maintainers = [ ];
74 # driver is only meant for linux thinkpads i think bellow platforms should cover it.
75 platforms = [
76 "x86_64-linux"
77 "i686-linux"
78 ];
79 };
80}