1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 pkg-config,
6 cmake,
7 qtbase,
8 qttools,
9 spdlog,
10 ffmpeg,
11 taglib,
12 wrapQtAppsHook,
13 makeDesktopItem,
14 copyDesktopItems,
15}:
16
17stdenv.mkDerivation rec {
18 pname = "easyaudiosync";
19 version = "1.1.2";
20
21 src = fetchFromGitHub {
22 owner = "complexlogic";
23 repo = "EasyAudioSync";
24 rev = "v${version}";
25 hash = "sha256-UCOL4DzynKjNDvS0HZ4/K+Wn5lOqHZ0bNop0zqJl5kc=";
26 };
27
28 patches = [
29 ./0001-fix-project-name.patch
30 ./0003-fix-darwin-app.patch
31 ./0004-force-qt6.patch
32 ];
33
34 nativeBuildInputs = [
35 cmake
36 pkg-config
37 wrapQtAppsHook
38 ]
39 ++ lib.optional stdenv.hostPlatform.isLinux copyDesktopItems;
40
41 buildInputs = [
42 qtbase
43 qttools
44 ffmpeg
45 spdlog
46 taglib
47 ];
48
49 installPhase = ''
50 runHook preInstall
51 ''
52 + lib.optionalString stdenv.hostPlatform.isDarwin ''
53 mkdir -p $out/Applications
54 mv "easyaudiosync.app" "Easy Audio Sync.app"
55 cp -r "Easy Audio Sync.app" $out/Applications
56 ''
57 + lib.optionalString stdenv.hostPlatform.isLinux ''
58 install -Dm755 easyaudiosync $out/bin/easyaudiosync
59
60 for RES in 48 64 128 256; do
61 install -Dm755 "$src/assets/icons/easyaudiosync''${RES}.png" "$out/share/icons/hicolor/''${RES}x''${RES}/apps/easyaudiosync.png"
62 done
63
64 install -Dm755 "$src/assets/icons/easyaudiosync.svg" "$out/share/icons/hicolor/scalable/apps/easyaudiosync.svg"
65 ''
66 + ''
67 runHook postInstall
68 '';
69
70 desktopItems = [
71 (makeDesktopItem {
72 name = "easyaudiosync";
73 exec = "easyaudiosync";
74 icon = "easyaudiosync";
75 desktopName = "Easy Audio Sync";
76 categories = [
77 "Qt"
78 "Audio"
79 "AudioVideo"
80 ];
81 comment = "Audio library syncing and conversion utility";
82 })
83 ];
84
85 meta = with lib; {
86 description = "Audio library syncing and conversion utility";
87 longDescription = ''
88 Easy Audio Sync is an audio library syncing and conversion utility.
89 The intended use is syncing an audio library with many lossless files to a mobile device
90 with limited storage.
91
92 The program's design is inspired by the rsync utility. It supports folder-based
93 source to destination syncing, with added audio transcoding capability, and is
94 GUI-based instead of CLI-based.
95 '';
96 homepage = "https://github.com/complexlogic/EasyAudioSync";
97 license = licenses.unlicense;
98 maintainers = with maintainers; [ matteopacini ];
99 platforms = platforms.linux ++ platforms.darwin;
100 };
101}