Merge pull request #329823 from ExpidusOS/fix/pkgsllvm/elfutils
[NixPkgs.git] / pkgs / by-name / ch / chromatic / package.nix
blob0598bababaa66a586c5bc13447166fe99f7f86cb
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , rustPlatform
5 , meson
6 , ninja
7 , pkg-config
8 , rustc
9 , cargo
10 , wrapGAppsHook4
11 , desktop-file-utils
12 , libxml2
13 , libadwaita
14 , portaudio
15 , libpulseaudio
18 stdenv.mkDerivation rec {
19   pname = "chromatic";
20   version = "0-unstable-2023-08-05";
22   src = fetchFromGitHub {
23     owner = "nate-xyz";
24     repo = "chromatic";
25     rev = "ffaeb50dcce74bf3ba1b05f98423cf48f205f55e";
26     hash = "sha256-E3v3UoQumBBYDOiXMfCRh5J7bfUCkettHth7SAresCE=";
27   };
29   patches = [
30     # solve error[E0310]: the parameter type `T` may not live long enough
31     # in rust-serialize crate
32     ./rustc_serialize_update.patch
33   ];
35   cargoDeps = rustPlatform.fetchCargoTarball {
36     inherit src;
37     name = "${pname}-${version}";
38     patches = [ ./rustc_serialize_update.patch ];
39     hash = "sha256-1Zb0J2tO/gIifDymmoXxZf6RNV8foE9QiQqZcrHrWzE=";
40   };
42   nativeBuildInputs = [
43     meson
44     ninja
45     pkg-config
46     rustPlatform.cargoSetupHook
47     rustc
48     cargo
49     wrapGAppsHook4
50     desktop-file-utils
51     libxml2.bin # xmllint
52   ];
54   buildInputs = [
55     libadwaita
56     portaudio
57     libpulseaudio
58   ];
60   meta = with lib; {
61     description = "Fine-tune your instruments";
62     longDescription = ''
63       Fine-tune your instruments with Chromatic. Chromatic
64       detects the frequency of audio input, converts it to
65       a musical note with the correct semitone and octave,
66       and displays the cents error. Cents are displayed on
67       an analog gauge to make tuning more visually intuitive.
68       Requires PulseAudio or PipeWire.
69     '';
70     homepage = "https://github.com/nate-xyz/chromatic";
71     license = licenses.gpl3Plus;
72     mainProgram = "chromatic";
73     maintainers = with maintainers; [ aleksana ];
74     platforms = platforms.linux;
75   };