1{ stdenv
2, lib
3, fetchFromGitHub
4, fetchurl
5, fetchpatch
6, patchelf
7, freetype
8, libusb-compat-0_1
9}:
10let
11 license = lib.licenses.gpl2;
12 maintainers = with lib.maintainers; [ peterhoeg ];
13
14 g15src = { pname, version, sha256 }: fetchurl {
15 url = "mirror://sourceforge/g15tools/${pname}/${version}/${pname}-${version}.tar.bz2";
16 inherit sha256;
17 };
18
19 libg15 = stdenv.mkDerivation rec {
20 pname = "libg15";
21 version = "1.2.7";
22
23 src = g15src {
24 inherit pname version;
25 sha256 = "1mkrf622n0cmz57lj8w9q82a9dcr1lmyyxbnrghrxzb6gvifnbqk";
26 };
27
28 buildInputs = [ libusb-compat-0_1 ];
29
30 enableParallelBuilding = true;
31
32 meta = {
33 description = "Provides low-level access to Logitech G11/G15 keyboards and Z10 speakers";
34 inherit license maintainers;
35 };
36 };
37
38 libg15render = stdenv.mkDerivation rec {
39 pname = "libg15render";
40 version = "1.2";
41
42 src = g15src {
43 inherit pname version;
44 sha256 = "03yjb78j1fnr2fwklxy54sdljwi0imvp29m8kmwl9v0pdapka8yj";
45 };
46
47 buildInputs = [ libg15 ];
48
49 enableParallelBuilding = true;
50
51 meta = {
52 description = "A small graphics library optimised for drawing on an LCD";
53 inherit license maintainers;
54 };
55 };
56in
57stdenv.mkDerivation rec {
58 pname = "g15daemon";
59 version = "1.9.5.3";
60
61 src = fetchurl {
62 url = "mirror://sourceforge/${pname}/G15Daemon%201.9x/${version}/${pname}-${version}.tar.bz2";
63 sha256 = "1613gsp5dgilwbshqxxhiyw73ksngnam7n1iw6yxdjkp9fyd2a3d";
64 };
65
66 patches = let
67 patch = fname: sha256: fetchurl rec {
68 url = "https://raw.githubusercontent.com/archlinux/svntogit-community/c0b0b6d4d6d7b79eca68123b20e0c9fb82e1c6e1/g15daemon/trunk/${pname}-${version}-${fname}.patch";
69 name = "${fname}.patch";
70 inherit sha256;
71 };
72 in
73 [
74 (patch "uinput" "1misfff7a1vg0qgfk3n25y7drnm86a4gq96iflpcwr5x3lw7q0h7")
75 (patch "config-write" "0jkrbqvzqrvxr14h5qi17cb4d32caq7vw9kzlz3qwpxdgxjrjvy2")
76 (patch "recv-oob-answer" "1f67iqpj5hcgpakagi7gbw1xviwhy5vizs546l9bfjimx8r2d29g")
77 ./pid_location.patch
78 ];
79
80 buildInputs = [ libg15 libg15render ];
81
82 # Workaround build failure on -fno-common toolchains like upstream gcc-10:
83 # ld: g15_plugins.o:/build/g15daemon-1.9.5.3/g15daemon/./g15daemon.h:218:
84 # multiple definition of `lcdlist_mutex'; utility_funcs.o:g15daemon.h:218: first defined here
85 env.NIX_CFLAGS_COMPILE = "-fcommon";
86
87 enableParallelBuilding = true;
88
89 meta = {
90 description = "A daemon that makes it possible to use the Logitech keyboard G-Buttons and draw on various Logitech LCDs";
91 inherit license maintainers;
92 };
93}