1{
2 lib,
3 wrapQtAppsHook,
4 fetchFromGitHub,
5 replaceVars,
6 udev,
7 stdenv,
8 pkg-config,
9 qtbase,
10 cmake,
11 zlib,
12 kmod,
13 libXdmcp,
14 qttools,
15 qtx11extras,
16 libdbusmenu,
17 gnused,
18 withPulseaudio ? stdenv.hostPlatform.isLinux,
19 libpulseaudio,
20 quazip,
21 udevCheckHook,
22}:
23
24stdenv.mkDerivation rec {
25 version = "0.6.2";
26 pname = "ckb-next";
27
28 src = fetchFromGitHub {
29 owner = "ckb-next";
30 repo = "ckb-next";
31 rev = "v${version}";
32 hash = "sha256-lA1FpUee2SpUQwJotbYhG0QX7LT5l2PP9lJ9F3uNtdU=";
33 };
34
35 buildInputs = [
36 udev
37 qtbase
38 zlib
39 libXdmcp
40 qttools
41 qtx11extras
42 libdbusmenu
43 quazip
44 ]
45 ++ lib.optional withPulseaudio libpulseaudio;
46
47 nativeBuildInputs = [
48 wrapQtAppsHook
49 pkg-config
50 cmake
51 udevCheckHook
52 ];
53
54 cmakeFlags = [
55 "-DINSTALL_DIR_ANIMATIONS=libexec"
56 "-DUDEV_RULE_DIRECTORY=lib/udev/rules.d"
57 "-DFORCE_INIT_SYSTEM=systemd"
58 "-DDISABLE_UPDATER=1"
59 ];
60
61 patches = [
62 ./install-dirs.patch
63 (replaceVars ./modprobe.patch {
64 inherit kmod;
65 })
66 ];
67
68 doInstallCheck = true;
69
70 postInstall = ''
71 substituteInPlace "$out/lib/udev/rules.d/99-ckb-next-daemon.rules" \
72 --replace-fail "/usr/bin/env sed" "${lib.getExe gnused}"
73 '';
74
75 meta = with lib; {
76 description = "Driver and configuration tool for Corsair keyboards and mice";
77 homepage = "https://github.com/ckb-next/ckb-next";
78 license = licenses.gpl2Only;
79 platforms = platforms.linux;
80 mainProgram = "ckb-next";
81 maintainers = [ ];
82 };
83}