
They are not doing anything right now. This is in preparation for their complete removal from the tree. Note: several changes that affect the derivation inputs (e.g. removal of references to stub paths in build instructions) were left out. They will be cleaned up the next iteration and will require special care. Note: this PR is a result of a mix of ugly regex (not AST) based automation and some manual labor. For reference, the regex automation part was hacked in: https://github.com/booxter/nix-clean-apple_sdk Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
131 lines
3.6 KiB
Nix
131 lines
3.6 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
gtk4,
|
|
libadwaita,
|
|
tdlib,
|
|
rlottie,
|
|
rustPlatform,
|
|
meson,
|
|
ninja,
|
|
pkg-config,
|
|
rustc,
|
|
cargo,
|
|
desktop-file-utils,
|
|
blueprint-compiler,
|
|
libxml2,
|
|
libshumate,
|
|
gst_all_1,
|
|
buildPackages,
|
|
}:
|
|
|
|
let
|
|
pname = "paper-plane";
|
|
version = "0.1.0-beta.5";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "paper-plane-developers";
|
|
repo = "paper-plane";
|
|
tag = "v${version}";
|
|
hash = "sha256-qcAHxNnF980BHMqLF86M06YQnEN5L/8nkyrX6HQjpBA=";
|
|
};
|
|
|
|
# Paper Plane requires a patch to the gtk4, but may be removed later
|
|
# https://github.com/paper-plane-developers/paper-plane/tree/main?tab=readme-ov-file#prerequisites
|
|
gtk4-paperplane = gtk4.overrideAttrs (prev: {
|
|
patches = (prev.patches or [ ]) ++ [ "${src}/build-aux/gtk-reversed-list.patch" ];
|
|
});
|
|
wrapPaperPlaneHook = buildPackages.wrapGAppsHook3.override {
|
|
gtk3 = gtk4-paperplane;
|
|
};
|
|
# libadwaita has gtk4 in propagatedBuildInputs so it must be overrided
|
|
# to avoid linking two libraries, while libshumate doesn't
|
|
libadwaita-paperplane = libadwaita.override {
|
|
gtk4 = gtk4-paperplane;
|
|
};
|
|
tdlib-paperplane = tdlib.overrideAttrs (prev: {
|
|
pname = "tdlib-paperplane";
|
|
version = "1.8.19";
|
|
src = fetchFromGitHub {
|
|
owner = "tdlib";
|
|
repo = "td";
|
|
rev = "2589c3fd46925f5d57e4ec79233cd1bd0f5d0c09";
|
|
hash = "sha256-mbhxuJjrV3nC8Ja7N0WWF9ByHovJLmoLLuuzoU4khjU=";
|
|
};
|
|
});
|
|
rlottie-paperplane = rlottie.overrideAttrs (prev: {
|
|
pname = "rlottie-paperplane";
|
|
version = "0-unstable-2022-09-14";
|
|
src = fetchFromGitHub {
|
|
owner = "paper-plane-developers";
|
|
repo = "rlottie";
|
|
rev = "1dd47cec7eb8e1f657f02dce9c497ae60f7cf8c5";
|
|
hash = "sha256-OIKnDikuJuRIR9Jvl1PnUA9UAV09EmgGdDTeWoVi7jk=";
|
|
};
|
|
patches = [ ];
|
|
env.NIX_CFLAGS_COMPILE = prev.env.NIX_CFLAGS_COMPILE + " -Wno-error";
|
|
});
|
|
in
|
|
stdenv.mkDerivation {
|
|
inherit pname version src;
|
|
|
|
cargoDeps = rustPlatform.fetchCargoVendor {
|
|
inherit pname version src;
|
|
hash = "sha256-QEX7w8eMV7DJFONjq23o8eCV+lliugS0pcdufFhcZrM=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
meson
|
|
ninja
|
|
pkg-config
|
|
rustPlatform.cargoSetupHook
|
|
rustPlatform.bindgenHook
|
|
rustc
|
|
cargo
|
|
wrapPaperPlaneHook
|
|
desktop-file-utils
|
|
blueprint-compiler
|
|
libxml2.bin
|
|
];
|
|
|
|
buildInputs = [
|
|
libshumate
|
|
libadwaita-paperplane
|
|
tdlib-paperplane
|
|
rlottie-paperplane
|
|
gst_all_1.gstreamer
|
|
gst_all_1.gst-libav
|
|
gst_all_1.gst-plugins-base
|
|
gst_all_1.gst-plugins-good
|
|
];
|
|
|
|
mesonFlags = [
|
|
# The API ID and hash provided here are for use with Paper Plane only.
|
|
# Redistribution of the key in Nixpkgs has been explicitly permitted
|
|
# by Paper Plane developers. Please do not use it in other projects.
|
|
"-Dtg_api_id=22303002"
|
|
"-Dtg_api_hash=3cc0969992690f032197e6609b296599"
|
|
];
|
|
|
|
# Workaround for the gettext-sys issue
|
|
# https://github.com/Koka/gettext-rs/issues/114
|
|
env.NIX_CFLAGS_COMPILE = lib.optionalString (
|
|
stdenv.cc.isClang && lib.versionAtLeast stdenv.cc.version "16"
|
|
) "-Wno-error=incompatible-function-pointer-types";
|
|
|
|
meta = {
|
|
homepage = "https://github.com/paper-plane-developers/paper-plane";
|
|
description = "Chat over Telegram on a modern and elegant client";
|
|
longDescription = ''
|
|
Paper Plane is an alternative Telegram client. It uses libadwaita
|
|
for its user interface and strives to meet the design principles
|
|
of the GNOME desktop.
|
|
'';
|
|
license = lib.licenses.gpl3Plus;
|
|
maintainers = with lib.maintainers; [ aleksana ];
|
|
mainProgram = "paper-plane";
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
}
|