1{
2 lib,
3 buildDotnetModule,
4 dotnetCorePackages,
5 fetchFromGitHub,
6 pkg-config,
7 blueprint-compiler,
8 glib,
9 gtk4,
10 libadwaita,
11 wrapGAppsHook4,
12 appstream-glib,
13 desktop-file-utils,
14 cava,
15 libGL,
16}:
17
18buildDotnetModule rec {
19 pname = "cavalier";
20 version = "2024.1.0";
21
22 src = fetchFromGitHub {
23 owner = "NickvisionApps";
24 repo = "Cavalier";
25 tag = version;
26 hash = "sha256-SFhEKtYrlnkbLMnxU4Uf4jnFsw0MJHstgZgLLnGC2d8=";
27 };
28
29 dotnet-sdk = dotnetCorePackages.sdk_8_0;
30 dotnet-runtime = dotnetCorePackages.runtime_8_0;
31
32 projectFile = "NickvisionCavalier.GNOME/NickvisionCavalier.GNOME.csproj";
33 nugetDeps = ./deps.json;
34 executables = "NickvisionCavalier.GNOME";
35
36 nativeBuildInputs = [
37 pkg-config
38 blueprint-compiler
39 wrapGAppsHook4
40 appstream-glib
41 desktop-file-utils
42 ];
43
44 buildInputs = [
45 glib
46 gtk4
47 libadwaita
48 ];
49
50 runtimeDeps = [
51 glib
52 gtk4
53 libadwaita
54 libGL
55 ];
56
57 postInstall = ''
58 substituteInPlace NickvisionCavalier.Shared/Linux/org.nickvision.cavalier.desktop.in \
59 --replace-fail '@EXEC@' "NickvisionCavalier.GNOME"
60 install -Dm444 NickvisionCavalier.Shared/Linux/org.nickvision.cavalier.desktop.in -T $out/share/applications/org.nickvision.cavalier.desktop
61 install -Dm444 NickvisionCavalier.Shared/Resources/org.nickvision.cavalier.svg -t $out/share/icons/hicolor/scalable/apps/
62 install -Dm444 NickvisionCavalier.Shared/Resources/org.nickvision.cavalier-symbolic.svg -t $out/share/icons/hicolor/symbolic/apps/
63 '';
64
65 makeWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ cava ]}" ];
66
67 passthru.updateScript = ./update.sh;
68
69 meta = {
70 description = "Visualize audio with CAVA";
71 homepage = "https://github.com/NickvisionApps/Cavalier";
72 mainProgram = "NickvisionCavalier.GNOME";
73 license = lib.licenses.mit;
74 platforms = lib.platforms.linux;
75 maintainers = with lib.maintainers; [ zendo ];
76 };
77}