{ lib , stdenv , fetchFromGitHub , nix-update-script , curl , dbus , libevent , m4 , meson , ninja , pkg-config , scdoc , json_c , xdg-utils }: stdenv.mkDerivation rec { pname = "mpris-scrobbler"; version = "0.5.3"; src = fetchFromGitHub { owner = "mariusor"; repo = "mpris-scrobbler"; rev = "v${version}"; sha256 = "sha256-eeOhFkLyx+smZmKPTbVB1OiYkHdWk5v2rnOb9yCIuYE="; }; postPatch = '' substituteInPlace src/signon.c \ --replace "/usr/bin/xdg-open" "${xdg-utils}/bin/xdg-open" '' + lib.optionalString stdenv.isDarwin '' substituteInPlace meson.build \ --replace "-Werror=format-truncation=0" "" \ --replace "-Wno-stringop-overflow" "" ''; nativeBuildInputs = [ m4 meson ninja pkg-config scdoc ]; buildInputs = [ curl dbus json_c libevent ]; mesonFlags = [ "-Dversion=${version}" ]; env.NIX_CFLAGS_COMPILE = toString ([ # Needed with GCC 12 "-Wno-error=address" ] ++ lib.optionals stdenv.isDarwin [ "-Wno-sometimes-uninitialized" "-Wno-tautological-pointer-compare" ] ++ lib.optionals stdenv.isLinux [ "-Wno-array-bounds" "-Wno-free-nonheap-object" "-Wno-stringop-truncation" ]); passthru = { updateScript = nix-update-script { }; }; meta = with lib; { description = "Minimalistic scrobbler for ListenBrainz, libre.fm, & last.fm"; homepage = "https://github.com/mariusor/mpris-scrobbler"; license = licenses.mit; maintainers = with maintainers; [ emantor ]; platforms = platforms.unix; }; }