1{
2 lib,
3 fetchFromGitHub,
4 stdenv,
5 cmake,
6 pkg-config,
7 protobuf,
8 python3,
9 ffmpeg,
10 libopus,
11 wrapQtAppsHook,
12 qtbase,
13 qtmultimedia,
14 qtsvg,
15 qtwayland,
16 qtdeclarative,
17 qtwebengine,
18 SDL2,
19 libevdev,
20 udev,
21 curlFull,
22 hidapi,
23 json_c,
24 fftw,
25 miniupnpc,
26 nanopb,
27 speexdsp,
28 libplacebo,
29 vulkan-loader,
30 vulkan-headers,
31 libunwind,
32 shaderc,
33 lcms2,
34 libdovi,
35 xxHash,
36}:
37
38stdenv.mkDerivation rec {
39 pname = "chiaki-ng";
40 version = "1.9.8";
41
42 src = fetchFromGitHub {
43 owner = "streetpea";
44 repo = "chiaki-ng";
45 rev = "v${version}";
46 hash = "sha256-HQmXbi2diewA/+AMjlkyffvD73TkX6D+lMh+FL2Rcz4=";
47 fetchSubmodules = true;
48 };
49
50 nativeBuildInputs = [
51 cmake
52 pkg-config
53 wrapQtAppsHook
54 protobuf
55 python3
56 python3.pkgs.wrapPython
57 python3.pkgs.protobuf
58 python3.pkgs.setuptools
59 ];
60
61 buildInputs = [
62 ffmpeg
63 libopus
64 qtbase
65 qtmultimedia
66 qtsvg
67 qtdeclarative
68 qtwayland
69 qtwebengine
70 protobuf
71 SDL2
72 curlFull
73 hidapi
74 json_c
75 fftw
76 miniupnpc
77 nanopb
78 libevdev
79 udev
80 speexdsp
81 libplacebo
82 vulkan-headers
83 libunwind
84 shaderc
85 lcms2
86 libdovi
87 xxHash
88 ];
89
90 # handle library name discrepancy when curl not built with cmake
91 postPatch = ''
92 substituteInPlace lib/CMakeLists.txt \
93 --replace-fail 'libcurl_shared' 'libcurl'
94 '';
95
96 cmakeFlags = [
97 "-Wno-dev"
98 (lib.cmakeFeature "CHIAKI_USE_SYSTEM_CURL" "true")
99 ];
100
101 qtWrapperArgs = [
102 "--prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib"
103 ];
104
105 pythonPath = [
106 python3.pkgs.requests
107 ];
108
109 postInstall = ''
110 install -Dm755 $src/scripts/psn-account-id.py $out/bin/psn-account-id
111 '';
112
113 postFixup = ''
114 wrapPythonPrograms
115 '';
116
117 meta = with lib; {
118 homepage = "https://streetpea.github.io/chiaki-ng/";
119 description = "Next-Generation of Chiaki (the open-source remote play client for PlayStation)";
120 # Includes OpenSSL linking exception that we currently have no way
121 # to represent.
122 #
123 # See also: <https://github.com/spdx/license-list-XML/issues/939>
124 license = licenses.agpl3Only;
125 maintainers = with maintainers; [ devusb ];
126 platforms = platforms.linux;
127 mainProgram = "chiaki";
128 };
129}