diff --git a/pkgs/by-name/bi/bitcomet/package.nix b/pkgs/by-name/bi/bitcomet/package.nix index 32b6cda4b3c1..bd68ae671bef 100644 --- a/pkgs/by-name/bi/bitcomet/package.nix +++ b/pkgs/by-name/bi/bitcomet/package.nix @@ -1,44 +1,96 @@ { lib, + stdenvNoCC, + buildFHSEnv, appimageTools, fetchurl, + desktop-file-utils, + dpkg, + webkitgtk_4_0, + runScript ? "BitComet", }: let pname = "bitcomet"; - version = "2.13.2"; - - src = fetchurl { - url = "https://download.bitcomet.com/linux/x86_64/BitComet-${version}-x86_64.AppImage"; - hash = "sha256-T66hmWmjt7ZZj03IxTSYtNUBoFHgwOoAIOHMyJSAmbU="; - }; - - appimageContents = appimageTools.extractType2 { inherit pname version src; }; -in -appimageTools.wrapType2 { - inherit pname version src; - - extraPkgs = - pkgs: with pkgs; [ - libxml2 - libpng - webkitgtk_4_0 - ]; - - extraInstallCommands = '' - install -Dm644 ${appimageContents}/com.bitcomet.linux.desktop $out/share/applications/bitcomet.desktop - substituteInPlace $out/share/applications/bitcomet.desktop \ - --replace-fail "Exec=usr/bin/BitComet" "Exec=bitcomet" - cp -r ${appimageContents}/usr/share/icons $out/share/icons - ''; + version = "2.15.0"; meta = { homepage = "https://www.bitcomet.com"; description = "BitTorrent download client"; - mainProgram = "bitcomet"; + mainProgram = "BitComet"; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; license = lib.licenses.unfree; - platforms = [ "x86_64-linux" ]; + platforms = [ + "aarch64-linux" + "x86_64-linux" + ]; maintainers = with lib.maintainers; [ ]; }; + + bitcomet = stdenvNoCC.mkDerivation { + inherit pname version meta; + + src = + let + selectSystem = + attrs: + attrs.${stdenvNoCC.hostPlatform.system} + or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}"); + arch = selectSystem { + x86_64-linux = "x86_64"; + aarch64-linux = "arm64"; + }; + in + fetchurl { + url = "https://download.bitcomet.com/linux/${arch}/BitComet-${version}-${arch}.deb"; + hash = selectSystem { + x86_64-linux = "sha256-YmcHcrqw4Ue8uyQqYcLWTYS5WYQro3kk7VLY8pfIsRQ="; + aarch64-linux = "sha256-Bfg20aKU90Ap8scn4eHtf451uxPfWcnQCrh5gWRQmsU="; + }; + }; + + nativeBuildInputs = [ + dpkg + desktop-file-utils + ]; + + installPhase = '' + runHook preInstall + + desktop-file-edit usr/share/applications/bitcomet.desktop \ + --remove-key="Version" \ + --remove-key="Comment" \ + --set-key="Exec" --set-value="BitComet" \ + --set-icon="bitcomet" + cp -r usr $out + + runHook postInstall + ''; + }; +in +buildFHSEnv { + inherit + pname + version + runScript + meta + ; + + executableName = "BitComet"; + + targetPkgs = + pkgs: + [ + bitcomet + webkitgtk_4_0 + ] + ++ appimageTools.defaultFhsEnvArgs.targetPkgs pkgs; + + multiPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs; + + extraInstallCommands = '' + mkdir -p $out/share + ln -s ${bitcomet}/share/applications $out/share/applications + ln -s ${bitcomet}/share/icons $out/share/icons + ''; }