Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 cmake,
6 pkg-config,
7 gtkmm3,
8 cairomm,
9 yaml-cpp,
10 glfw,
11 libtirpc,
12 liblxi,
13 libsigcxx,
14 glew,
15 zstd,
16 wrapGAppsHook4,
17 shaderc,
18 vulkan-headers,
19 vulkan-loader,
20 vulkan-tools,
21 glslang,
22 spirv-tools,
23 ffts,
24 moltenvk,
25 llvmPackages,
26}:
27
28stdenv.mkDerivation {
29 pname = "scopehal-apps";
30 version = "0-unstable-2024-09-16";
31
32 src = fetchFromGitHub {
33 owner = "ngscopeclient";
34 repo = "scopehal-apps";
35 rev = "d2a1a2f17e9398a3f60c99483dd2f6dbc2e62efc";
36 hash = "sha256-FQoaTuL6mEqnH8oNXwHpDcOEAPGExqj6lhrUhZ9VAQ4=";
37 fetchSubmodules = true;
38 };
39
40 strictDeps = true;
41
42 nativeBuildInputs = [
43 cmake
44 pkg-config
45 shaderc
46 spirv-tools
47 ]
48 ++ lib.optionals stdenv.hostPlatform.isLinux [
49 wrapGAppsHook4
50 ];
51
52 buildInputs = [
53 cairomm
54 glew
55 glfw
56 glslang
57 liblxi
58 libsigcxx
59 vulkan-headers
60 vulkan-loader
61 vulkan-tools
62 yaml-cpp
63 zstd
64 ]
65 ++ lib.optionals stdenv.hostPlatform.isLinux [
66 ffts
67 gtkmm3
68 libtirpc
69 ]
70 ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ]
71 ++ lib.optionals stdenv.hostPlatform.isDarwin [
72 moltenvk
73 ];
74
75 # Targets InitializeSearchPaths
76 postPatch = ''
77 substituteInPlace lib/scopehal/scopehal.cpp \
78 --replace-fail '"/share/' '"/../share/'
79 '';
80
81 cmakeFlags = lib.optionals stdenv.hostPlatform.isDarwin [
82 "-DCMAKE_INSTALL_RPATH=${lib.strings.makeLibraryPath [ vulkan-loader ]}"
83 ];
84
85 meta = {
86 description = "Advanced test & measurement remote control and analysis suite";
87 homepage = "https://www.ngscopeclient.org/";
88 license = lib.licenses.bsd3;
89 mainProgram = "ngscopeclient";
90 maintainers = with lib.maintainers; [
91 bgamari
92 carlossless
93 ];
94 platforms = lib.platforms.linux ++ lib.platforms.darwin;
95 };
96}