Something went wrong. Try again.
A GPU terminal emulator for Wayland and Windows on libghostty-vt, drawing with Vulkan, running a program on a pty or a serial port.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461# generated by zon2nix (https://github.com/jcollie/zon2nix){ lib, fetchgit, fetchurl, fetchzip, runCommand, zig_0_17, zstd, name ? "zig-packages", # Accepted and ignored. Expressions from zon2nix before 0.8 built the # packages with `linkFarm`, and some callers override it with a version that # copies, to work around Zig mishandling symlinked package directories # (https://codeberg.org/ziglang/zig/issues/32121). The packages are real # directories now, so the override is not needed, and is taken here only so # that passing it is not an error. linkFarm ? null,}:let # A git repository, checked out the way Zig reads it: every file as # committed. An ordinary checkout applies the repository's `.gitattributes`, # which can rewrite a file's line endings or run it through a filter, and # the package would then no longer match its hash. Pointing git at its # built-in empty tree for attributes turns them all off, and `core.autocrlf` # is turned off too, since it converts line endings even without them. # zon2nix computes the hash with exactly these settings. fetchZigGit = args: fetchgit ( args // { fetchSubmodules = false; preFetch = '' export GIT_ATTR_SOURCE=4b825dc642cb6eb9a060e54bf8d69288fbee4904 export GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.autocrlf GIT_CONFIG_VALUE_0=false ''; } );
# Every package, by the hash Zig knows it by, as Nix fetches it. packages = { "aerie-0.1.0-ph2O1iTkCAA5gmJ69zja2RLVj_CenBIGc61WIpUTYlFO" = fetchZigGit { name = "aerie"; url = "https://git.jcollie.dev/jeff/zig-aerie.git"; rev = "a771fed025a1f5b3566a8101b042ec44e4b42e38"; hash = "sha256-t+FTVaUnTC8WdyMZQWpd8EVFzydmSeA7PSUmD7CZMnc="; }; "aro-0.0.0-JSD1QtuBNwCASyBtNF3pqTl_W3oAJQGEVyFAtrBSE_Pa" = fetchZigGit { name = "aro"; url = "https://codeberg.org/ziglang/arocc"; rev = "d0c8c4d9c55daa7ef6e40cf0f630a5b5e900989b"; hash = "sha256-dXITkdmanCYe4DpTzBDRtL0JdEeAyV4Qwlon5ndznHM="; }; "brotli-0.1.0-GWHpYE0uGQDk0XRhgawEAcXVZGclK9qIMWCXcFqo-gmG" = fetchZigGit { name = "brotli"; url = "https://git.jcollie.dev/jeff/zig-brotli.git"; rev = "9bec8c6a954dd7759642660d684ce6022ef93524"; hash = "sha256-hZefUpq0PhI5vKg50znCWB+bbtT9IouZ7ruPZ68IHwQ="; }; "charset-0.3.1-vwxVhb4zIQAi5feT1iIELLkmETGObXKMSi6kbbRcbRLI" = fetchZigGit { name = "charset"; url = "https://git.jcollie.dev/jeff/zig-charset.git"; rev = "e074fe74f11efff7e8b3b10cc4aa90a7790e4a66"; hash = "sha256-bXTks0MF4UH6FzrHLLl2nIxlGe8RlRIk9t8BXfKeCjc="; }; "chime-0.0.0-j9yxJqlWAgC5giLw8rGwO9A3FD4vAsSUOQQ5_HQDoF7p" = fetchZigGit { name = "chime"; url = "https://git.jcollie.dev/jeff/zig-chime.git"; rev = "63971dca3fa6d85d687e5de9e8ebd6509f6f0d4b"; hash = "sha256-8zyUfUM1muKVKko94JK+nd3k2czQXb53i9ypfQaZ2rM="; }; "N-V-__8AAJ0BOADACTmMHO-NUReZ9f6jk97_sQz27yQqiNu_" = fetchurl { url = "https://git.jcollie.dev/api/packages/jeff/generic/conpty/1.25.260930003/microsoft.windows.console.conpty.1.25.260930003.zip"; hash = "sha256-ArB7NJr2bYARWb355EDUoc54u5UfN/yGCXMWZa/a5+4="; }; "css-0.3.0-d530kC4oLwAynd0fs6-ZE0M3xkpVE8tEm7hEAha2_qKu" = fetchZigGit { name = "css"; url = "https://git.jcollie.dev/jeff/zig-css.git"; rev = "fe0955523b6c47b159ffeac31bd859a91d7b2a23"; hash = "sha256-I9OXy8Npm0H6hp85We8csaW+PSeVHAoMZ9RRS+yLjSs="; }; "datetime-0.0.1-6-va75PLRwCTakG5hoGcVabp39RTiiYy7ZZSTqeEFaPx" = fetchZigGit { name = "datetime"; url = "https://git.jcollie.dev/jeff/zig-datetime.git"; rev = "0df87931af9eecab4d0fab4f41feddea0852acb6"; hash = "sha256-sx3a7eW5DtJWlayIhK2xDZsZgB3yUMA7OR90puw2Oe0="; }; "dbus_service-0.3.0-lOZ3JIMFBAAft5_85UexiPpENviyM5SHAwD1p35YhGqW" = fetchZigGit { name = "dbus_service"; url = "https://git.jcollie.dev/jeff/zig-dbus-service.git"; rev = "0b127fb997217cb6447d778f5eca00872acf49ce"; hash = "sha256-KnIlJpxwKn8ps4/chCjLktY964gNwxvp+eDe2Vv3nfA="; }; "flac-0.3.0-16osTGHcBQDqxVR-qhyvJhZ1vsH4wWNNUkyLB8VQDor4" = fetchZigGit { name = "flac"; url = "https://git.jcollie.dev/jeff/zig-flac.git"; rev = "89fffae87114a8d15329c95cde86b3a963fba16b"; hash = "sha256-OMp75Q46C1qn9ZVZGlPUuK6BQTyQ0gmyj/80t9mtVNc="; }; "fluent-0.2.0-N_WW87_ycABw1DgZli80Y0ERbL9q1Qn0FHCE_HxxpzuB" = fetchZigGit { name = "fluent"; url = "https://git.jcollie.dev/jeff/zig-fluent.git"; rev = "bfd6c87f8effb4cc63b7263e43b476171ca7eb42"; hash = "sha256-N/E1sMEwzFQ3VrWfrIpWvSbcjI8BezZfA3P3OAU89KY="; }; "font-0.1.0-zFsL_hU8FABw5dKOH1Nkzx2Uy1hGQ1whq4wCOUD-oKUd" = fetchZigGit { name = "font"; url = "https://git.jcollie.dev/jeff/zig-font.git"; rev = "3316062247c1b4e20f4232957ba67b3533042a07"; hash = "sha256-g13jEyImQteMxWloTciKTh0I5moJwRbldqjLCp6VY2c="; }; "font_config-0.1.0--jGbH97_DQCrAg7hlwTv-bk-rUDjFkF2sBwKzQqGQFg2" = fetchZigGit { name = "font_config"; url = "https://git.jcollie.dev/jeff/zig-font-config.git"; rev = "4b279f0234ab5adcf57d542d7879ba15cb6e8ee2"; hash = "sha256-MQpNiE32BZuQoikSAEslb8JsK17JXy9J67qu5tZzXgU="; }; "font_config-0.1.0--jGbH54RDgCmu4ix5bgHpGZyTV6b342Bmo0FzbLwrcE9" = fetchZigGit { name = "font_config"; url = "https://git.jcollie.dev/jeff/zig-font-config.git"; rev = "50e65481b7eed4307e0f6552fb5a6d652dd144aa"; hash = "sha256-vn0mItn8xq1NXqWfd+HhedAzikkmg9sdudUdQgkqGBU="; }; "font_renderer-0.1.0-QBeNpB61CgBeeifWcj0rHbveMnZa19bFqoG3AXUiHSa4" = fetchZigGit { name = "font_renderer"; url = "https://git.jcollie.dev/jeff/zig-font-renderer.git"; rev = "872c866083ab0e533599d6e6bebf6f1ef46212fe"; hash = "sha256-SD7vIct02sdtQTyu+LPiRpQ0mDkoBYscQ6UU+MBPlYA="; }; "N-V-__8AAKGDMADeS_f-iAyhuZkCNMel8tgu58hjBkKv-7lm" = fetchzip { name = "fontconfig"; url = "https://gitlab.freedesktop.org/fontconfig/fontconfig/-/archive/2.18.3/fontconfig-2.18.3.tar.gz"; hash = "sha256-CtyB8SZy4OdnFRYw7YGEI2sMqlGdeCZt/RFYCjjJXP4="; }; "ghostty-1.3.2-dev-5UdBC7uTiwXWsWqU79JuOSLsdHRuc6hFTwAE5Q95jkHh" = fetchZigGit { name = "ghostty"; url = "https://git.jcollie.dev/jeff/ghostty.git"; rev = "3c6d3454ad7bb3ec0e3d388b9aa0bb52a97610ed"; hash = "sha256-K27e91zIYPqpsg12DETzIm+wbDWKQcAff47eWwA1X78="; }; "N-V-__8AAGmZhABbsPJLfbqrh6JTHsXhY6qCaLAQyx25e0XE" = fetchzip { name = "highway"; url = "https://deps.files.ghostty.org/highway-66486a10623fa0d72fe91260f96c892e41aceb06.tar.gz"; hash = "sha256-1xn+WAxeQyrz9KA3y4EOCr5Z94mom7J5TNdippPe2Sw="; }; "N-V-__8AAI2WBQDrsjfyEiqnmYZ4VfGdJaZhN2mKsaTaIVWq" = fetchzip { name = "iterm2_themes"; url = "https://deps.files.ghostty.org/ghostty-themes-release-20261012-151317-d3e95e4.tgz"; hash = "sha256-cC8U6wYmluVf/7Pc2FoAs1C6xQNBgwLrfwJ5gkO5VTo="; }; "known_folders-0.0.0-Fy-PJiDLAAB98m3uYUzatrTb2mO2fpvwx2zpSroEtfbO" = fetchZigGit { name = "known_folders"; url = "https://github.com/ziglibs/known-folders.git"; rev = "6da0d0c41b78b9ed2d34fa364fcb81b5ebece6c4"; hash = "sha256-F17Ivvsyyla2CBIh+kImc1O3AtD2yTDAGamzMVbVzuw="; }; "N-V-__8AAADWXwF69u4_iufnV_gwfb3M2ATbbZF-yGFRrEFH" = fetchzip { name = "libopus"; url = "https://downloads.xiph.org/releases/opus/opus-1.5.2.tar.gz"; hash = "sha256-S7RhVT+YnTMwIbf9dVzk3VOvgfOqdIrdmqOSmwcfQ9s="; }; "N-V-__8AABcX-ADkV-YTeKtM4Hir2TIWZc2kxn-b9X0mZ2jH" = fetchzip { name = "libx11"; url = "https://www.x.org/releases/individual/lib/libX11-1.8.13.tar.xz"; hash = "sha256-Qe6CG99mVTlDvm+O1jbLFXYv9MW45RtIC1FgtEIr05k="; }; "N-V-__8AAGh7bAAD9LH6Hh6HB6br9SDZmRBbRu-_1NNpQ4GL" = fetchzip { name = "libxkbcommon"; url = "https://github.com/xkbcommon/libxkbcommon/archive/refs/tags/xkbcommon-1.13.2.tar.gz"; hash = "sha256-JdS4+HPHDUUOUq5TUX2F5DicHif8wD3cPvMocWhD4S4="; }; "mdbus-0.2.0-azRX-ue0AwAUqZ1nWMXjb62cM0L17RdqDZ1deZhupoF6" = fetchZigGit { name = "mdbus"; url = "https://git.jcollie.dev/jeff/mdbus.git"; rev = "ab189be1c1022d37fc0f3eb4674f9e0c2a86f7e7"; hash = "sha256-uQu/Ne4K01bOo14wUVNMfixbyyI12A4CM8jFq8tasnQ="; }; "zig_mp3-0.2.0-yG5WDJfgDgAhAmcQYpSUFiO1bfXoW9XpTOXgLRgmAFU6" = fetchZigGit { name = "mp3"; url = "https://git.jcollie.dev/jeff/zig-mp3.git"; rev = "630798ae9e98bffe641c44d70571f206421f4e24"; hash = "sha256-zkJZ0IbFp14+CNo9nKa2ParMp17oURNn2QMoHoFahno="; }; "ogg-0.3.0-AI2CC7inAgCAi7EVrxJdEgzXHSw4t3h3fr4IYA4W_dWw" = fetchZigGit { name = "ogg"; url = "https://git.jcollie.dev/jeff/zig-ogg.git"; rev = "705662b256cab123aa29bd020d7b8521a7a5760c"; hash = "sha256-/vFjt4Hmo9YVbBHm0qw5dDP0luJn4E8ccPG2nQqpbsY="; }; "opus-0.4.0-JoIcxmQyFwBPc8olZV40rXMhTxg5io5m5qsc0AUdTa6v" = fetchZigGit { name = "opus"; url = "https://git.jcollie.dev/jeff/zig-opus.git"; rev = "da36b08c851be33eaaf712c2b9aa93dc78512df1"; hash = "sha256-w19UWfvP8Mt8czkOUnVkMm5WcZd5wUDYst/p3/rFMX8="; }; "pipewire-0.2.0-lH35Hg-dBgAl54C6I1srRR_4pjWFIHkgWoqOtYY8aJ1g" = fetchZigGit { name = "pipewire"; url = "https://git.jcollie.dev/jeff/zig-pipewire.git"; rev = "b97236221878cae8cea64b46a912df8f342dad8c"; hash = "sha256-s2SW94jE233cVA48UTu2Pvt6BZS5cul3rB3VkOptdBo="; }; "N-V-__8AADYiAAB_80AWnH1AxXC0tql9thT-R-DYO1gBqTLc" = fetchzip { name = "pixels"; url = "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz"; hash = "sha256-kXYGO0qn2PfyOYCrRA49BHIgTzdmKhI8SNO1ZKfUYEE="; }; "riff-0.3.0-HAfI3hvpAAC0x2BglCLXC8KbAh-2QsqaM7iGWlOdcji3" = fetchzip { name = "riff"; url = "https://git.jcollie.dev/jeff/zig-riff/archive/95720d487115c285f5b890e5788499f3931a4d26.tar.gz"; hash = "sha256-zIhM3MRgivvegHV+PCPWofjb6H9UxvhAnKQl/60cZGI="; }; "serial-0.1.0-5gcbR3pTAQCwerFi7A3EM9C39T2pX9S3pRqJ_RIarvGz" = fetchZigGit { name = "serial"; url = "https://git.jcollie.dev/jeff/zig-serial.git"; rev = "87bb86c2965ba913429ebe470adf33a0d4d3692f"; hash = "sha256-jtmNiDEmL9yNZhxhvy72Lbr5S0GW8XDQWBa+wlxcogg="; }; "struthio-0.1.0-Ubljzw-eBgDnwwn7Q2WkwgiHWCnernGwpmMvHti1SbIa" = fetchZigGit { name = "struthio"; url = "https://git.jcollie.dev/jeff/struthio.git"; rev = "bcdafb807815d68272c51d56c11d795010f77c4a"; hash = "sha256-MCpl25Fi1oLuW1S6T1LUeIZK5Vt9NhvQ8Xa89lGIoCg="; }; "svg-0.2.0-UczxtNd5FwCxiRF33fsLmxzOrk16aXsYHdpklOHpdiii" = fetchZigGit { name = "svg"; url = "https://git.jcollie.dev/jeff/zig-svg.git"; rev = "6feaa8d4aee609b0945473931fb27fdcdf1ebfef"; hash = "sha256-1fm3C4jn6VOvs3urguXZqXtLamaLWH3BlhGRcHiTJXA="; }; "translate_c-2.0.0-Q_BUWltOBwBYABF84EUL208pIFeUIwbBs29FmVBaafN5" = fetchzip { name = "translate_c"; url = "https://deps.files.ghostty.org/translate_c-02ff0c523fb92a38939b04d0145c4a9602a74d56.tar.gz"; hash = "sha256-13iPyWXUhBQXhF7AKbzKwrVdIrDQrMBNL8OfMyFdde0="; }; "uri-0.4.0-yCrwNG9RFABqcGa05zp-QRUjfajbARn7a9KoY6N6A1v_" = fetchZigGit { name = "uri"; url = "https://git.jcollie.dev/jeff/zig-uri.git"; rev = "0c174b5afc0b8c1793f4b02de58d25f4b768f102"; hash = "sha256-YFO1GCcoJB/QLi14FD7+6jNET4SX06etOt6ZwrMcDnY="; }; "uucode-0.2.0-ZZjBPm6FVgBcY-79AHV8ckQj86z0JwOyVyj89VeZrEiv" = fetchZigGit { name = "uucode"; url = "https://github.com/jacobsandlund/uucode"; rev = "1fb73433bba5d93366c57f23ff2e9d7939746500"; hash = "sha256-fZTYVFN0N10R0Ty+3tpMkTLqEBq4tTpkBK6G1m6VgmY="; }; "uucode-0.2.0-ZZjBPoGFVgCiflJNFc6Io8xzC67B6PA5bUkk4LT0kCxg" = fetchzip { name = "uucode"; url = "https://deps.files.ghostty.org/uucode-ea62149739404a73c202b48a33bf6dd2af4bd9b0.tar.gz"; hash = "sha256-dKrRJhFThGSdv5k6pEF2adGZIKxUQssAO30XAtLOFQ8="; }; "uuid-0.1.0-U9zbT5NIAQBfQc4c9VZtw77lUUfgiDAsmnkvb9LY6JVG" = fetchZigGit { name = "uuid"; url = "https://git.jcollie.dev/jeff/zig-uuid"; rev = "7473a9764bf9e008127809f0c130434910fe286b"; hash = "sha256-GBF/gdLZ1btrwkVWcPMUH3ZYPsTrXHDyYcXC6L2aRw0="; }; "vp8-0.2.0-8XCztDfrEwDYcNhNK6Xm6HNRvQNcchYp6gdlx1dtnAFZ" = fetchzip { name = "vp8"; url = "https://git.jcollie.dev/jeff/zig-vp8/archive/940c92375d7b841a03aa76f5223480834ac03a8f.tar.gz"; hash = "sha256-pYFG+pqNB3hnSokZAWD4uLEzUxVZR9vaB5WAZOt4CnY="; }; "vulkan-0.0.0-r7Ytx_6DAwDB1QJAbIew5IzR2PiiAtJENX5kdJHf449X" = fetchZigGit { name = "vulkan"; url = "https://github.com/Snektron/vulkan-zig"; rev = "f80632864d2354443ecad07d4cb0e549c6c80a09"; hash = "sha256-DUl5ieaKD+cbAAKRgyhkhX+yh/f6qWFbh0dCjr+6/z8="; }; "N-V-__8AAB3SBAKySRcX3yPGLhjKZreuo_mCzCTRBgkE1e-v" = fetchzip { name = "vulkan_headers"; url = "https://github.com/KhronosGroup/Vulkan-Headers/archive/3dda5a1a87b62fdf3baf4680edc41c00e85a7a22.tar.gz"; hash = "sha256-mmmvBElTUCRNWtaRHzO6axbutjoyS/lgM6Nicix2Fi4="; }; "wasapi-0.2.0-Y48zc6T8BgC7s-Eo-qUz5GDtxbwP4Qx80WZM0tchtr_p" = fetchZigGit { name = "wasapi"; url = "https://git.jcollie.dev/jeff/zig-wsapi.git"; rev = "ee982775975bb633ab60bbcb5cc8410dbb4ac7b5"; hash = "sha256-0maPb8x7EDLEGANHykMVhwKBxmfha4RzK8OYOYJlT8U="; }; "wayland-0.2.0-cZMvVNXQBABB9jL-PjFfb4kEvrwH0ROPkFl5WMv2_wNR" = fetchZigGit { name = "wayland"; url = "https://git.jcollie.dev/jeff/zig-wayland-native.git"; rev = "4bac8b4aaecf165f465c898dbfcb8a1768e61ba6"; hash = "sha256-q1twH4ACq1GkvIOSY+kqS9yIAUrWkMAQenJxRYyZ+GY="; }; "N-V-__8AAOTNEADZkChhsSciYizE4kIbZsozjDZXVeG5R_uY" = fetchzip { name = "wayland_protocols"; url = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/1.49/downloads/wayland-protocols-1.49.tar.xz"; hash = "sha256-kYCbEbh4C4FnqJzwrI+6soYTm5qffEor1Rn2B2f1IKA="; }; "N-V-__8AAA46JQABKU7sa-6xGUAN44uFsYSUS_w79UVuu7qo" = fetchzip { name = "wayland_xml"; url = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/1.26.0/downloads/wayland-1.26.0.tar.xz"; hash = "sha256-dnaXYcVfc4DfNRsAEL316eSTen9tpf+nuQbActege4E="; }; "win32-42.0.39-preview-mX5pFc794wMcrMyFgsO1c4csBdowhpiqqwIyN_xjqI5z" = fetchzip { name = "win32"; url = "https://github.com/marlersoft/zigwin32/archive/fb2645891520f3e99931db17a7eba04057e87e89.tar.gz"; hash = "sha256-AHrMKAYCceE1V5PQHzdPnYljIzEQbDyyLvRVzRKGTn0="; }; "N-V-__8AAP5JWgCGP_AD0teWpa4krRvE9VPZzvviGdbmN4jI" = fetchzip { name = "wuffs"; url = "https://deps.files.ghostty.org/wuffs-7411f488fe2e2c205c3d3b3d28638b7356522930.tar.gz"; hash = "sha256-sOuwt3R6xG7oqXaA66QGUjFHrEjGnTXjwYs6rSRb+7I="; }; "xkb-0.2.0-xZGZalw6AwD0kjRQoDq9PJWvW5_raSyiboT-VhepfCkL" = fetchZigGit { name = "xkb"; url = "https://git.jcollie.dev/jeff/zig-xkb.git"; rev = "1fd7af423f849fc65315a103dbe738effa23c2d1"; hash = "sha256-6n80jBwdOQGX5Retlwu2rnNdWmOXS+aQMVPo5I36tx8="; }; "z2d-0.13.0-j5P_HhoOEwDhf6BtdL-qSncLzYopF4BdDuYtVrl9x_oU" = fetchZigGit { name = "z2d"; url = "https://git.jcollie.dev/jeff/z2d.git"; rev = "95e6d0dd70d8161f40cd6600a26520c5719b30b5"; hash = "sha256-wCk4pBNqmaOZLLS9RXh6jW2pFXiAj9TcLBz8YwFuAyk="; }; "z2dimg-0.2.0-N7PaCVAXJADB50Lgp1Fw3phtyQDk6tM3tSHQErraNKOI" = fetchZigGit { name = "z2dimg"; url = "https://git.jcollie.dev/jeff/z2dimg.git"; rev = "f6037e4b8a65258ac06398082f91fd595f1be109"; hash = "sha256-FHeHS+b/lUNCaVS/sbA4nbVZzjZB8nGlCGxyVxsMKBc="; }; "z46-0.2.0-_AxhwAXTCQDzvmmh5CP6zrvAk03GpkQz_fdYpbc53DND" = fetchZigGit { name = "z46"; url = "https://git.jcollie.dev/jeff/z46.git"; rev = "cde52f655fa3a099c016c042c080f8112330f682"; hash = "sha256-RPKBTbLZ7bIJXb7g5CBytRXGPkT8Tn8dhiavVpz27Tw="; }; "zf-0.11.0-OIRy8XCRAAB6FiMwIrtD6FqlagnFwpI6YyOu7bXeYH5J" = fetchzip { name = "zf"; url = "https://deps.files.ghostty.org/zf-87153bb86b75d21fbac897b738f316d449f5d0c9.tar.gz"; hash = "sha256-ekfl/d+RAdCAjYC75bbAn/srS7RlfE2cuUGZLYg1ACw="; }; "zig_charset-0.2.0-vwxVhZJ4IACGQafWULuP6AIbS9i4O2pl9OOqXIgliUAX" = fetchZigGit { name = "zig_charset"; url = "https://git.jcollie.dev/jeff/zig-charset.git"; rev = "591ec3da0819d880b539788ede026bfe4a94c9b3"; hash = "sha256-kwayanmto0vpH3Cgc8FiotgDmW0PYVioiwkaJc2+qXA="; }; "font_renderer-0.1.0-QBeNpB61CgBAUysk6vRDmOSV2o1tHYuOQ0GzYAZR42CP" = fetchZigGit { name = "zig_font_renderer"; url = "https://git.jcollie.dev/jeff/zig-font-renderer.git"; rev = "c5dcfec457978e85937bc8fb61050c75cb8f858e"; hash = "sha256-3XGfq+jNVyG4luMUvKeZlsgC1PoyM+4R+OdyP3+4TVM="; }; "font_shaper-0.1.0-PAjc5H7xWACcfTE61Lr8XmmTwPTAi12xnJ3XRqjdAV5y" = fetchZigGit { name = "zig_font_shaper"; url = "https://git.jcollie.dev/jeff/zig-font-shaper.git"; rev = "b2c6cd4dbc8c96e5f193c9cf8d44c6e351181e7d"; hash = "sha256-lVEKfn75NB2XnO9sjiBjjqFoAKLkQVQHSxJHyf0su7Y="; }; "zixl-0.0.0-_LypS7TdEQC3OJUOYcoMWE-x0PvTEpH5U4EwTKzlAWZR" = fetchZigGit { name = "zixl"; url = "https://git.jcollie.dev/jeff/zixl.git"; rev = "f78e5ee916710883ea70fe6ce25f19e0a798ed66"; hash = "sha256-XMuab0Z1wWiQzDG8xIg0vhVJD0aEYMzRbynlrZIbLPE="; }; "N-V-__8AAB0eQwD-0MdOEBmz7intriBReIsIDNlukNVoNu6o" = fetchzip { name = "zlib"; url = "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz"; hash = "sha256-TkPLWSN5QcPlL9D0kc/yhH0/puE9bFND24aj5NVDKYs="; }; "ztree-0.2.0-Rb9y2YsvAwDe_5M0s33sBst4E6CnPW65wP614UbtTdxa" = fetchZigGit { name = "ztree"; url = "https://git.jcollie.dev/jeff/ztree.git"; rev = "a48ee058ff0b0e9a758573a1c8a0fcbcf62ef2cf"; hash = "sha256-rHqtnK37VInUVYYi1VuVil5iA1vghG7e47v4OP5Y3DY="; }; "zxml-0.2.0-JUQ_3VWSBACHDuQEBRk261c8VU2k49kO5Cf4pIeJhzEo" = fetchZigGit { name = "zxml"; url = "https://git.jcollie.dev/jeff/zxml.git"; rev = "5ed321016b104cbfc8f6ea24edf96bf5be4a40a4"; hash = "sha256-Cg81TK9KfyOtp1S8x+zp8idjhAY/BbKfpiLwOaEvAHs="; }; "zxml-0.2.0-JUQ_3VnJAwDYZssSsJKNSVZZd02dliNj2N9LJwBfadsp" = fetchZigGit { name = "zxml"; url = "https://git.jcollie.dev/jeff/zxml.git"; rev = "956b354864b3b50347d921eef27419529850346a"; hash = "sha256-efHpkvtabJW5mbvOOH/yosLEb50Rglj9azaYWBoG2NA="; }; };
# The packages whose own manifest declares a dependency by `.path`. Zig # 0.17.0 cannot build these through `zig build --system`: it roots the system # package directory at its absolute store path, so a `.path` dependency # inside one of these resolves to an absolute path, which it refuses with # "expected path relative to build root; found absolute path". A package # that wants `--system` copies each of these into its build root and passes # `--fork=` with a relative path; see the README. pathDependencyPackages = [ "ghostty-1.3.2-dev-5UdBC7uTiwXWsWqU79JuOSLsdHRuc6hFTwAE5Q95jkHh" ];in# One directory holding every package the way Zig unpacks it -- filtered by# its manifest's `.paths` and checked against its hash -- which is what# `zig build --system` wants.## They have to be real directories holding real files, not links into each# package's own store path. Zig runs a dependency's build steps from inside# it and counts its way back out through `..`, which lands in the wrong place# when the directory is a symlink; and `installHeadersDirectory` copies only# what the directory walk calls a file, so symlinked headers are skipped# without a word. Building them all in one derivation gives real files from# the start, without a second copy of everything.## `runCommand` and not `runCommandLocal`: the result is worth taking from a# binary cache. Building it locally means first fetching a whole Zig, and# under 0.17 compiling its fetch build runner too, which is minutes on a small# CI machine; `runCommandLocal` forbids substituting it, so every job that# wants the packages builds them again even when a cache already holds them.runCommand name { nativeBuildInputs = [ zig_0_17 ]; passthru = { inherit pathDependencyPackages; }; } '' mkdir "$out"
# Zig 0.17 runs `zig fetch` in a build runner it compiles into the global # cache the first time, which takes a minute or more. Every package shares # one cache, then, and it is compiled once here before they are fetched # several at a time, rather than by each of them at once. export ZIG_GLOBAL_CACHE_DIR="$TMPDIR/cache" mkdir -p "$ZIG_GLOBAL_CACHE_DIR" zig fetch --help >/dev/null
# Without `--save`, which wants a project to save into, Zig 0.17 unpacks # nothing where it can be found: what it keeps is `p/<hash>.tar.gz` in # the global cache, the package filtered by its manifest's `.paths` under # a single directory named by its hash. Unpacking that gives the # directory `zig build --system` wants. unpack() { local work="$TMPDIR/work/$1" mkdir -p "$work"
local hash if ! hash="$(cd "$work" && zig fetch "$2" 2>"$work/log")"; then cat "$work/log" >&2 return 1 fi if [ "$hash" != "$1" ]; then echo "$2 is $hash to Zig, not $1" >&2 return 1 fi tar -xzf "$ZIG_GLOBAL_CACHE_DIR/p/$1.tar.gz" -C "$out" rm -f "$ZIG_GLOBAL_CACHE_DIR/p/$1.tar.gz" rm -rf "$work" } export -f unpack
# Several at a time: `zig fetch` spends most of a package on one core. # `-r` because otherwise xargs runs `unpack` once, with no arguments, when # there are no packages at all, and the build fails. cores="''${NIX_BUILD_CORES:-0}" if [ "$cores" -le 0 ]; then cores="$(nproc)"; fi xargs -r -P "$cores" -n 2 bash -c 'unpack "$@"' unpack <<'EOF' ${lib.concatStrings (lib.mapAttrsToList (hash: src: "${hash} ${src}\n") packages)} EOF ''