about summary refs log tree commit diff
path: root/pkgs/applications/terminal-emulators/contour/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/terminal-emulators/contour/default.nix')
-rw-r--r--pkgs/applications/terminal-emulators/contour/default.nix84
1 files changed, 40 insertions, 44 deletions
diff --git a/pkgs/applications/terminal-emulators/contour/default.nix b/pkgs/applications/terminal-emulators/contour/default.nix
index a1692dd255a2..4a50625cc81e 100644
--- a/pkgs/applications/terminal-emulators/contour/default.nix
+++ b/pkgs/applications/terminal-emulators/contour/default.nix
@@ -1,12 +1,16 @@
 { lib
 , stdenv
-, mkDerivation
 , fetchFromGitHub
+, fetchurl
 , cmake
 , pkg-config
 , freetype
 , fontconfig
-, libGL
+, libunicode
+, libutempter
+, termbench-pro
+, qtmultimedia
+, wrapQtAppsHook
 , pcre
 , boost
 , catch2
@@ -16,50 +20,43 @@
 , yaml-cpp
 , ncurses
 , file
-, darwin
+, utmp
+, sigtool
 , nixosTests
+, installShellFiles
 }:
 
-let
-  # Commits refs come from https://github.com/contour-terminal/contour/blob/master/scripts/install-deps.sh
-  libunicode-src = fetchFromGitHub {
-    owner = "contour-terminal";
-    repo = "libunicode";
-    rev = "c2369b6380df1197476b08d3e2d0e96b6446f776";
-    sha256 = "sha256-kq7GpFCkrJG7F9/YEGz3gMTgYzhp/QB8D5b9wwMaLvQ=";
-  };
-
-  termbench-pro-src = fetchFromGitHub {
-    owner = "contour-terminal";
-    repo = "termbench-pro";
-    rev = "cd571e3cebb7c00de9168126b28852f32fb204ed";
-    sha256 = "sha256-dNtOmBu63LFYfiGjXf34C2tiG8pMmsFT4yK3nBnK9WI=";
-  };
-in
-mkDerivation rec {
+stdenv.mkDerivation (final: {
   pname = "contour";
-  version = "0.3.1.200";
+  version = "0.3.12.262";
 
   src = fetchFromGitHub {
     owner = "contour-terminal";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "sha256-TpxVC0GFZD3jGISnDWHKEetgVVpznm5k/Vc2dwVfSG4=";
+    repo = "contour";
+    rev = "v${final.version}";
+    hash = "sha256-4R0NyUtsyr3plYfVPom+EjJ5W0Cb/uuaSB5zyJ0yIB4=";
   };
 
   outputs = [ "out" "terminfo" ];
 
+  # fix missing <QtMultimedia/QAudioSink> on Darwin and codesign the binary
+  patches = [ ./contour-cmakelists.diff ./macos-codesign.diff ];
+
   nativeBuildInputs = [
     cmake
     pkg-config
     ncurses
     file
-  ];
+    wrapQtAppsHook
+    installShellFiles
+  ] ++ lib.optionals stdenv.isDarwin [ sigtool ];
 
   buildInputs = [
     fontconfig
     freetype
-    libGL
+    libunicode
+    termbench-pro
+    qtmultimedia
     pcre
     boost
     catch2
@@ -67,38 +64,37 @@ mkDerivation rec {
     microsoft-gsl
     range-v3
     yaml-cpp
-  ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.libs.utmp ];
-
-  preConfigure = ''
-    mkdir -p _deps/sources
+  ]
+  ++ lib.optionals stdenv.isLinux [ libutempter ]
+  ++ lib.optionals stdenv.isDarwin [ utmp ];
 
-    cat > _deps/sources/CMakeLists.txt <<EOF
-    macro(ContourThirdParties_Embed_libunicode)
-        add_subdirectory(\''${ContourThirdParties_SRCDIR}/libunicode EXCLUDE_FROM_ALL)
-    endmacro()
-    macro(ContourThirdParties_Embed_termbench_pro)
-        add_subdirectory(\''${ContourThirdParties_SRCDIR}/termbench_pro EXCLUDE_FROM_ALL)
-    endmacro()
-    EOF
-
-    ln -s ${libunicode-src} _deps/sources/libunicode
-    ln -s ${termbench-pro-src} _deps/sources/termbench_pro
+  cmakeFlags = [ "-DCONTOUR_QT_VERSION=6" ];
 
+  preConfigure = ''
     # Don't fix Darwin app bundle
     sed -i '/fixup_bundle/d' src/contour/CMakeLists.txt
   '';
 
   postInstall = ''
     mkdir -p $out/nix-support $terminfo/share
+  '' + lib.optionalString stdenv.isDarwin ''
+    mkdir $out/Applications
+    installShellCompletion --zsh $out/contour.app/Contents/Resources/shell-integration/shell-integration.zsh
+    installShellCompletion --fish $out/contour.app/Contents/Resources/shell-integration/shell-integration.fish
+    cp -r $out/contour.app/Contents/Resources/terminfo $terminfo/share
+    mv $out/contour.app $out/Applications
+    ln -s $out/bin $out/Applications/contour.app/Contents/MacOS
+  '' + lib.optionalString stdenv.isLinux ''
     mv $out/share/terminfo $terminfo/share/
+    installShellCompletion --zsh $out/share/contour/shell-integration/shell-integration.zsh
+    installShellCompletion --fish $out/share/contour/shell-integration/shell-integration.fish
+  '' + ''
     echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
   '';
 
   passthru.tests.test = nixosTests.terminal-emulators.contour;
 
   meta = with lib; {
-    # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/contour.x86_64-darwin
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
     description = "Modern C++ Terminal Emulator";
     homepage = "https://github.com/contour-terminal/contour";
     changelog = "https://github.com/contour-terminal/contour/raw/v${version}/Changelog.md";
@@ -107,4 +103,4 @@ mkDerivation rec {
     platforms = platforms.unix;
     mainProgram = "contour";
   };
-}
+})