1
0
Fork 0
nixos-config/overlays/mumble/package.nix
2022-03-08 03:19:09 +01:00

152 lines
3.1 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
qt5,
avahi,
boost,
libopus,
libsndfile,
protobuf,
speex,
libcap,
alsaLib,
python3,
cmake,
poco,
pcre,
iceSupport ? false,
zeroc-ice,
rnnoise,
jackSupport ? false,
libjack2,
pulseSupport ? false,
libpulseaudio,
grpcSupport ? false,
grpc,
which,
speechdSupport ? false,
speechd,
nixosTests,
}: let
generic = overrides: source:
qt5.mkDerivation (source
// overrides
// {
pname = overrides.type;
inherit (source) version;
patches = source.patches or [];
nativeBuildInputs =
[pkg-config python3 cmake]
++ (overrides.nativeBuildInputs or []);
buildInputs =
[boost protobuf avahi]
++ (overrides.buildInputs or []);
passthru.tests.connectivity = nixosTests.mumble;
meta = with lib; {
description = "Low-latency, high quality voice chat software";
homepage = "https://mumble.info";
license = licenses.bsd3;
maintainers = with maintainers; [petabyteboy infinisil];
platforms = platforms.linux;
};
});
client = source:
generic
{
type = "mumble";
nativeBuildInputs = [
qt5.qttools
];
buildInputs =
[
libopus
libsndfile
speex
qt5.qtsvg
rnnoise
poco
pcre
speechd
zeroc-ice.all
libpulseaudio
]
++ lib.optional stdenv.isLinux alsaLib
++ lib.optional jackSupport libjack2;
configureFlags = [
"CONFIG+=no-server"
];
NIX_CFLAGS_COMPILE = "-w";
cmakeFlags = [
"-Dice=off"
"-Dpulseaudio=on"
"-Dalsa=on"
"-Doverlay-xcompile=off"
"-DRELEASE_ID=${source.version}"
];
installPhase = ''
# bin stuff
install -Dm755 mumble $out/bin/mumble
wrapProgram $out/bin/mumble \
--prefix LD_LIBRARY_PATH : "${libpulseaudio}/lib"
install -Dm755 $src/scripts/mumble-overlay $out/bin/mumble-overlay
# lib stuff
mkdir -p $out/lib/mumble
cp -P libcelt* $out/lib/mumble
cp -rP plugins/* $out/lib/mumble
# icons
install -Dm644 $src/scripts/org.mumble_voip.mumble.desktop $out/share/applications/mumble.desktop
install -Dm644 $src/icons/mumble.svg $out/share/icons/hicolor/scalable/apps/mumble.svg
'';
}
source;
server = generic
{
type = "murmur";
configureFlags = [
"CONFIG+=no-client"
];
buildInputs =
[libcap]
++ lib.optionals grpcSupport [grpc which];
installPhase = ''
# bin stuff
install -Dm755 release/murmurd $out/bin/murmurd
'';
};
source = rec {
version = "1.4.0-development-snapshot-005";
# Needs submodules
src = fetchFromGitHub {
owner = "mumble-voip";
repo = "mumble";
rev = "${version}";
sha256 = "sha256:1w16j5idbvvbbisj1jlk5igym2n2f67ia61yynibqbmpvyq0bg3z";
fetchSubmodules = true;
};
};
in {
mumble = client source;
murmur = server source;
}