mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-11-14 12:11:12 +03:00
5058fb9919
This makes it possible to execute `nix-shell` to create the correct environment to build kitty. Use `nix-shell --pure` to eliminate most of the influence of the outside system, e.g. globally installed packages.
This works on NixOS and any Linux or macOS system with the Nix package manager installed.
The build inputs are split into `buildInputs`, `nativeBuildInputs`, `propagatedBuildInputs` and `checkInputs` so it closely resembles 2bb3a9da24/pkgs/applications/terminal-emulators/kitty/default.nix
. This makes it easy to port changes between the two files.
56 lines
1.5 KiB
Nix
56 lines
1.5 KiB
Nix
{ pkgs ? import <nixpkgs> { } }:
|
|
with pkgs;
|
|
|
|
let
|
|
inherit (lib) optional optionals;
|
|
inherit (xorg) libX11 libXrandr libXinerama libXcursor libXi libXext;
|
|
inherit (darwin.apple_sdk.frameworks) Cocoa CoreGraphics Foundation IOKit Kernel OpenGL;
|
|
harfbuzzWithCoreText = harfbuzz.override { withCoreText = stdenv.isDarwin; };
|
|
in
|
|
mkShell rec {
|
|
buildInputs = [
|
|
harfbuzzWithCoreText
|
|
ncurses
|
|
lcms2
|
|
] ++ optionals stdenv.isDarwin [
|
|
Cocoa
|
|
CoreGraphics
|
|
Foundation
|
|
IOKit
|
|
Kernel
|
|
OpenGL
|
|
libpng
|
|
python3
|
|
zlib
|
|
] ++ optionals stdenv.isLinux [
|
|
fontconfig libunistring libcanberra libX11
|
|
libXrandr libXinerama libXcursor libxkbcommon libXi libXext
|
|
wayland-protocols wayland dbus
|
|
] ++ checkInputs;
|
|
|
|
nativeBuildInputs = [
|
|
pkgconfig python3Packages.sphinx ncurses
|
|
] ++ optionals stdenv.isDarwin [
|
|
imagemagick
|
|
libicns # For the png2icns tool.
|
|
installShellFiles
|
|
];
|
|
|
|
propagatedBuildInputs = optional stdenv.isLinux libGL;
|
|
|
|
checkInputs = [
|
|
python3Packages.pillow
|
|
];
|
|
|
|
# Causes build failure due to warning when using Clang
|
|
hardeningDisable = [ "strictoverflow" ];
|
|
|
|
shellHook = if stdenv.isDarwin then ''
|
|
export KITTY_NO_LTO=
|
|
'' else ''
|
|
export KITTY_EGL_LIBRARY='${stdenv.lib.getLib libGL}/lib/libEGL.so.1'
|
|
export KITTY_STARTUP_NOTIFICATION_LIBRARY='${libstartup_notification}/lib/libstartup-notification-1.so'
|
|
export KITTY_CANBERRA_LIBRARY='${libcanberra}/lib/libcanberra.so'
|
|
'';
|
|
}
|