working app
This commit is contained in:
127
package.nix
Normal file
127
package.nix
Normal 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 ];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user