1
0
Fork 0
nixos-config/overlays/mumble/package.nix
2021-07-12 22:12:24 +02:00

141 lines
2.9 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;
version = 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
]
++ lib.optional stdenv.isLinux alsaLib
++ lib.optional jackSupport libjack2
++ lib.optional pulseSupport libpulseaudio;
configureFlags = [
"CONFIG+=no-server"
];
cmakeFlags = [
"-Dice=off"
"-Doverlay-xcompile=off"
"-DRELEASE_ID=${source.version}"
];
installPhase = ''
# bin stuff
install -Dm755 mumble $out/bin/mumble
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 = source: 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;
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;
}