summary refs log tree commit diff
path: root/pkgs/applications/misc/kitty/default.nix
diff options
context:
space:
mode:
authorstrager <strager.nds@gmail.com>2019-03-31 12:18:58 -0700
committerDmitry Kalinkin <dmitry.kalinkin@gmail.com>2019-03-31 15:18:58 -0400
commit75aa8460ac73f92b1e47436508b52a18213c003c (patch)
treec4bc663ac304f99be72f9d24f088bd3b40d641c7 /pkgs/applications/misc/kitty/default.nix
parentf88d9c3c960c3fa7bf6a5e51640a79bc75fa0b58 (diff)
downloadnixpkgs-75aa8460ac73f92b1e47436508b52a18213c003c.tar
nixpkgs-75aa8460ac73f92b1e47436508b52a18213c003c.tar.gz
nixpkgs-75aa8460ac73f92b1e47436508b52a18213c003c.tar.bz2
nixpkgs-75aa8460ac73f92b1e47436508b52a18213c003c.tar.lz
nixpkgs-75aa8460ac73f92b1e47436508b52a18213c003c.tar.xz
nixpkgs-75aa8460ac73f92b1e47436508b52a18213c003c.tar.zst
nixpkgs-75aa8460ac73f92b1e47436508b52a18213c003c.zip
kitty: support macOS (#56740)
Install the `kitty` command-line utility and the `kitty.app` macOS
application.

* Prefer libicns (png2icns) over Apple's non-free iconutil.
* Work around warnings from Apple headers by disabling -pedantic-errors
  and -Werror.
* Work around ld not support LLVM-LTO by disabling LTO.
* Make Kitty and glfw compile for macOS 10.11 (and macOS 10.10).
Diffstat (limited to 'pkgs/applications/misc/kitty/default.nix')
-rw-r--r--pkgs/applications/misc/kitty/default.nix64
1 files changed, 58 insertions, 6 deletions
diff --git a/pkgs/applications/misc/kitty/default.nix b/pkgs/applications/misc/kitty/default.nix
index 58b6ae9aae8..3edb48cc489 100644
--- a/pkgs/applications/misc/kitty/default.nix
+++ b/pkgs/applications/misc/kitty/default.nix
@@ -2,7 +2,20 @@
   harfbuzz, fontconfig, pkgconfig, ncurses, imagemagick, xsel,
   libstartup_notification, libX11, libXrandr, libXinerama, libXcursor,
   libxkbcommon, libXi, libXext, wayland-protocols, wayland,
-  which, dbus
+  which, dbus,
+  Cocoa,
+  CoreGraphics,
+  Foundation,
+  IOKit,
+  Kernel,
+  OpenGL,
+  cf-private,
+  libicns,
+  libpng,
+  librsvg,
+  optipng,
+  python3,
+  zlib,
 }:
 
 with python3Packages;
@@ -19,12 +32,32 @@ buildPythonApplication rec {
   };
 
   buildInputs = [
-    fontconfig glfw ncurses libunistring harfbuzz libX11
+    ncurses harfbuzz
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    Cocoa
+    CoreGraphics
+    Foundation
+    IOKit
+    Kernel
+    OpenGL
+    cf-private
+    libpng
+    python3
+    zlib
+  ] ++ stdenv.lib.optionals stdenv.isLinux [
+    fontconfig glfw libunistring libX11
     libXrandr libXinerama libXcursor libxkbcommon libXi libXext
     wayland-protocols wayland dbus
   ];
 
-  nativeBuildInputs = [ pkgconfig which sphinx ncurses ];
+  nativeBuildInputs = [
+    pkgconfig which sphinx ncurses
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    imagemagick
+    libicns  # For the png2icns tool.
+    librsvg
+    optipng
+  ];
 
   outputs = [ "out" "terminfo" ];
 
@@ -33,16 +66,30 @@ buildPythonApplication rec {
       src = ./fix-paths.patch;
       libstartup_notification = "${libstartup_notification}/lib/libstartup-notification-1.so";
     })
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    ./macos-10.11.patch
+    ./no-lto.patch
+    ./no-werror.patch
+    ./png2icns.patch
   ];
 
-  buildPhase = ''
+  buildPhase = if stdenv.isDarwin then ''
+    make app
+  '' else ''
     ${python.interpreter} setup.py linux-package
   '';
 
   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 ]}"
     runHook postInstall
 
@@ -54,8 +101,13 @@ buildPythonApplication rec {
   '';
 
   postInstall = ''
+    terminfo_src=${if stdenv.isDarwin then
+      ''"$out/Applications/kitty.app/Contents/Resources/terminfo"''
+      else
+      "$out/share/terminfo"}
+
     mkdir -p $terminfo/share
-    mv $out/share/terminfo $terminfo/share/terminfo
+    mv "$terminfo_src" $terminfo/share/terminfo
 
     mkdir -p $out/nix-support
     echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
@@ -65,7 +117,7 @@ buildPythonApplication rec {
     homepage = https://github.com/kovidgoyal/kitty;
     description = "A modern, hackable, featureful, OpenGL based terminal emulator";
     license = licenses.gpl3;
-    platforms = platforms.linux;
+    platforms = platforms.darwin ++ platforms.linux;
     maintainers = with maintainers; [ tex rvolosatovs ];
   };
 }