2a15e3ba75
Without the `no-werror.patch`, the compilation would fail with the following warning: ``` clang-7: error: argument unused during compilation: '-fno-strict-overflow' [-Werror,-Wunused-command-line-argument] ``` To fix this, the compiler command line options `-pedantic-errors` and `-Werror` were patched out of the build script so that the warning would not become an error and stop the build. This is not ideal as this piece of code is changed fairly frequently, which requires fixing the patch. In the next kitty version the patch would need to be fixed again. A better alternative is to just not pass `-fno-strict-overflow` to the compiler. This is done by disabling the `strictoverflow` hardening feature.
130 lines
3.7 KiB
Nix
130 lines
3.7 KiB
Nix
{ stdenv, substituteAll, fetchFromGitHub, python3Packages, libunistring,
|
|
harfbuzz, fontconfig, pkgconfig, ncurses, imagemagick, xsel,
|
|
libstartup_notification, libGL, libX11, libXrandr, libXinerama, libXcursor,
|
|
libxkbcommon, libXi, libXext, wayland-protocols, wayland,
|
|
which, dbus,
|
|
Cocoa,
|
|
CoreGraphics,
|
|
Foundation,
|
|
IOKit,
|
|
Kernel,
|
|
OpenGL,
|
|
libcanberra,
|
|
libicns,
|
|
libpng,
|
|
librsvg,
|
|
optipng,
|
|
python3,
|
|
zlib,
|
|
}:
|
|
|
|
with python3Packages;
|
|
buildPythonApplication rec {
|
|
pname = "kitty";
|
|
version = "0.16.0";
|
|
format = "other";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "kovidgoyal";
|
|
repo = "kitty";
|
|
rev = "v${version}";
|
|
sha256 = "1bszyddar0g1gdz67h8rd3gbrdhi6ahjg7j14cjiqxm1938z9ajf";
|
|
};
|
|
|
|
buildInputs = [
|
|
harfbuzz
|
|
ncurses
|
|
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
|
Cocoa
|
|
CoreGraphics
|
|
Foundation
|
|
IOKit
|
|
Kernel
|
|
OpenGL
|
|
libpng
|
|
python3
|
|
zlib
|
|
] ++ stdenv.lib.optionals stdenv.isLinux [
|
|
fontconfig libunistring libcanberra libX11
|
|
libXrandr libXinerama libXcursor libxkbcommon libXi libXext
|
|
wayland-protocols wayland dbus
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
pkgconfig which sphinx ncurses
|
|
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
|
imagemagick
|
|
libicns # For the png2icns tool.
|
|
librsvg
|
|
optipng
|
|
];
|
|
|
|
propagatedBuildInputs = stdenv.lib.optional stdenv.isLinux libGL;
|
|
|
|
outputs = [ "out" "terminfo" ];
|
|
|
|
patches = [
|
|
./fix-paths.patch
|
|
] ++ stdenv.lib.optionals stdenv.isLinux [
|
|
(substituteAll {
|
|
src = ./library-paths.patch;
|
|
libstartup_notification = "${libstartup_notification}/lib/libstartup-notification-1.so";
|
|
libcanberra = "${libcanberra}/lib/libcanberra.so";
|
|
libEGL = "${stdenv.lib.getLib libGL}/lib/libEGL.so.1";
|
|
})
|
|
] ++ stdenv.lib.optionals stdenv.isDarwin [
|
|
./no-lto.patch
|
|
./png2icns.patch
|
|
];
|
|
|
|
# Causes build failure due to warning
|
|
hardeningDisable = stdenv.lib.optional stdenv.isDarwin "strictoverflow";
|
|
|
|
buildPhase = if stdenv.isDarwin then ''
|
|
${python.interpreter} setup.py kitty.app --update-check-interval=0
|
|
'' else ''
|
|
${python.interpreter} setup.py linux-package --update-check-interval=0
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out
|
|
${if stdenv.isDarwin then ''
|
|
mkdir "$out/bin"
|
|
ln -s ../Applications/kitty.app/Contents/MacOS/kitty "$out/bin/kitty"
|
|
mkdir "$out/Applications"
|
|
cp -r kitty.app "$out/Applications/kitty.app"
|
|
'' else ''
|
|
cp -r linux-package/{bin,share,lib} $out
|
|
''}
|
|
wrapProgram "$out/bin/kitty" --prefix PATH : "$out/bin:${stdenv.lib.makeBinPath [ imagemagick xsel ncurses.dev ]}"
|
|
runHook postInstall
|
|
|
|
# ZSH completions need to be invoked with `source`:
|
|
# https://github.com/kovidgoyal/kitty/blob/8ceb941051b89b7c50850778634f0b6137aa5e6e/docs/index.rst#zsh
|
|
mkdir -p "$out/share/"{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions}
|
|
"$out/bin/kitty" + complete setup fish > "$out/share/fish/vendor_completions.d/kitty.fish"
|
|
"$out/bin/kitty" + complete setup bash > "$out/share/bash-completion/completions/kitty.bash"
|
|
'';
|
|
|
|
postInstall = ''
|
|
terminfo_src=${if stdenv.isDarwin then
|
|
''"$out/Applications/kitty.app/Contents/Resources/terminfo"''
|
|
else
|
|
"$out/share/terminfo"}
|
|
|
|
mkdir -p $terminfo/share
|
|
mv "$terminfo_src" $terminfo/share/terminfo
|
|
|
|
mkdir -p $out/nix-support
|
|
echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
|
|
'';
|
|
|
|
meta = with stdenv.lib; {
|
|
homepage = https://github.com/kovidgoyal/kitty;
|
|
description = "A modern, hackable, featureful, OpenGL based terminal emulator";
|
|
license = licenses.gpl3;
|
|
platforms = platforms.darwin ++ platforms.linux;
|
|
maintainers = with maintainers; [ tex rvolosatovs ma27 Luflosi ];
|
|
};
|
|
}
|