1{
2 coreutils,
3 fetchFromGitHub,
4 kernel,
5 kernelModuleMakeFlags,
6 stdenv,
7 lib,
8 udevCheckHook,
9 util-linux,
10}:
11
12let
13 common = import ../../../development/python-modules/openrazer/common.nix {
14 inherit lib fetchFromGitHub;
15 };
16in
17stdenv.mkDerivation (
18 common
19 // {
20 pname = "openrazer";
21 version = "${common.version}-${kernel.version}";
22
23 nativeBuildInputs = [ udevCheckHook ] ++ kernel.moduleBuildDependencies;
24
25 makeFlags = kernelModuleMakeFlags ++ [
26 "KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
27 ];
28
29 doInstallCheck = true;
30
31 installPhase = ''
32 runHook preInstall
33
34 binDir="$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/hid"
35 mkdir -p "$binDir"
36 cp -v driver/*.ko "$binDir"
37 RAZER_MOUNT_OUT="$out/bin/razer_mount"
38 RAZER_RULES_OUT="$out/etc/udev/rules.d/99-razer.rules"
39 install -m 644 -v -D install_files/udev/99-razer.rules $RAZER_RULES_OUT
40 install -m 755 -v -D install_files/udev/razer_mount $RAZER_MOUNT_OUT
41 substituteInPlace $RAZER_RULES_OUT \
42 --replace razer_mount $RAZER_MOUNT_OUT \
43 --replace plugdev openrazer
44 substituteInPlace $RAZER_MOUNT_OUT \
45 --replace /usr/bin/logger ${util-linux}/bin/logger \
46 --replace chgrp ${coreutils}/bin/chgrp \
47 --replace "PATH='/sbin:/bin:/usr/sbin:/usr/bin'" "" \
48 --replace plugdev openrazer
49
50 runHook postInstall
51 '';
52
53 enableParallelBuilding = true;
54
55 meta = common.meta // {
56 description = "Entirely open source Linux driver that allows you to manage your Razer peripherals on GNU/Linux";
57 mainProgram = "razer_mount";
58 broken = kernel.kernelOlder "4.19";
59 };
60 }
61)