diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/misc/navidrome/default.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/misc/navidrome/default.nix | 81 |
1 files changed, 53 insertions, 28 deletions
diff --git a/nixpkgs/pkgs/servers/misc/navidrome/default.nix b/nixpkgs/pkgs/servers/misc/navidrome/default.nix index 17e648e59ab1..173dd0caa88f 100644 --- a/nixpkgs/pkgs/servers/misc/navidrome/default.nix +++ b/nixpkgs/pkgs/servers/misc/navidrome/default.nix @@ -1,49 +1,74 @@ -{ lib, stdenv, fetchurl, ffmpeg, ffmpegSupport ? true, makeWrapper, nixosTests }: +{ callPackage +, buildGoModule +, fetchFromGitHub +, lib +, pkg-config +, stdenv +, ffmpeg +, taglib +, zlib +, makeWrapper +, nixosTests +, ffmpegSupport ? true +}: -with lib; +let -stdenv.mkDerivation rec { - pname = "navidrome"; version = "0.47.5"; + src = fetchFromGitHub { + owner = "navidrome"; + repo = "navidrome"; + rev = "v${version}"; + hash = "sha256-gTvJI+brdEpdpbEcdQycqw15seI+k5dMDVrjY3v6i14="; + }; + + ui = callPackage ./ui { + inherit src version; + }; - src = fetchurl (if stdenv.hostPlatform.system == "x86_64-linux" - then { - url = "https://github.com/deluan/navidrome/releases/download/v${version}/navidrome_${version}_Linux_x86_64.tar.gz"; - sha256 = "sha256-AkSjtln53HDdIcQgnA8Wj010RXnOlOsFm2wfVgbvwtc="; - } - else { - url = "https://github.com/deluan/navidrome/releases/download/v${version}/navidrome_${version}_Linux_arm64.tar.gz"; - sha256 = "sha256-+VBRiV2zKa6PwamWj/jmE4iuoohAD6oeGnlFi4/01HM="; - }); +in - nativeBuildInputs = [ makeWrapper ]; +buildGoModule { - unpackPhase = '' - tar xvf $src navidrome - ''; + pname = "navidrome"; - installPhase = '' - runHook preInstall + inherit src version; - mkdir -p $out/bin - cp navidrome $out/bin + vendorSha256 = "sha256-xMAxGbq2VSXkF9R9hxB9EEk2CnqsRxg2Nmt7zyXohJI="; - runHook postInstall + nativeBuildInputs = [ makeWrapper pkg-config ]; + + buildInputs = [ taglib zlib ]; + + ldflags = [ + "-X github.com/navidrome/navidrome/consts.gitSha=${src.rev}" + "-X github.com/navidrome/navidrome/consts.gitTag=v${version}" + ]; + + CGO_CFLAGS = lib.optionals stdenv.cc.isGNU [ "-Wno-return-local-addr" ]; + + prePatch = '' + cp -r ${ui}/* ui/build ''; - postFixup = '' + postFixup = lib.optionalString ffmpegSupport '' wrapProgram $out/bin/navidrome \ - --prefix PATH : ${makeBinPath (optional ffmpegSupport ffmpeg)} + --prefix PATH : ${lib.makeBinPath [ ffmpeg ]} ''; - passthru.tests.navidrome = nixosTests.navidrome; + passthru = { + inherit ui; + tests.navidrome = nixosTests.navidrome; + updateScript = callPackage ./update.nix {}; + }; meta = { description = "Navidrome Music Server and Streamer compatible with Subsonic/Airsonic"; homepage = "https://www.navidrome.org/"; - license = licenses.gpl3Only; - platforms = [ "x86_64-linux" "aarch64-linux" ]; - maintainers = with maintainers; [ aciceri ]; + license = lib.licenses.gpl3Only; + sourceProvenance = with lib.sourceTypes; [ fromSource ]; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ aciceri squalus ]; }; } |