working app

This commit is contained in:
2026-05-02 10:49:42 -04:00
commit 279c6cb097
4 changed files with 326 additions and 0 deletions

127
package.nix Normal file
View File

@@ -0,0 +1,127 @@
{ lib
, stdenv
, fetchurl
, appimageTools
, makeWrapper
, patchelf
, webkitgtk_4_1
, gtk3
, glib
, glib-networking
, libsoup_3
, dbus
, pipewire
, libpulseaudio
, alsa-lib
, libGL
, mesa
, xdg-utils
, libxkbcommon
, wayland
, xorg
, pango
, cairo
, gdk-pixbuf
}:
let
pname = "psysonic";
version = "1.44.0";
src = fetchurl {
url = "https://github.com/Psychotoxical/psysonic/releases/download/app-v${version}/Psysonic_${version}_amd64.AppImage";
hash = "sha256-5dtEgFAA2nQf9cj+M0TThcSk7s+3R3LkgVEzCzfUjWw=";
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };
runtimeLibs = lib.makeLibraryPath [
webkitgtk_4_1
gtk3
glib
glib-networking
libsoup_3
dbus
pipewire
libpulseaudio
alsa-lib
libGL
mesa
xdg-utils
libxkbcommon
wayland
xorg.libX11
xorg.libXext
xorg.libxcb
pango
cairo
gdk-pixbuf
];
in
stdenv.mkDerivation {
inherit pname version src;
dontUnpack = true;
dontBuild = true;
dontConfigure = true;
nativeBuildInputs = [ makeWrapper patchelf ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/lib/psysonic $out/share
install -Dm755 ${appimageContents}/usr/bin/psysonic $out/lib/psysonic/psysonic
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${runtimeLibs}" \
$out/lib/psysonic/psysonic
makeWrapper $out/lib/psysonic/psysonic $out/bin/psysonic \
--set GIO_MODULE_DIR "${glib-networking}/lib/gio/modules" \
--set GIO_EXTRA_MODULES "${glib-networking}/lib/gio/modules" \
--prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
--prefix PATH : "${lib.makeBinPath [ xdg-utils dbus ]}"
for size in 16 32 48 64 128 256 512; do
icon="${appimageContents}/usr/share/icons/hicolor/''${size}x''${size}/apps/psysonic.png"
if [ -f "$icon" ]; then
install -Dm644 "$icon" $out/share/icons/hicolor/''${size}x''${size}/apps/psysonic.png
fi
done
if [ -f "${appimageContents}/usr/share/applications/psysonic.desktop" ]; then
install -Dm644 "${appimageContents}/usr/share/applications/psysonic.desktop" \
$out/share/applications/psysonic.desktop
substituteInPlace $out/share/applications/psysonic.desktop \
--replace-fail 'Exec=psysonic' "Exec=$out/bin/psysonic"
else
mkdir -p $out/share/applications
cat > $out/share/applications/psysonic.desktop << DESKTOP
[Desktop Entry]
Name=Psysonic
Comment=Navidrome client for self-hosted music
Exec=$out/bin/psysonic
Icon=psysonic
Type=Application
Categories=Audio;Music;
StartupWMClass=psysonic
DESKTOP
fi
runHook postInstall
'';
meta = with lib; {
description = "Navidrome desktop client for self-hosted music streaming";
homepage = "https://github.com/Psychotoxical/psysonic";
license = licenses.gpl3Only;
platforms = [ "x86_64-linux" ];
mainProgram = "psysonic";
sourceProvenance = [ sourceTypes.binaryNativeCode ];
};
}