diff --git a/pkgs/applications/networking/instant-messengers/caprine-bin/build-from-appimage.nix b/pkgs/applications/networking/instant-messengers/caprine-bin/build-from-appimage.nix new file mode 100644 index 000000000000..aa0a8f7bfc46 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/caprine-bin/build-from-appimage.nix @@ -0,0 +1,50 @@ +{ lib +, fetchurl +, appimageTools +, gtk3 +, gsettings-desktop-schemas +, xorg +, pname +, version +, sha256 +, metaCommon ? { } +}: + +let + name = "${pname}-${version}"; + src = fetchurl { + url = "https://github.com/sindresorhus/caprine/releases/download/v${version}/Caprine-${version}.AppImage"; + name = "Caprine-${version}.AppImage"; + inherit sha256; + }; + extracted = appimageTools.extractType2 { inherit name src; }; +in +(appimageTools.wrapType2 { + inherit name src; + + profile = '' + export LC_ALL=C.UTF-8 + export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS + ''; + + extraPkgs = pkgs: appimageTools.defaultFhsEnvArgs.multiPkgs pkgs; + + extraInstallCommands = '' + mv $out/bin/{${name},caprine} + + mkdir -p $out/share + "${xorg.lndir}/bin/lndir" -silent "${extracted}/usr/share" "$out/share" + ln -s ${extracted}/caprine.png $out/share/icons/caprine.png + mkdir $out/share/applications + cp ${extracted}/caprine.desktop $out/share/applications/ + substituteInPlace $out/share/applications/caprine.desktop \ + --replace AppRun caprine + ''; + + meta = metaCommon // { + platforms = [ "x86_64-linux" ]; + mainProgram = "caprine"; + }; +}) // { + inherit pname version; +} diff --git a/pkgs/applications/networking/instant-messengers/caprine-bin/build-from-dmg.nix b/pkgs/applications/networking/instant-messengers/caprine-bin/build-from-dmg.nix new file mode 100644 index 000000000000..3dc457c48826 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/caprine-bin/build-from-dmg.nix @@ -0,0 +1,35 @@ +{ stdenvNoCC +, lib +, fetchurl +, undmg +, pname +, version +, sha256 +, metaCommon ? { } +}: + +stdenvNoCC.mkDerivation { + inherit pname version; + + src = fetchurl { + url = "https://github.com/sindresorhus/caprine/releases/download/v${version}/Caprine-${version}.dmg"; + name = "Caprine-${version}.dmg"; + inherit sha256; + }; + + sourceRoot = "Caprine.app"; + + nativeBuildInputs = [ undmg ]; + + installPhase = '' + mkdir -p "$out/Applications/Caprine.app" + cp -R . "$out/Applications/Caprine.app" + mkdir "$out/bin" + ln -s "$out/Applications/Caprine.app/Contents/MacOS/Caprine" "$out/bin/caprine" + ''; + + meta = metaCommon // { + platforms = with lib.platforms; darwin; + mainProgram = "caprine"; + }; +} diff --git a/pkgs/applications/networking/instant-messengers/caprine-bin/default.nix b/pkgs/applications/networking/instant-messengers/caprine-bin/default.nix new file mode 100644 index 000000000000..4be9e03931b2 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/caprine-bin/default.nix @@ -0,0 +1,25 @@ +{ lib, callPackage, stdenvNoCC }: +let + pname = "caprine"; + version = "2.55.2"; + metaCommon = with lib; { + description = "An elegant Facebook Messenger desktop app"; + homepage = "https://sindresorhus.com/caprine"; + license = licenses.mit; + maintainers = with maintainers; [ ShamrockLee ]; + }; + x86_64-appimage = callPackage ./build-from-appimage.nix { + inherit pname version metaCommon; + sha256 = "J7eHVXjWSIcTpLMM8FlGKZzVh6XgpQ0d82kxfMbPyZ4="; + }; + x86_64-dmg = callPackage ./build-from-dmg.nix { + inherit pname version metaCommon; + sha256 = "du/9N1BFq1s7spPiEDgDbjjcnkA0x1ExhAEpQvmO3aA="; + }; +in +(if stdenvNoCC.isDarwin then x86_64-dmg else x86_64-appimage).overrideAttrs (oldAttrs: { + passthru = (oldAttrs.passthru or { }) // { inherit x86_64-appimage x86_64-dmg; }; + meta = oldAttrs.meta // { + platforms = x86_64-appimage.meta.platforms ++ x86_64-dmg.meta.platforms; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 66dd68dc284e..f83e19e12c84 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -25345,6 +25345,8 @@ with pkgs; canto-daemon = callPackage ../applications/networking/feedreaders/canto-daemon { }; + caprine-bin = callPackage ../applications/networking/instant-messengers/caprine-bin { }; + carddav-util = callPackage ../tools/networking/carddav-util { }; cardinal = callPackage ../applications/audio/cardinal { };