aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/flake.nix
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/flake.nix
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/flake.nix')
-rw-r--r--vendor/libghostty-vt/flake.nix163
1 files changed, 163 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/flake.nix b/vendor/libghostty-vt/flake.nix
new file mode 100644
index 00000000..59ced2de
--- /dev/null
+++ b/vendor/libghostty-vt/flake.nix
@@ -0,0 +1,163 @@
+{
+ description = "👻";
+
+ inputs = {
+ # We want to stay as up to date as possible but need to be careful that the
+ # glibc versions used by our dependencies from Nix are compatible with the
+ # system glibc that the user is building for.
+ #
+ # We are currently on nixpkgs-unstable to get Zig 0.15 for our package.nix and
+ # Gnome 49/Gtk 4.20.
+ #
+ nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
+
+ # Used for shell.nix
+ flake-compat = {
+ url = "github:edolstra/flake-compat";
+ flake = false;
+ };
+
+ systems = {
+ url = "github:nix-systems/default";
+ flake = false;
+ };
+
+ zig = {
+ url = "github:mitchellh/zig-overlay";
+ inputs = {
+ nixpkgs.follows = "nixpkgs";
+ flake-compat.follows = "flake-compat";
+ systems.follows = "systems";
+ };
+ };
+
+ zon2nix = {
+ url = "github:jcollie/zon2nix?rev=c28e93f3ba133d4c1b1d65224e2eebede61fd071";
+ inputs = {
+ nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ home-manager = {
+ url = "github:nix-community/home-manager";
+ inputs = {
+ nixpkgs.follows = "nixpkgs";
+ };
+ };
+ };
+
+ outputs = {
+ self,
+ nixpkgs,
+ zig,
+ zon2nix,
+ home-manager,
+ ...
+ }: let
+ inherit (nixpkgs) lib legacyPackages;
+
+ # Our supported systems are the same supported systems as the Zig binaries.
+ platforms = lib.attrNames zig.packages;
+
+ # It's not always possible to build Ghostty with Nix for each system,
+ # one such example being macOS due to missing Swift 6 and xcodebuild
+ # support in the Nix ecosystem. Therefore for things like package outputs
+ # we need to limit the attributes we expose.
+ buildablePlatforms = lib.filter (p: !(lib.systems.elaborate p).isDarwin) platforms;
+
+ forAllPlatforms = f: lib.genAttrs platforms (s: f legacyPackages.${s});
+ forBuildablePlatforms = f: lib.genAttrs buildablePlatforms (s: f legacyPackages.${s});
+
+ mkPkgArgs = optimize: {
+ inherit optimize;
+ revision = self.shortRev or self.dirtyShortRev or "dirty";
+ };
+ in {
+ devShells = forAllPlatforms (pkgs: {
+ default = pkgs.callPackage ./nix/devShell.nix {
+ zig = zig.packages.${pkgs.stdenv.hostPlatform.system}."0.15.2";
+ wraptest = pkgs.callPackage ./nix/pkgs/wraptest.nix {};
+ zon2nix = zon2nix;
+
+ python3 = pkgs.python3.override {
+ self = pkgs.python3;
+ packageOverrides = pyfinal: pyprev: {
+ blessed = pyfinal.callPackage ./nix/pkgs/blessed.nix {};
+ ucs-detect = pyfinal.callPackage ./nix/pkgs/ucs-detect.nix {};
+ wcwidth = pyfinal.callPackage ./nix/pkgs/wcwidth.nix {};
+ };
+ };
+ };
+ });
+
+ packages =
+ forAllPlatforms (pkgs: {
+ # Deps are needed for environmental setup on macOS
+ deps = pkgs.callPackage ./build.zig.zon.nix {};
+ })
+ // forBuildablePlatforms (pkgs: rec {
+ ghostty-debug = pkgs.callPackage ./nix/package.nix (mkPkgArgs "Debug");
+ ghostty-releasesafe = pkgs.callPackage ./nix/package.nix (mkPkgArgs "ReleaseSafe");
+ ghostty-releasefast = pkgs.callPackage ./nix/package.nix (mkPkgArgs "ReleaseFast");
+
+ ghostty = ghostty-releasefast;
+ default = ghostty;
+
+ libghostty-vt-debug = pkgs.callPackage ./nix/libghostty-vt.nix (mkPkgArgs "Debug");
+ libghostty-vt-releasesafe = pkgs.callPackage ./nix/libghostty-vt.nix (mkPkgArgs "ReleaseSafe");
+ libghostty-vt-releasefast = pkgs.callPackage ./nix/libghostty-vt.nix (mkPkgArgs "ReleaseFast");
+
+ libghostty-vt = libghostty-vt-releasefast;
+ });
+
+ formatter = forAllPlatforms (pkgs: pkgs.alejandra);
+
+ apps = forBuildablePlatforms (pkgs: let
+ runVM = module: let
+ vm = import ./nix/vm/create.nix {
+ inherit (pkgs.stdenv.hostPlatform) system;
+ inherit module nixpkgs;
+ overlay = self.overlays.debug;
+ };
+ program = pkgs.writeShellScript "run-ghostty-vm" ''
+ SHARED_DIR=$(pwd)
+ export SHARED_DIR
+
+ ${pkgs.lib.getExe vm.config.system.build.vm} "$@"
+ '';
+ in {
+ type = "app";
+ program = "${program}";
+ meta.description = "start a vm from ${toString module}";
+ };
+ in {
+ wayland-cinnamon = runVM ./nix/vm/wayland-cinnamon.nix;
+ wayland-gnome = runVM ./nix/vm/wayland-gnome.nix;
+ wayland-plasma6 = runVM ./nix/vm/wayland-plasma6.nix;
+ x11-cinnamon = runVM ./nix/vm/x11-cinnamon.nix;
+ x11-plasma6 = runVM ./nix/vm/x11-plasma6.nix;
+ x11-xfce = runVM ./nix/vm/x11-xfce.nix;
+ });
+
+ checks = forAllPlatforms (pkgs:
+ import ./nix/tests.nix {
+ inherit home-manager nixpkgs self;
+ inherit (pkgs.stdenv.hostPlatform) system;
+ });
+
+ overlays = {
+ default = self.overlays.releasefast;
+ releasefast = final: prev: {
+ ghostty = final.callPackage ./nix/package.nix (mkPkgArgs "ReleaseFast");
+ };
+ debug = final: prev: {
+ ghostty = final.callPackage ./nix/package.nix (mkPkgArgs "Debug");
+ };
+ };
+ };
+
+ nixConfig = {
+ extra-substituters = ["https://ghostty.cachix.org"];
+ extra-trusted-public-keys = ["ghostty.cachix.org-1:QB389yTa6gTyneehvqG58y0WnHjQOqgnA+wBnpWWxns="];
+ };
+}