rip out media_kit, use better_player and audioplayers

This also let us rip out cocoapods stuff.

Needs testing on Windows, MacOS, and ideally, iOS.
This commit is contained in:
Henry Hiles 2026-11-11 23:25:28 -05:00
commit 37a2c150f3
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
2 changed files with 375 additions and 604 deletions

View file

@ -7,12 +7,14 @@
stdenv.cc
go
git
ffmpeg-headless
libGL
(flutter.override {
# audioplayers plays audio through GStreamer
extraPkgConfigPackages = [
mpv-unwrapped
libass
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
];
})
]
@ -25,6 +27,27 @@
];
env = lib.optionalAttrs pkgs.stdenv.isLinux {
LD_LIBRARY_PATH = "./build/native_assets/linux:${lib.makeLibraryPath [ pkgs.zlib ]}";
# better_player loads libmpv at runtime to play videos
LD_LIBRARY_PATH = "./build/native_assets/linux:${
lib.makeLibraryPath [
pkgs.zlib
pkgs.mpv-unwrapped
]
}";
# audioplayers links GStreamer by name only, without its library directory
LIBRARY_PATH = lib.makeLibraryPath [
pkgs.gst_all_1.gstreamer
pkgs.gst_all_1.gst-plugins-base
pkgs.glib
];
GST_PLUGIN_SYSTEM_PATH_1_0 = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" (
with pkgs.gst_all_1;
[
gstreamer
gst-plugins-base
gst-plugins-good
gst-libav
]
);
};
}

View file

@ -2,7 +2,8 @@
lib,
callPackage,
mpv-unwrapped,
libass,
gst_all_1,
ffmpeg-headless,
libxext,
libxfixes,
libclang,
@ -39,8 +40,9 @@ flutter.buildFlutterApplication {
nativeBuildInputs = [ (callPackage ./hook_pkg_config.nix { }) ];
buildInputs = [
mpv-unwrapped
libass
# audioplayers plays audio through GStreamer
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
# nativeapi includes XInput2.h, which needs these, but xi.pc only lists them privately
libxext
libxfixes
@ -54,6 +56,7 @@ flutter.buildFlutterApplication {
gitHashes = {
linkify = "sha256-TpMD6+0zyY6i9l+6d8ErnVufmepCv362rCtnbOht/z4=";
location = "sha256-zWnffXiK1LD4Ln23coPozBjYfTlhZmBhC5Z8mCdAgwQ=";
fab_m3e = "sha256-5V9m6yY0jimx2gh7lQHYg4HDKQ4Wrl0ATmBhw5DkQMI=";
fluttertagger = "sha256-tHUNU2+fBPkq5UK5YRi3SWs1zF2PIPz6RgSbwignU/I=";
m3e_design = "sha256-5V9m6yY0jimx2gh7lQHYg4HDKQ4Wrl0ATmBhw5DkQMI=";
@ -69,8 +72,24 @@ flutter.buildFlutterApplication {
install -D assets/bundled/icon.svg $out/share/icons/hicolor/scalable/apps/nexus.svg
install -Dm755 linux/*.desktop -t $out/share/applications
install -Dm644 linux/*.service -t $out/share/dbus-1/services
# better_player loads libmpv at runtime to play videos, and audioplayers
# needs GStreamer's plugins to decode audio
# gomuks uses ffmpeg and ffprobe for video thumbnails and metadata
wrapProgram $out/bin/nexus \
--suffix LD_LIBRARY_PATH : $out/app/nexus/lib
--suffix LD_LIBRARY_PATH : $out/app/nexus/lib \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ mpv-unwrapped ]} \
--prefix PATH : ${lib.makeBinPath [ ffmpeg-headless ]} \
--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : ${
lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" (
with gst_all_1;
[
gstreamer
gst-plugins-base
gst-plugins-good
gst-libav
]
)
}
'';
meta = {