1{
2 lib,
3 stdenv,
4 fetchzip,
5 libusb1,
6 glibc,
7 libGL,
8 xorg,
9 makeWrapper,
10 qtx11extras,
11 wrapQtAppsHook,
12 autoPatchelfHook,
13 libX11,
14 libXtst,
15 libXi,
16 libXrandr,
17 libXinerama,
18}:
19
20let
21 dataDir = "var/lib/xppend1v2";
22in
23stdenv.mkDerivation rec {
24 pname = "xp-pen-deco-01-v2-driver";
25 version = "3.4.9-231023";
26
27 src = fetchzip {
28 url = "https://www.xp-pen.com/download/file/id/1936/pid/440/ext/gz.html#.tar.gz";
29 name = "xp-pen-deco-01-v2-driver-${version}.tar.gz";
30 sha256 = "sha256-A/dv6DpelH0NHjlGj32tKv37S+9q3F8cYByiYlMuqLg=";
31 };
32
33 nativeBuildInputs = [
34 wrapQtAppsHook
35 autoPatchelfHook
36 makeWrapper
37 ];
38
39 dontBuild = true;
40
41 dontWrapQtApps = true; # this is done manually
42
43 buildInputs = [
44 libusb1
45 libX11
46 libXtst
47 libXi
48 libXrandr
49 libXinerama
50 glibc
51 libGL
52 (lib.getLib stdenv.cc.cc)
53 qtx11extras
54 ];
55
56 installPhase = ''
57 runHook preInstall
58
59 mkdir -p $out/{opt,bin}
60 cp -r App/usr/lib/pentablet/{PenTablet,resource.rcc,conf} $out/opt
61 chmod +x $out/opt/PenTablet
62 cp -r App/lib $out/lib
63 sed -i 's#usr/lib/pentablet#${dataDir}#g' $out/opt/PenTablet
64
65 runHook postInstall
66 '';
67
68 postFixup = ''
69 makeWrapper $out/opt/PenTablet $out/bin/xp-pen-deco-01-v2-driver \
70 "''${qtWrapperArgs[@]}" \
71 --run 'if [ "$EUID" -ne 0 ]; then echo "Please run as root."; exit 1; fi' \
72 --run 'if [ ! -d /${dataDir} ]; then mkdir -p /${dataDir}; cp -r '$out'/opt/conf /${dataDir}; chmod u+w -R /${dataDir}; fi'
73 '';
74
75 meta = with lib; {
76 homepage = "https://www.xp-pen.com/product/461.html";
77 description = "Drivers for the XP-PEN Deco 01 v2 drawing tablet";
78 platforms = [ "x86_64-linux" ];
79 sourceProvenance = with sourceTypes; [ binaryNativeCode ];
80 maintainers = with maintainers; [ virchau13 ];
81 license = licenses.unfree;
82 };
83}