Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feishin: 0.5.1 -> 0.6.1, build from source #303638

Merged
merged 2 commits into from
Apr 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 0 additions & 41 deletions pkgs/applications/audio/feishin/darwin.nix

This file was deleted.

137 changes: 120 additions & 17 deletions pkgs/applications/audio/feishin/default.nix
Original file line number Diff line number Diff line change
@@ -1,27 +1,130 @@
{ lib
, stdenv
, callPackage
, ...
}@args:

{
lib,
buildNpmPackage,
fetchFromGitHub,
electron_27,
copyDesktopItems,
makeDesktopItem,
...
}:
let
extraArgs = removeAttrs args [ "callPackage" ];
pname = "feishin";
version = "0.6.1";

src = fetchFromGitHub {
owner = "jeffvli";
repo = pname;
rev = "v${version}";
hash = "sha256-Nj8GwrH49ph14xvJldj5GQR4mlt9unCPEcgLrsH/sx8=";
};

electron = electron_27;
in
buildNpmPackage {
pname = "feishin";
version = "0.5.1";
appname = "Feishin";
inherit version;

inherit src;
npmDepsHash = "sha256-+pr9fWg/9kxkYMmthtqhjgF6MOomSQxVCO5V8tHHRdE=";

npmFlags = [ "--legacy-peer-deps" ];
makeCacheWritable = true;

env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";

nativeBuildInputs = [ copyDesktopItems ];

postPatch = ''
# release/app dependencies are installed on preConfigure
substituteInPlace package.json \
--replace-fail "electron-builder install-app-deps &&" ""

# https://github.com/electron/electron/issues/31121
substituteInPlace src/main/main.ts \
--replace-fail "process.resourcesPath" "'$out/share/feishin/resources'"
'';

preConfigure =
let
releaseAppDeps = buildNpmPackage {
pname = "${pname}-release-app";
inherit version;

src = "${src}/release/app";
npmDepsHash = "sha256-MRwKxe1hoFs5bPXT6K/UspSDs9XBdcRJGvxGlTKExp4=";

npmFlags = [ "--ignore-scripts" ];
dontNpmBuild = true;

env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
};
releaseNodeModules = "${releaseAppDeps}/lib/node_modules/feishin/node_modules";
in
''
for release_module_path in "${releaseNodeModules}"/*; do
rm -rf node_modules/"$(basename "$release_module_path")"
ln -s "$release_module_path" node_modules/
done
'';

postBuild = ''
npm exec electron-builder -- \
--dir \
-c.electronDist=${electron}/libexec/electron \
-c.electronVersion=${electron.version} \
-c.npmRebuild=false
'';

installPhase = ''
runHook preInstall

mkdir -p $out/share/feishin
pushd release/build/*/
cp -r locales resources{,.pak} $out/share/feishin
popd

# Code relies on checking app.isPackaged, which returns false if the executable is electron.
# Set ELECTRON_FORCE_IS_PACKAGED=1.
# https://github.com/electron/electron/issues/35153#issuecomment-1202718531
makeWrapper ${lib.getExe electron} $out/bin/feishin \
--add-flags $out/share/feishin/resources/app.asar \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
--set ELECTRON_FORCE_IS_PACKAGED=1 \
--inherit-argv0

for size in 32 64 128 256 512 1024; do
mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
ln -s \
$out/share/feishin/resources/assets/icons/"$size"x"$size".png \
$out/share/icons/hicolor/"$size"x"$size"/apps/${pname}.png
done

runHook postInstall
'';

desktopItems = [
(makeDesktopItem {
name = "feishin";
desktopName = "Feishin";
comment = "Full-featured Subsonic/Jellyfin compatible desktop music player";
icon = pname;
exec = "feishin %u";
categories = [
"Audio"
"AudioVideo"
];
mimeTypes = [ "x-scheme-handler/feishin" ];
})
];

meta = with lib; {
description = "Full-featured Subsonic/Jellyfin compatible desktop music player";
homepage = "https://github.com/jeffvli/feishin";
changelog = "https://github.com/jeffvli/feishin/releases/tag/v${version}";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.mit;
platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
sourceProvenance = with sourceTypes; [ fromSource ];
license = licenses.gpl3Plus;
platforms = platforms.unix;
mainProgram = "feishin";
maintainers = with maintainers; [ onny ];
};

in
if stdenv.isDarwin
then callPackage ./darwin.nix (extraArgs // { inherit pname appname version meta; })
else callPackage ./linux.nix (extraArgs // { inherit pname appname version meta; })
}
71 changes: 0 additions & 71 deletions pkgs/applications/audio/feishin/linux.nix

This file was deleted.