my-nixpkgs/pkgs/baidunetdisk/default.nix

124 lines
3.1 KiB
Nix

{
stdenv,
makeWrapper,
lib,
electron_11,
makeDesktopItem,
copyDesktopItems,
dpkg,
fetchurl,
# BaiduNetdisk dependencies
libappindicator,
libdbusmenu,
libglvnd,
}:
################################################################################
# Mostly based on baidnetdisk-electron package from AUR:
# https://aur.archlinux.org/packages/baidunetdisk-electron
################################################################################
let
libraries = [
stdenv.cc.cc.lib
libappindicator
libdbusmenu
libglvnd
];
dist = stdenv.mkDerivation (finalAttrs: {
pname = "baidunetdisk";
version = "4.17.7";
src = fetchurl {
url = "http://wppkg.baidupcs.com/issue/netdisk/Linuxguanjia/4.17.7/baidunetdisk_4.17.7_amd64.deb";
hash = "sha256-UOwY8FYmoT9X7wNGMEFtSBaCvBAYU58zOX1ccbxlOz0=";
};
dontFixup = true;
nativeBuildInputs = [ dpkg ];
unpackPhase = ''
dpkg -x $src .
'';
installPhase = ''
mkdir -p $out/bin
cp -r opt/baidunetdisk/* $out
pushd $out
rm -rf \
baidunetdisk \
baidunetdisk.desktop \
baiduNetdiskContext.conf \
baidunetdiskv.desktop \
bin \
binswiftshader \
chrome_100_percent.pak \
chrome_200_percent.pak \
chrome-sandbox \
icudtl.dat \
libEGL.so \
libffmpeg.so \
libGLESv2.so \
libvk_swiftshader.so \
libvulkan.so \
LICENSE.* \
locales \
resources.pak \
resources/8bb88996964c4e3202fecaaa5605af03 \
resources/default.db \
resources/dir.icns \
resources/resource.db \
snapshot_blob.bin \
v8_context_snapshot.bin \
vk_swiftshader_icd.json
popd
'';
});
in
stdenv.mkDerivation (finalAttrs: {
pname = "baidunetdisk";
version = "4.17.7";
dontUnpack = true;
nativeBuildInputs = [
makeWrapper
copyDesktopItems
];
postInstall = ''
mkdir -p $out/bin
makeWrapper ${electron_11}/bin/electron $out/bin/baidunetdisk \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath libraries}:${dist}" \
--add-flags "--no-sandbox" \
--add-flags "${dist}/resources/app.asar"
install -Dm644 ${dist}/baidunetdisk.svg $out/share/icons/hicolor/scalable/apps/baidunetdisk.svg
'';
desktopItems = [
(makeDesktopItem {
name = "baidunetdisk";
desktopName = "Baidu Netdisk";
exec = "baidunetdisk %U";
terminal = false;
icon = "baidunetdisk";
startupWMClass = "baidunetdisk";
comment = "Baidu Netdisk";
mimeTypes = [ "x-scheme-handler/baiduyunguanjia" ];
categories = [ "Network" ];
extraConfig = {
"Name[zh_CN]" = "";
"Name[zh_TW]" = "";
"Comment[zh_CN]" = "";
"Comment[zh_TW]" = "";
};
})
];
meta = {
description = "Baidu Netdisk";
homepage = "https://pan.baidu.com/";
platforms = [ "x86_64-linux" ];
license = lib.licenses.unfreeRedistributable;
mainProgram = "baidunetdisk";
};
})