nixos/doh-server: init
[NixPkgs.git] / pkgs / applications / audio / adlplug / default.nix
blobbf1278e42ce8ab98bbbf8ae42c5340c6808690b4
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   cmake,
6   pkg-config,
7   fmt,
8   liblo,
9   alsa-lib,
10   freetype,
11   libX11,
12   libXrandr,
13   libXinerama,
14   libXext,
15   libXcursor,
17   # Enabling JACK requires a JACK server at runtime, no fallback mechanism
18   withJack ? false,
19   jack,
21   type ? "ADL",
24 assert lib.assertOneOf "type" type [
25   "ADL"
26   "OPN"
28 let
29   chip =
30     {
31       ADL = "OPL3";
32       OPN = "OPN2";
33     }
34     .${type};
35   mainProgram = "${type}plug";
37 stdenv.mkDerivation rec {
38   pname = "${lib.strings.toLower type}plug";
39   version = "unstable-2021-12-17";
41   src = fetchFromGitHub {
42     owner = "jpcima";
43     repo = "ADLplug";
44     rev = "a488abedf1783c61cb4f0caa689f1b01bf9aa17d";
45     fetchSubmodules = true;
46     sha256 = "1a5zw0rglqgc5wq1n0s5bxx7y59dsg6qy02236fakl34bvbk60yz";
47   };
49   cmakeFlags = [
50     "-DADLplug_CHIP=${chip}"
51     "-DADLplug_USE_SYSTEM_FMT=ON"
52     "-DADLplug_Jack=${if withJack then "ON" else "OFF"}"
53   ];
55   NIX_LDFLAGS = toString (
56     lib.optionals stdenv.hostPlatform.isDarwin [
57       # Framework that JUCE needs which don't get linked properly
58       "-framework CoreAudioKit"
59       "-framework QuartzCore"
60       "-framework AudioToolbox"
61     ]
62     ++ lib.optionals stdenv.hostPlatform.isLinux [
63       # JUCE dlopen's these at runtime
64       "-lX11"
65       "-lXext"
66       "-lXcursor"
67       "-lXinerama"
68       "-lXrandr"
69     ]
70   );
72   nativeBuildInputs = [
73     cmake
74     pkg-config
75   ];
77   buildInputs =
78     [
79       fmt
80       liblo
81     ]
82     ++ lib.optionals stdenv.hostPlatform.isLinux [
83       alsa-lib
84       freetype
85       libX11
86       libXrandr
87       libXinerama
88       libXext
89       libXcursor
90     ]
91     ++ lib.optional withJack jack;
93   postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
94     mkdir -p $out/{Applications,Library/Audio/Plug-Ins/{VST,Components}}
96     mv $out/bin/${mainProgram}.app $out/Applications/
97     ln -s $out/{Applications/${mainProgram}.app/Contents/MacOS,bin}/${mainProgram}
99     mv vst2/${mainProgram}.vst $out/Library/Audio/Plug-Ins/VST/
100     mv au/${mainProgram}.component $out/Library/Audio/Plug-Ins/Components/
101   '';
103   meta = with lib; {
104     inherit mainProgram;
105     description = "${chip} FM Chip Synthesizer";
106     homepage = src.meta.homepage;
107     license = licenses.boost;
108     platforms = platforms.all;
109     maintainers = with maintainers; [ OPNA2608 ];
110   };