diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index a2134c4d0578..3bfe4e8f393c 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -12253,7 +12253,7 @@ moni = { email = "lythe1107@gmail.com"; matrix = "@fortuneteller2k:matrix.org"; - github = "moni"; + github = "moni-dz"; githubId = 20619776; name = "moni"; }; diff --git a/nixos/tests/terminal-emulators.nix b/nixos/tests/terminal-emulators.nix index 2306c03c18e7..efaac03e1983 100644 --- a/nixos/tests/terminal-emulators.nix +++ b/nixos/tests/terminal-emulators.nix @@ -23,9 +23,8 @@ with pkgs.lib; let tests = { alacritty.pkg = p: p.alacritty; - # times out after spending many hours - #contour.pkg = p: p.contour; - #contour.cmd = "contour $command"; + contour.pkg = p: p.contour; + contour.cmd = "contour early-exit-threshold 0 execute $command"; cool-retro-term.pkg = p: p.cool-retro-term; cool-retro-term.colourTest = false; # broken by gloss effect diff --git a/pkgs/applications/terminal-emulators/contour/contour-cmakelists.diff b/pkgs/applications/terminal-emulators/contour/contour-cmakelists.diff new file mode 100644 index 000000000000..2c958c4ce46d --- /dev/null +++ b/pkgs/applications/terminal-emulators/contour/contour-cmakelists.diff @@ -0,0 +1,20 @@ +diff --git a/src/contour/display/CMakeLists.txt b/src/contour/display/CMakeLists.txt +index e2e9768c..fc1ea72f 100644 +--- a/src/contour/display/CMakeLists.txt ++++ b/src/contour/display/CMakeLists.txt +@@ -1,5 +1,5 @@ + if(CONTOUR_QT_VERSION EQUAL "6") +- find_package(Qt6 COMPONENTS Core Gui OpenGLWidgets Widgets REQUIRED) ++ find_package(Qt6 COMPONENTS Core Gui OpenGLWidgets Widgets Multimedia REQUIRED) + else() + find_package(Qt5 COMPONENTS Gui Widgets REQUIRED) # apt install qtbase5-dev libqt5gui5 + endif() +@@ -31,7 +31,7 @@ endif() + target_include_directories(ContourTerminalDisplay PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/../..") + target_link_libraries(ContourTerminalDisplay vtrasterizer) + if(CONTOUR_QT_VERSION EQUAL "6") +- target_link_libraries(ContourTerminalDisplay Qt6::Core Qt6::Gui Qt6::OpenGL Qt6::OpenGLWidgets Qt6::Widgets) ++ target_link_libraries(ContourTerminalDisplay Qt6::Core Qt6::Gui Qt6::OpenGL Qt6::OpenGLWidgets Qt6::Widgets Qt6::Multimedia) + else() + target_link_libraries(ContourTerminalDisplay Qt5::Gui Qt5::Widgets) + endif() 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 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 ]; + ] + ++ lib.optionals stdenv.isLinux [ libutempter ] + ++ lib.optionals stdenv.isDarwin [ utmp ]; + + cmakeFlags = [ "-DCONTOUR_QT_VERSION=6" ]; preConfigure = '' - mkdir -p _deps/sources - - cat > _deps/sources/CMakeLists.txt <> $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"; }; -} +}) diff --git a/pkgs/applications/terminal-emulators/contour/macos-codesign.diff b/pkgs/applications/terminal-emulators/contour/macos-codesign.diff new file mode 100644 index 000000000000..8e449dd0a493 --- /dev/null +++ b/pkgs/applications/terminal-emulators/contour/macos-codesign.diff @@ -0,0 +1,21 @@ +diff --git a/src/contour/CMakeLists.txt b/src/contour/CMakeLists.txt +index 0eebd585..5d0bc3c0 100644 +--- a/src/contour/CMakeLists.txt ++++ b/src/contour/CMakeLists.txt +@@ -145,6 +145,16 @@ if(CONTOUR_BUILD_WITH_MIMALLOC) + target_link_libraries(contour mimalloc) + endif() + ++if(APPLE) ++ add_custom_command( ++ TARGET contour POST_BUILD ++ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" ++ COMMAND codesign --force --sign - contour.app/Contents/MacOS/contour ++ COMMENT "Codesigning macOS bundle executable" ++ VERBATIM ++ ) ++endif() ++ + if(NOT(WIN32)) + set(terminfo_file "contour.terminfo") + set(terminfo_basedir "${CMAKE_CURRENT_BINARY_DIR}/terminfo") diff --git a/pkgs/development/libraries/libunicode/default.nix b/pkgs/development/libraries/libunicode/default.nix new file mode 100644 index 000000000000..4241f5bc7676 --- /dev/null +++ b/pkgs/development/libraries/libunicode/default.nix @@ -0,0 +1,33 @@ +{ lib, stdenv, fetchFromGitHub, fetchzip, cmake, catch2, fmt, python3 }: + +let + ucd-version = "15.0.0"; + + ucd-src = fetchzip { + url = "https://www.unicode.org/Public/${ucd-version}/ucd/UCD.zip"; + hash = "sha256-jj6bX46VcnH7vpc9GwM9gArG+hSPbOGL6E4SaVd0s60="; + stripRoot = false; + }; +in stdenv.mkDerivation (final: { + pname = "libunicode"; + version = "0.3.0-unstable-2023-03-05"; + + src = fetchFromGitHub { + owner = "contour-terminal"; + repo = "libunicode"; + rev = "65e0c6ddf9648b94aa9bc7dda0718401efa9ef8e"; + hash = "sha256-F4CVU5MImkM571mD4iFxqTnNbk2GXKTGksqO4LH2uEk="; + }; + + nativeBuildInputs = [ cmake python3 ]; + buildInputs = [ catch2 fmt ]; + + cmakeFlags = [ "-DLIBUNICODE_UCD_DIR=${ucd-src}" ]; + + meta = with lib; { + description = "Modern C++17 Unicode library"; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ moni ]; + }; +}) diff --git a/pkgs/development/libraries/termbench-pro/default.nix b/pkgs/development/libraries/termbench-pro/default.nix new file mode 100644 index 000000000000..11edecf31cc7 --- /dev/null +++ b/pkgs/development/libraries/termbench-pro/default.nix @@ -0,0 +1,34 @@ +{ lib, stdenv, fetchFromGitHub, cmake, fmt }: + +stdenv.mkDerivation { + pname = "termbench-pro"; + version = "unstable-2023-01-26"; + + src = fetchFromGitHub { + owner = "contour-terminal"; + repo = "termbench-pro"; + rev = "a4feadd3a698e4fe2d9dd5b03d5f941534a25a91"; + hash = "sha256-/zpJY9Mecalk7dneYZYzmFOroopFGklWw62a+LbiUVs="; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ fmt ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + mkdir -p $out/lib + mv termbenchpro/tbp $out/bin + mv libtermbench/libtermbench.a $out/lib + + runHook postInstall + ''; + + meta = with lib; { + description = "Terminal Benchmarking as CLI and library"; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = with maintainers; [ moni ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 543df1a05b1f..29fef33a90b0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3040,7 +3040,12 @@ with pkgs; blackbox-terminal = callPackage ../applications/terminal-emulators/blackbox-terminal { }; - contour = libsForQt5.callPackage ../applications/terminal-emulators/contour { fmt = fmt_8; }; + contour = qt6.callPackage ../applications/terminal-emulators/contour { + inherit (darwin.apple_sdk_11_0.libs) utmp; + inherit (darwin) sigtool; + stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; + fmt = fmt_9; + }; cool-retro-term = libsForQt5.callPackage ../applications/terminal-emulators/cool-retro-term { }; @@ -23630,6 +23635,8 @@ with pkgs; libuldaq = callPackage ../development/libraries/libuldaq { }; + libunicode = callPackage ../development/libraries/libunicode { fmt = fmt_8; }; + libunwind = if stdenv.isDarwin then darwin.libunwind else if stdenv.hostPlatform.system == "riscv32-linux" then llvmPackages_14.libunwind @@ -25325,6 +25332,8 @@ with pkgs; tepl = callPackage ../development/libraries/tepl { }; + termbench-pro = callPackage ../development/libraries/termbench-pro { fmt = fmt_8; }; + telepathy-glib = callPackage ../development/libraries/telepathy/glib { }; telepathy-farstream = callPackage ../development/libraries/telepathy/farstream { };