summaryrefslogtreecommitdiff
path: root/pkgs/by-name/la/lavalink/package.nix
blob: 1ca9d11765e2e3687eaf07816e002521f200b439 (about) (plain)
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
{
  lib,
  stdenv,
  makeWrapper,
  jdk21,
  jdk ? jdk21,
  fetchurl,
  nixosTests,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "lavalink";
  version = "4.0.8";

  src = fetchurl {
    url = "https://github.com/lavalink-devs/Lavalink/releases/download/${finalAttrs.version}/Lavalink.jar";
    hash = "sha256-G4a9ltPq/L0vcazTQjStTlOOtwrBi37bYUNQHy5CV9Y=";
  };

  nativeBuildInputs = [
    makeWrapper
  ];

  dontUnpack = true;

  installPhase = ''
    runHook preInstall

    makeWrapper ${lib.getExe jdk} $out/bin/lavalink \
      --add-flags "-jar $src"

    runHook postInstall
  '';

  passthru.tests = { inherit (nixosTests) lavalink; };

  meta = {
    description = "Standalone audio sending node based on Lavaplayer and Koe";
    longDescription = ''
      A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.

      Being used in production by FredBoat, Dyno, LewdBot, and more.
    '';
    homepage = "https://lavalink.dev/";
    changelog = "https://github.com/lavalink-devs/Lavalink/releases/tag/${finalAttrs.version}";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ nanoyaki ];
    sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
    mainProgram = "lavalink";
    inherit (jdk.meta) platforms;
  };
})