ghostty/nix/devShell.nix
Qwerasd d38d0f30c4 font/sprite: replace pixman with z2d, extend Box coverage
More complete coverage of the Symbols For Legacy Computing block,
including characters from Unicode 16.0.

Pixman and the web canvas impl for Canvas have been removed in favor of
z2d for drawing, since it has a nicer API with more powerful methods,
and is in Zig with no specific platform optimizations so should compile
to wasm no problem.
2024-10-14 17:50:49 -04:00

154 lines
2.7 KiB
Nix

{
mkShell,
lib,
stdenv,
bashInteractive,
gdb,
#, glxinfo # unused
ncurses,
nodejs,
nodePackages,
oniguruma,
parallel,
pkg-config,
python3,
qemu,
scdoc,
valgrind,
#, vulkan-loader # unused
vttest,
wabt,
wasmtime,
wraptest,
zig,
zip,
llvmPackages_latest,
bzip2,
expat,
fontconfig,
freetype,
glib,
gtk4,
libadwaita,
gnome,
hicolor-icon-theme,
harfbuzz,
libpng,
libGL,
libX11,
libXcursor,
libXext,
libXi,
libXinerama,
libXrandr,
zlib,
alejandra,
pandoc,
hyperfine,
typos,
}: let
# See package.nix. Keep in sync.
rpathLibs =
[
libGL
]
++ lib.optionals stdenv.hostPlatform.isLinux [
bzip2
expat
fontconfig
freetype
harfbuzz
libpng
oniguruma
zlib
libX11
libXcursor
libXi
libXrandr
libadwaita
gtk4
glib
];
in
mkShell {
name = "ghostty";
packages =
[
# For builds
llvmPackages_latest.llvm
ncurses
pandoc
pkg-config
scdoc
zig
zip
# For web and wasm stuff
nodejs
# Linting
nodePackages.prettier
alejandra
typos
# Testing
parallel
python3
vttest
hyperfine
# wasm
wabt
wasmtime
]
++ lib.optionals stdenv.hostPlatform.isLinux [
# My nix shell environment installs the non-interactive version
# by default so we have to include this.
bashInteractive
# Used for testing SIMD codegen. This is Linux only because the macOS
# build only has the qemu-system files.
qemu
gdb
valgrind
wraptest
bzip2
expat
fontconfig
freetype
harfbuzz
libpng
oniguruma
zlib
libX11
libXcursor
libXext
libXi
libXinerama
libXrandr
# Only needed for GTK builds
libadwaita
gtk4
glib
];
# This should be set onto the rpath of the ghostty binary if you want
# it to be "portable" across the system.
LD_LIBRARY_PATH = lib.makeLibraryPath rpathLibs;
# On Linux we need to setup the environment so that all GTK data
# is available (namely icons).
shellHook = lib.optionalString stdenv.hostPlatform.isLinux ''
# Minimal subset of env set by wrapGAppsHook4 for icons and global settings
export XDG_DATA_DIRS=$XDG_DATA_DIRS:${hicolor-icon-theme}/share:${gnome.adwaita-icon-theme}/share
export XDG_DATA_DIRS=$XDG_DATA_DIRS:$GSETTINGS_SCHEMAS_PATH # from glib setup hook
'';
}