mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-13 17:43:59 +02:00
Merge pull request #293 from aszlig/nix-build
Add a default.nix for building with Nix.
This commit is contained in:
102
default.nix
Normal file
102
default.nix
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
{ system ? builtins.currentSystem
|
||||||
|
, enableXMPP ? true
|
||||||
|
, enableKDE ? false
|
||||||
|
, enableTelepathy ? false
|
||||||
|
}:
|
||||||
|
|
||||||
|
with import <nixpkgs> { inherit system; };
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
assert enableXMPP -> libjreen != null;
|
||||||
|
assert enableKDE -> kdelibs != null;
|
||||||
|
assert enableTelepathy -> telepathy_qt != null;
|
||||||
|
|
||||||
|
let
|
||||||
|
useQT5 = pkg: let
|
||||||
|
qt5variant = pkg.override (attrs: {
|
||||||
|
${if attrs ? qt4 then "qt4" else "qt"} = qt54.base;
|
||||||
|
});
|
||||||
|
in qt5variant.overrideDerivation (drv: {
|
||||||
|
postInstall = (drv.postInstall or "") + ''
|
||||||
|
for i in "$out"/include/*; do
|
||||||
|
[ -d "$i" ] || continue
|
||||||
|
! expr "$i" : '.*5$$' > /dev/null || continue
|
||||||
|
ln -sv "$i" "''${i}5"
|
||||||
|
done
|
||||||
|
for l in "$out"/lib*/*.so*; do
|
||||||
|
bn="$(basename "$l")"
|
||||||
|
! expr "''${bn%.so*}" : '.*5$$' > /dev/null || continue
|
||||||
|
ln -sv "$l" "$(dirname "$l")/''${bn%.so*}5.''${bn#*.}"
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
qcaQT5 = overrideDerivation (useQT5 qca2) (drv: rec {
|
||||||
|
name = "qca-qt5-2.1.0.3";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "mirror://kde/stable/qca-qt5/2.1.0.3/src/${name}.tar.xz";
|
||||||
|
sha256 = "1yc9s88q6gzb1jjd34f9h28dnhjb1dnx6wlasf47by4gd9lp00db";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
libechonestQT5 = overrideDerivation ((useQT5 libechonest).override {
|
||||||
|
qjson = null;
|
||||||
|
}) (drv: {
|
||||||
|
cmakeFlags = (drv.cmakeFlags or []) ++ [ "-DBUILD_WITH_QT4=OFF" ];
|
||||||
|
});
|
||||||
|
|
||||||
|
qtkeychainQT5 = overrideDerivation (useQT5 qtkeychain) (drv: {
|
||||||
|
cmakeFlags = (drv.cmakeFlags or []) ++ [
|
||||||
|
"-DBUILD_WITH_QT4=OFF"
|
||||||
|
"-DQt5LinguistTools_DIR=${qt54.tools}/lib/cmake/Qt5LinguistTools"
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
vlc = vlc_qt5.override {
|
||||||
|
ffmpeg = ffmpeg_2.override {
|
||||||
|
v4l_utils = v4l_utils.override { withQt4 = false; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
version = import (stdenv.mkDerivation {
|
||||||
|
name = "tomahawk-version.nix";
|
||||||
|
inherit src;
|
||||||
|
phases = [ "unpackPhase" "installPhase" ];
|
||||||
|
buildInputs = [ cmake ];
|
||||||
|
installPhase = ''
|
||||||
|
(cmake -LAH 2> /dev/null || true) \
|
||||||
|
| sed -n -re 's/^TOMAHAWK_VERSION:STRING[^=]*= *([^ ]*).*/"\1"/p' \
|
||||||
|
> "$out"
|
||||||
|
[ -s "$out" ]
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
name = "tomahawk-${version}";
|
||||||
|
|
||||||
|
inherit src version;
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DLUCENEPP_INCLUDE_DIR=${lucenepp}/include"
|
||||||
|
"-DLUCENEPP_LIBRARY_DIR=${lucenepp}/lib"
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = (map useQT5 [ liblastfm quazip ]) ++ [
|
||||||
|
qcaQT5 qtkeychainQT5 libechonestQT5 kf5_latest.attica cmake pkgconfig
|
||||||
|
boost gnutls lucenepp vlc qt54.base qt54.svg qt54.tools qt54.x11extras
|
||||||
|
sparsehash taglib websocketpp makeWrapper
|
||||||
|
] ++ stdenv.lib.optional enableXMPP (useQT5 libjreen)
|
||||||
|
++ stdenv.lib.optional enableKDE (useQT5 kdelibs)
|
||||||
|
++ stdenv.lib.optional enableTelepathy (useQT5 telepathy_qt);
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "A multi-source music player";
|
||||||
|
homepage = "http://tomahawk-player.org/";
|
||||||
|
license = licenses.gpl3Plus;
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
Reference in New Issue
Block a user