2025-07-24 13:55:40 +02:00

120 lines
2.8 KiB
Nix

{
lib,
stdenv,
fetchFromGitLab,
fetchpatch,
meson,
ninja,
pkg-config,
vala,
gtk4,
vte-gtk4,
json-glib,
sassc,
libadwaita,
pcre2,
libsixel,
libxml2,
librsvg,
libgee,
callPackage,
python3,
desktop-file-utils,
wrapGAppsHook4,
sixelSupport ? false,
}:
let
marble = callPackage ./marble.nix { };
in
stdenv.mkDerivation rec {
pname = "blackbox";
version = "0.14.0";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "raggesilver";
repo = "blackbox";
rev = "v${version}";
hash = "sha256-ebwh9WTooJuvYFIygDBn9lYC7+lx9P1HskvKU8EX9jw=";
};
patches = [
# Fix closing confirmation dialogs not showing
(fetchpatch {
url = "https://gitlab.gnome.org/raggesilver/blackbox/-/commit/3978c9b666d27adba835dd47cf55e21515b6d6d9.patch";
hash = "sha256-L/Ci4YqYNzb3F49bUwEWSjzr03MIPK9A5FEJCCct+7A=";
})
# Fix build with GCC 14
# https://gitlab.gnome.org/GNOME/vala/-/merge_requests/369#note_1986032
# https://gitlab.gnome.org/raggesilver/blackbox/-/merge_requests/143
(fetchpatch {
url = "https://gitlab.gnome.org/raggesilver/blackbox/-/commit/2f45717f1c18f710d9b9fbf21830027c8f0794e7.patch";
hash = "sha256-VlXttqOTbhD6Rp7ZODgsafOjeY+Lb5sZP277bC9ENXU=";
})
];
postPatch = ''
substituteInPlace build-aux/meson/postinstall.py \
--replace-fail 'gtk-update-icon-cache' 'gtk4-update-icon-cache'
patchShebangs build-aux/meson/postinstall.py
'';
nativeBuildInputs = [
meson
ninja
pkg-config
vala
sassc
wrapGAppsHook4
python3
desktop-file-utils # For update-desktop-database
];
buildInputs = [
gtk4
(vte-gtk4.overrideAttrs (
old:
{
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "vte";
rev = "3c8f66be867aca6656e4109ce880b6ea7431b895";
hash = "sha256-vz9ircmPy2Q4fxNnjurkgJtuTSS49rBq/m61p1B43eU=";
};
patches = lib.optional (old ? patches) (lib.head old.patches);
postPatch = (old.postPatch or "") + ''
patchShebangs src/box_drawing_generate.sh
'';
}
// lib.optionalAttrs sixelSupport {
buildInputs = old.buildInputs ++ [ libsixel ];
mesonFlags = old.mesonFlags ++ [ "-Dsixel=true" ];
}
))
json-glib
marble
libadwaita
pcre2
libxml2
librsvg
libgee
];
mesonFlags = [ "-Dblackbox_is_flatpak=false" ];
meta = {
description = "Beautiful GTK 4 terminal";
mainProgram = "blackbox";
homepage = "https://gitlab.gnome.org/raggesilver/blackbox";
changelog = "https://gitlab.gnome.org/raggesilver/blackbox/-/raw/v${version}/CHANGELOG.md";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [
chuangzhu
linsui
];
platforms = lib.platforms.linux;
};
}